---
title: "Media · Transcription · Start a video/audio transcription job (step 1 of 3)"
method: POST
path: "/api/v1/transcription/transcribe"
tags: ["transcription"]
---

# Media · Transcription · Start a video/audio transcription job (step 1 of 3)

`POST /api/v1/transcription/transcribe`

## Request

- Base URL: `https://api.simplified.com`
- URL: `https://api.simplified.com/api/v1/transcription/transcribe`
- Auth: API key in header `Authorization`

Step 1 — submit a media URL for speech-to-text transcription.

**The response is only `{id}`.** It does not contain the transcript
and it does not contain any status flag. The STT pipeline runs
asynchronously and updates the row later via provider webhooks.

Next steps:
- Step 2: poll `getTranscription` with the returned `id` until
  `job_status="DONE"` (or `"FAILED"`).
- Step 3: optionally call `downloadTranscriptionFile` to get VTT/SRT.

## Request body

- object
  - `video_url` string, uri, required: URL of the source video or audio file.
  - `language_code` string: BCP-47 language code of the source audio. Defaults to "en-US".

## Response `200`

Transcription completed (the apikit middleware blocks until
terminal). Response is the full `TranscriptionResponse` when
`job_status="DONE"`, or an `{error, id, status, message}` envelope
when the job fails or times out.

- TranscriptionResponse
  - `id` string: Transcription UUID. Use this with getTranscription and downloadTranscriptionFile.
  - `title` string
  - `creator` integer: Creator user ID.
  - `video_url` string: Source media URL submitted for transcription.
  - `transcribed_video_url` string, nullable: URL of the captioned/burned-in video, if produced.
  - `transcription_url` string, nullable: URL of the raw transcript artifact in storage.
  - `payload` object: Transcription payload. When job_status=COMPLETED, contains `language_code` and `phrases` (each with `speaker`, `text`, and `words[{text, start, end, confidence}]` in milliseconds).
  - `content` object: Source metadata (e.g. `{source, source_id}`).
  - `job_status` 'CREATED' | 'PENDING' | 'PROCESSING' | 'DONE' | 'FAILED' | 'RENDERING' | 'UPDATED': Lifecycle state of the transcription job. Terminal: `DONE` (success) and `FAILED`. All other values are non-terminal — keep polling.
  - `status` string: Project status (PUBLIC, PRIVATE, ARCHIVED).
  - `project_type` string: Always "transcription" for this resource.
  - `created` string, date-time
  - `modified` string, date-time
  - `translation_language` string, nullable
  - `provider` 'GGL' | 'AWS' | 'MS' | 'OAI' | 'AAI': STT engine used for the job.

---

[API](https://skmtc.dev/simplified/apis/audio.md) - [All operations](https://skmtc.dev/simplified/apis/audio/llms.txt) - [OpenAPI document](https://skmtc.dev/simplified/apis/audio/revisions/55da4333efde?raw)
