X (Twitter) hub

X (Twitter) tweet transcript API

Turn a public video tweet permalink into a plain spoken-text string — or an explicit null when speech cannot be recovered.

GET /v1/twitter/tweets/transcript

1 credit per successful request.

About this endpoint

News and brand monitors often need what someone said in a video tweet, not only the status text and reply thread. X does not document a stable public transcript field across product tiers, so teams either skip video posts or bolt on a separate speech pipeline with its own auth and bill.

`GET /v1/twitter/tweets/transcript` takes a public tweet `url` (permalink such as `https://x.com/{user}/status/{id}`, or an identifier the docs accept). On a resolved lookup, `data.tweet` echoes the requested URL and `data.transcript` is a plain string when speech text is available. Branch on `data.lookupStatus` first (`found` / `not_found` / `lookup_failed`): `found` means the tweet resolved; `transcript` can still be null when speech is not detected or transcription is otherwise unavailable.

Videos that exceed the supported length return HTTP 400 `video_too_long_for_transcription` — that is not a 200 with a null string. There is no `useAiFallback` and no timed-segment object on this route (unlike YouTube or Rumble). Pricing is on the credit badge; bill from `meta.creditsCharged`. Use tweet detail or profile-tweets list routes when you need post metadata or a timeline, not spoken text.

X (Twitter) tweet transcript API FAQ

How do I get a Twitter / X video tweet transcript via API?

Call `GET /v1/twitter/tweets/transcript` with your Social Fetch API key in the `x-api-key` header and a public tweet `url` query param. Read `data.lookupStatus`, then `data.transcript`. Full parameters and examples are in the API docs linked from this page.

How much does the Twitter tweet transcript endpoint cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth.

What does the Twitter tweet transcript response look like?

When the lookup resolves, `data.tweet` includes the requested `url`, and `data.transcript` is a plain string or null. There are no WebVTT or timed segment fields on this route. Always branch on `data.lookupStatus` before treating the transcript as present.

What URL formats does the tweet transcript API accept?

Public tweet permalinks or identifiers accepted by the `url` query param (for example `https://x.com/{user}/status/{id}`). Pass one `url` per request. See the API docs for the exact input shape.

Does a found tweet transcript lookup always return text?

No. `data.transcript` may be null when speech is not detected or transcription is otherwise unavailable, even after `lookupStatus` is `found`. A completed successful request still charges the documented credit. Persist `meta.requestId` when you need to debug a miss.

What happens if a video tweet is too long to transcribe?

The API returns HTTP 400 with `video_too_long_for_transcription`. Treat that as a hard rejection, not a null transcript on 200. Persist `meta.requestId` / `error.requestId` if you need support.

Do I need an X developer account for tweet transcripts?

No. Social Fetch authenticates with your Social Fetch API key only. You do not create an X developer app or pass X credentials for this public transcript route.