---
title: "Create Transcript"
method: POST
path: "/interactions/{id}/transcripts/"
tags: ["Transcripts"]
---

# Create Transcript

`POST /interactions/{id}/transcripts/`

Create a transcript from an audio file uploaded to the interaction via `/recordings` endpoint.<br/><Note>Each interaction may have more than one audio file and transcript associated with it. Audio files up to 120 minutes in total audio duration and  150 MB in size may be used.<br/><br/>By default, requests will process synchronously for 25 seconds before timeout, upon which processing will continue asynchronously. Set the `async` parameter to true to receive the location header immediately and process the request asynchronously. Read more [here](https://docs.corti.ai/stt/transcripts).</Note>

## Path parameters

- `id` string, uuid, required

## Headers

- `Tenant-Name` string, required — Identifies a distinct entity within Corti's multi-tenant system. Ensures correct routing and authentication of the request.

## Request body

- TranscriptsCreateRequest
  - `recordingId` string, uuid, required
  - `primaryLanguage` string, required — The primary spoken language of the recording. Check https://docs.corti.ai/stt/languages for more.
  - `spokenPunctuation` boolean — When true, converts spoken punctuation such as 'period' or 'slash' into symbols (e.g., '.', '/'). When enabled, automatic punctuation is turned off. Takes precedence over `automaticPunctuation` when both are enabled.
  - `automaticPunctuation` boolean — When true, automatically punctuates and capitalizes the transcript. Defaults to true. Overridden by `spokenPunctuation` when both are enabled.
  - `isDictation` boolean — **Deprecated** — replaced by `spokenPunctuation` and `automaticPunctuation`. Ignored when either of those fields is provided. When `true` and neither new field is provided, it is treated as `spokenPunctuation: true` (automatic punctuation off). No removal date is currently planned.
  - `isMultichannel` boolean — If true, each audio channel is transcribed separately.
  - `diarize` boolean — If true, separates speakers within an audio channel returning incrementing ids for transcript segments.
  - `participants` TranscriptsParticipant[] — An array of participants, each specifying a role and an assigned audio channel in the recording. Leave empty when shouldDiarize: true
    - `channel` integer, required — The audio channel to associate with a participant role.
    - `role` 'doctor' | 'patient' | 'multiple', required
  - `async` boolean — If true, the request will return immediately with a 202 status and the transcript will be processed asynchronously. Poll [Get Transcript Status](/api-reference/transcripts/get-transcript-status) to check transcript processing status - `processing`, `completed`, `failed`.
  - `replacements` object[] — Define replacements to have terms (single words or multi-word phrases) replaced in final text output with your preferred style. For example, replace "BID" with "twice daily". Configuration is case insensitive and limited to 1,000 replacements per stream.
    - `find` string, required — The term to be replaced, such as "BID".
    - `replace` string, required — The preferred replacement for the term, such as "twice daily".
  - `keyterms` object — Define words, terms, and phrases to be recognized by Corti speech-to-text. Especially useful for proper nouns (e.g., surnames), but also supportive of words not being recognized consistently.
    - `terms` object[] — Ordered list of words to be recognized. Configuration is case sensitive and limited to 1,000 key terms per stream.
      - `term` string, required — The word to be recognized, defined in its expected written form. A defined `term` is limited to a length of 50 characters.

## Response `201`

Returns the generated transcript, including participant roles and timestamps for each utterance.

- TranscriptsResponse
  - `id` string, uuid, required
  - `metadata` TranscriptsMetadata, required
    - `participantsRoles` TranscriptsParticipant[], nullable
      - `channel` integer, required — The audio channel to associate with a participant role.
      - `role` 'doctor' | 'patient' | 'multiple', required
  - `transcripts` CommonTranscriptResponse[], nullable, required — An array of transcripts.
    - `channel` integer, required — The channel associated with this phrase/utterance.
    - `participant` integer, required — The identifier of the participant.
    - `speakerId` integer, required — Id to tag an identified speaker. Auto-increments.
    - `text` string, required — The spoken phrase or utterance extracted from the audio.
    - `start` integer, required — Start time in milliseconds for phrase/utterance.
    - `end` integer, required — End time in milliseconds for phrase/utterance.
  - `usageInfo` CommonUsageInfo, required — Credits consumed for this request.
    - `creditsConsumed` number, required
  - `recordingId` string, uuid, required
  - `status` 'completed' | 'processing' | 'failed', required — Possible values for transcript processing status.

## Other responses

- `400` — RFC9457
- `401` — RFC9457
- `403` — RFC9457
- `500` — RFC9457
- `504` — RFC9457

---

[API](https://skmtc.net/corti/apis/admin-api.md) · [All operations](https://skmtc.net/corti/apis/admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/corti/admin-api/revisions/5d1895a1b3fc/schema)
