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

# Quickstart

> Your first transcript in one request.

## 1. Get an API key

Sign in and create a key on the [API keys](https://app.bestvideotranscriptapi.com/dashboard/api-keys) page. Keys start with `sdt_`. You only see the full key once, so copy it now.

![Creating an API key on the API keys page](https://mintcdn.com/tatsat-bodhaa-opc-private-limited/YVscscAdRf-4dZpR/images/api-key.gif?s=84c66cded48c7723eb9fe782123525aa)

Creating an API key

The Free plan includes 1 hour of AI transcription and 100 caption transcripts a month.

## 2. Request a transcript

```bash curl theme={null}
curl "https://app.bestvideotranscriptapi.com/v1/transcript?url=https://www.youtube.com/watch?v=jNQXAC9IVRw" \
  -H "x-api-key: $VIDEO_TRANSCRIPT_API_KEY"
```

```javascript JavaScript theme={null}
const params = new URLSearchParams({ url: "https://www.youtube.com/watch?v=jNQXAC9IVRw" })
const res = await fetch(`https://app.bestvideotranscriptapi.com/v1/transcript?${params}`, {
   headers: { "x-api-key": process.env.VIDEO_TRANSCRIPT_API_KEY },
})
const body = await res.json()
```

```python Python theme={null}
import os, requests

res = requests.get(
    "https://app.bestvideotranscriptapi.com/v1/transcript",
    params={"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw"},
    headers={"x-api-key": os.environ["VIDEO_TRANSCRIPT_API_KEY"]},
)
body = res.json()
```

## 3. Read the response

A video with captions returns `200` right away. Shortened:

```json theme={null}
{
   "content": [
      {
         "text": "All right, so here we are in front of the elephants",
         "offset": 1200,
         "duration": 2160,
         "lang": "en"
      },
      {
         "text": "the cool thing about these guys is that they have really...",
         "offset": 5318,
         "duration": 2610,
         "lang": "en"
      }
   ],
   "lang": "en",
   "availableLangs": ["en"],
   "platform": "youtube"
}
```

| Field | Meaning |
| - | - |
| `content` | Timed segments. Add `text=true` to get one string instead. |
| `offset` | Segment start, in milliseconds. |
| `duration` | Segment length, in milliseconds. |
| `lang` | The transcript's language. |
| `availableLangs` | Caption languages the video has. |
| `platform` | `youtube`, `instagram`, `facebook`, `x`, `linkedin` or `file`. |

> [!NOTE]
>
> AI transcription of a long video can take more than 25 seconds. Then you get `202` and a `jobId`
> to poll. See [Jobs and polling](https://docs.bestvideotranscriptapi.com/concepts/jobs.md).

## Next

> [card] [Supported links](https://docs.bestvideotranscriptapi.com/concepts/supported-links.md)
>
> Every link shape that works.

> [card] [Captions or AI](https://docs.bestvideotranscriptapi.com/concepts/modes.md)
>
> Choose how the transcript is made.

> [card] [MCP server](https://docs.bestvideotranscriptapi.com/mcp-server.md)
>
> Give your agent the same API.


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