---
title: "Upload a transcript draft"
method: POST
path: "/api/v1/portal/transcripts-upload/transcripts"
tags: ["Portal APIs", "portal-transcripts-upload"]
---

# Upload a transcript draft

`POST /api/v1/portal/transcripts-upload/transcripts`

Accept a .txt transcript upload from a portal user and create a Draft.

## Request body

- PortalTranscriptUploadRequest — Validated upload payload sent by the portal frontend. ``txt_b64`` carries the base64-encoded .txt file content. The backend decodes and validates it before forwarding to power-api. ``source_type`` is NOT accepted from the client — it is injected server- side from PortalUserContext.meta_data["source_type"].
  - `external_id` string, required — Partner's own reference ID
  - `title` string, required
  - `description` string, nullable
  - `interview_date` string, date, required
  - `duration_minutes` integer, required
  - `expert_anonymized` boolean, required
  - `entities` PortalEntityRef[], required
    - `id` string, required
    - `label` string, required
  - `region` string, nullable
  - `language` string
  - `transcript_type` string
  - `provider` string, required — Name of the company that produced the transcript (e.g. Tegus, Quartr)
  - `expert_id` string, nullable — Optional identifier for the interviewed expert. 5-10 alphanumeric characters, no symbols or spaces.
  - `txt_b64` string, required

## Response `201`

Successful Response

- PortalTranscriptResponse — Minimal response returned to the portal after a successful upload.
  - `transcript_id` string, uuid, required
  - `status` string, required
  - `title` string, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api.md) · [All operations](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/carbonarc/carbon-arc-client-admin-api/revisions/a8ca30023371/schema)
