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

# API reference

> Seven platforms. Same auth. Per-platform response shapes.

Every endpoint is a `POST` to `https://api.transcriptmagic.com` with `{"url": "..."}` in the body. Auth, path style, and the body field are identical across platforms — but the **response shape differs by platform**, because each upstream source emits different metadata. The per-endpoint pages below document the exact shape you can expect from each.

## Base URL

```
https://api.transcriptmagic.com
```

## Endpoints

| Platform       | Path                             | Guide                                             |
| -------------- | -------------------------------- | ------------------------------------------------- |
| YouTube        | `POST /api/youtube/transcript`   | [YouTube →](/api-reference/youtube)               |
| TikTok         | `POST /api/tiktok/transcript`    | [TikTok →](/api-reference/tiktok)                 |
| Instagram      | `POST /api/instagram/transcript` | [Instagram →](/api-reference/instagram)           |
| Facebook       | `POST /api/facebook/transcript`  | [Facebook →](/api-reference/facebook)             |
| LinkedIn       | `POST /api/linkedin/transcript`  | [LinkedIn →](/api-reference/linkedin)             |
| Rumble         | `POST /api/rumble/transcript`    | [Rumble →](/api-reference/rumble)                 |
| X              | `POST /api/twitter/transcript`   | [X →](/api-reference/twitter)                     |
| Spotify        | `POST /api/podcast/transcript`   | [Spotify →](/api-reference/spotify)               |
| Apple Podcasts | `POST /api/podcast/transcript`   | [Apple Podcasts →](/api-reference/apple-podcasts) |

<Note>
  The social-video endpoints above are synchronous — one request returns the transcript. **Podcast** transcription (Spotify, Apple Podcasts) is asynchronous: submit an episode, then poll `GET /api/podcast/jobs/{jobId}`. It's a Plus/Pro feature billed at 10 credits per audio-hour. See the [Spotify](/api-reference/spotify) and [Apple Podcasts](/api-reference/apple-podcasts) guides.
</Note>

## Request

All endpoints accept the same body and headers.

**Headers**

```http theme={null}
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
```

**Body**

```json theme={null}
{
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}
```

## Response

All endpoints return `200 OK` on success and always include a `credits` field with your remaining balance. Beyond that, the shape varies:

| Platform  | `transcript` type                                       | Per-line timing                           | Video URLs included                  |
| --------- | ------------------------------------------------------- | ----------------------------------------- | ------------------------------------ |
| YouTube   | array of segment objects                                | yes (`startMs`, `endMs`, `startTimeText`) | no                                   |
| TikTok    | string (newline-joined)                                 | no                                        | yes (when available, in `videoUrls`) |
| Instagram | array of `{text}` objects (under `transcripts`, plural) | no                                        | no                                   |
| Facebook  | string (newline-joined)                                 | no                                        | yes (when available, in `videoUrls`) |
| LinkedIn  | string (newline-joined)                                 | no                                        | no                                   |
| Rumble    | string (newline-joined)                                 | no                                        | no                                   |
| X         | string (newline-joined)                                 | no                                        | no                                   |

See the [response schema](/api-reference/response-schema) page for the full per-platform field reference, or jump into a per-endpoint page for a real example payload.

## Errors

All endpoints share the same error vocabulary — see [errors](/concepts/errors) for the full table. The most common ones:

* `400` — bad URL in the body, missing `url`, or invalid JSON
* `401` — missing or invalid API key
* `403` — out of credits (`error: "no_credits"`)
* `404` — upstream says the video is missing, private, or has no captions
* `429` — over the rate limit
* `502` — upstream platform HTTP error (retry with backoff)
