> ## Documentation Index
> Fetch the complete documentation index at: https://developers.fastdrop.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Transcribe Video

> Transcribe and translate video audio with optional subtitle file generation

Speech transcription with automatic language detection, English translation, and optional SRT/TXT file generation. Supports 99 languages with varying accuracy levels.

**Cost:** 8 credits

<Note>
  For the full list of supported languages and accuracy expectations, see [Supported Languages](/guides/supported-languages).
  For a deeper dive into how transcription works and best practices, see the [Transcription Guide](/guides/transcription).
</Note>

## Request body

<ParamField body="video_url" type="string" required>
  Public HTTP/HTTPS URL of the video.
</ParamField>

<ParamField body="language" type="string">
  Optional ISO 639-1 language code hint (e.g. `en`, `es`, `ja`, `ar`, `fr`). Auto-detected if omitted. Providing a hint improves accuracy for lower-resource languages.
</ParamField>

<ParamField body="translate" type="boolean" default={true}>
  Translate non-English transcriptions to English. Set to `false` to get source-language transcription only.
</ParamField>

<ParamField body="output_formats" type="string[]">
  Generate subtitle files and return presigned download URLs. Options: `"srt"`, `"txt"`. Omit for JSON-only response.
</ParamField>

<ParamField body="webhook_url" type="string">
  Optional HTTPS URL to receive a POST when processing completes.
</ParamField>

### Response (202 Accepted)

Returns a job submission with `job_id`. Get the result from [Get Job Status](/api-reference/get-job-status) with `?wait=N`, or subscribe to `job.completed` via a [webhook](/guides/webhooks).

<RequestExample>
  ```bash cURL (JSON only) theme={null}
  curl -X POST https://api.fastdrop.io/api/v1/transcribe \
    -H "Content-Type: application/json" \
    -H "X-API-Key: fd_live_your_key_here" \
    -d '{
      "video_url": "https://example.com/interview.mp4"
    }'
  ```

  ```bash cURL (with subtitle files) theme={null}
  curl -X POST https://api.fastdrop.io/api/v1/transcribe \
    -H "Content-Type: application/json" \
    -H "X-API-Key: fd_live_your_key_here" \
    -d '{
      "video_url": "https://example.com/interview.mp4",
      "output_formats": ["srt", "txt"]
    }'
  ```

  ```bash cURL (with language hint, no translation) theme={null}
  curl -X POST https://api.fastdrop.io/api/v1/transcribe \
    -H "Content-Type: application/json" \
    -H "X-API-Key: fd_live_your_key_here" \
    -d '{
      "video_url": "https://example.com/interview.mp4",
      "language": "ar",
      "translate": false
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 202 theme={null}
  {
    "job_id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
    "status": "queued",
    "credits_charged": 5,
    "estimated_seconds": 60,
    "poll_url": "/api/v1/classify/a1b2c3d4-5678-90ab-cdef-1234567890ab",
    "created_at": "2026-03-05T12:00:00Z"
  }
  ```
</ResponseExample>

## Result format

When the job completes, the `results.transcription` field contains the full transcription, translation, and optional file URLs.

### English video (no translation needed)

```json theme={null}
{
  "transcription": {
    "language": "en",
    "language_name": "English",
    "text": "Welcome to the show. Today we're going to talk about video editing.",
    "segments": [
      { "start": 0.0, "end": 2.8, "text": "Welcome to the show." },
      { "start": 3.1, "end": 8.5, "text": "Today we're going to talk about video editing." }
    ],
    "words": [
      { "start": 0.0, "end": 0.5, "word": "Welcome" },
      { "start": 0.5, "end": 0.7, "word": "to" },
      { "start": 0.7, "end": 0.9, "word": "the" },
      { "start": 0.9, "end": 1.3, "word": "show." }
    ]
  }
}
```

### Non-English video (with translation)

```json theme={null}
{
  "transcription": {
    "language": "ar",
    "language_name": "Arabic",
    "text": "مرحبا بكم في العرض. اليوم سنتحدث عن تحرير الفيديو.",
    "segments": [
      { "start": 0.0, "end": 2.8, "text": "مرحبا بكم في العرض." },
      { "start": 3.1, "end": 8.5, "text": "اليوم سنتحدث عن تحرير الفيديو." }
    ],
    "words": [
      { "start": 0.0, "end": 0.5, "word": "مرحبا" },
      { "start": 0.5, "end": 0.9, "word": "بكم" }
    ],
    "translation": {
      "language": "en",
      "language_name": "English",
      "text": "Welcome to the show. Today we'll talk about video editing.",
      "segments": [
        { "start": 0.0, "end": 2.8, "text": "Welcome to the show." },
        { "start": 3.1, "end": 8.5, "text": "Today we'll talk about video editing." }
      ]
    }
  }
}
```

### With subtitle files (`output_formats: ["srt", "txt"]`)

When you include `output_formats`, the result includes a `files` object with presigned download URLs:

```json theme={null}
{
  "transcription": {
    "language": "ar",
    "language_name": "Arabic",
    "text": "...",
    "segments": [...],
    "translation": {
      "language": "en",
      "text": "...",
      "segments": [...]
    },
    "files": {
      "source_srt": "https://storage.fastdrop.io/api-transcribe/.../source_ar.srt?...",
      "source_txt": "https://storage.fastdrop.io/api-transcribe/.../source_ar.txt?...",
      "english_srt": "https://storage.fastdrop.io/api-transcribe/.../english_en.srt?...",
      "english_txt": "https://storage.fastdrop.io/api-transcribe/.../english_en.txt?..."
    }
  }
}
```

<Note>
  File URLs are presigned and expire after 1 hour. Download or store them promptly.
  English files are only generated when translation is performed (non-English source).
</Note>

## Result fields

| Field | Type | Description |
| - | - | - |
| `language` | string | ISO 639-1 code of detected/specified language |
| `language_name` | string | Human-readable language name |
| `text` | string | Full transcript in source language |
| `segments` | array | Sentence-level segments with `start`, `end`, `text` |
| `words` | array | Word-level timestamps with `start`, `end`, `word` |
| `translation` | object | English translation (only for non-English, when `translate` is true) |
| `translation.text` | string | Full translated English text |
| `translation.segments` | array | Translated segments with preserved timestamps |
| `files` | object | Presigned download URLs (only when `output_formats` is specified) |
| `files.source_srt` | string | Source language SRT subtitle file |
| `files.source_txt` | string | Source language TXT transcript |
| `files.english_srt` | string | English SRT subtitle file |
| `files.english_txt` | string | English TXT transcript |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.