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 +10 credits per started minute of transcribed video, up to 60 minutes (allowLongTranscription) Max 601 credits Failed requests are free

About this endpoint

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. See the API docs for parameters and examples.

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.