# Transcript schema (/docs/schema/transcript)



{/*
  AUTO-GENERATED. Do not hand-edit.
  Source: packages/social-api/src/docs/generate-schema-pages.ts
  Regenerate with: pnpm -F @repo/social-api generate:docs
  Field tables derive from the canonical Zod schemas (packages/social-api/src/schemas/canonical.ts);
  availability + equivalence derive from the registry fieldMaps.
  */}

Transcript schema [#transcript-schema]

Every SocialCrawl endpoint that returns a video or audio transcript gives you this exact shape, whatever the source platform. Write your parser once and the same code reads transcript data from every platform below. That is the unified schema: one contract instead of a dozen raw upstream formats.

Field reference [#field-reference]

| Field         | Type       | Nullable | Description                                                                                                                      |
| ------------- | ---------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `transcript`  | `string`   | Yes      | Full transcript text. Plain string for TikTok/Facebook/Twitter; see `transcripts` for Instagram and the segmented YouTube shape. |
| `transcripts` | `object[]` | Yes      | Instagram transcript entries. Each item has a `text` field with the full transcript for that track.                              |

Platform availability [#platform-availability]

8 platforms return the `Transcript` shape across 10 endpoints. This is a **passthrough** shape: the outer contract above is guaranteed on every platform, and each platform's own extra fields are preserved untouched rather than remapped, so there is no per-field availability matrix.

<div className="overflow-x-auto">
  | Platform  | Endpoints                                                              |
  | --------- | ---------------------------------------------------------------------- |
  | Facebook  | `/v1/facebook/adlibrary/ad/transcript`, `/v1/facebook/post/transcript` |
  | Instagram | `/v1/instagram/media/transcript`                                       |
  | LinkedIn  | `/v1/linkedin/post/transcript`                                         |
  | Reddit    | `/v1/reddit/post/transcript`                                           |
  | Rumble    | `/v1/rumble/video/transcript`                                          |
  | TikTok    | `/v1/tiktok/post/transcript`                                           |
  | Twitter/X | `/v1/twitter/tweet/transcript`                                         |
  | YouTube   | `/v1/youtube/transcripts`, `/v1/youtube/video/transcript`              |
</div>

Machine-readable schema [#machine-readable-schema]

Validate responses programmatically against the JSON Schema (2020-12):

[`/schemas/transcript.json`](/schemas/transcript.json)

Point a validator (Ajv, `jsonschema`, or your framework's) at that URL, or hand it to an agent so it can check the shape without a live call.

Returned by [#returned-by]

Endpoints with the `Transcript` archetype return this shape:

[Facebook](/platforms/facebook) · [Instagram](/platforms/instagram) · [LinkedIn](/platforms/linkedin) · [Reddit](/platforms/reddit) · [Rumble](/platforms/rumble) · [TikTok](/platforms/tiktok) · [Twitter/X](/platforms/twitter) · [YouTube](/platforms/youtube)

See how the same fields map to each platform's raw upstream names in the [cross-platform field equivalence table](/docs/schema/field-equivalence).
