One URL in. Clean JSON out.
Read this part before you write any code against it: this endpoint does not currently work on X. It summarises a video by reading its caption track, and X posts almost never carry one, so calls return a 404 saying no transcript is available. The route is live, priced at 9 credits, and documented here so you know exactly what it would return the day captions become reachable — but today it will not give you a summary.
Availability: Caption-dependent: summaries are built from the video's transcript, so they're available only when the video has captions on X — most don't. When no captions exist the API returns a 404 no-transcript error, and failed calls are never charged.
The difference
On the left, what a headless browser hands you. On the right, what the endpoint hands you.
<article data-testid="tweet" class="css-175oi2r r-1adg3ll r-1ny4l3l"><div class="css-175oi2r r-18u37iz"><div dir="ltr" class="css-901oao r-1nao33i">Shipping notes: response times are down 40% after this week's cache work.</div></div><div role="group" aria-label="90211 views, 1211 likes, 204 reposts" class="css-175oi2r r-1kbdv8c"><div data-testid="like"><span class="css-1jxf684">1,211</span></div><div data-testid="retweet"><span>204</span></div></div><time datetime="2026-07-06T08:15:00.000Z">8h</time><script>window.__INITIAL_STATE__={"entities":{"tweets":{"entities":{"186112... {"data": {"platform": "twitter","entity_id": "1861122334455667788","language": "en","summary": "A quick tutorial covering three commonly missed configuration steps, with a before/after comparison and a call to check the pinned comment for the full guide."},"request_id": "req_01JZX4M8Q2TE9W"}
The payload
When it succeeds, the response is three fields and nothing more: a prose summary of roughly 150 words, an array of three to five short key points, and the language code of the source transcript. No metrics, no author, no post text. It answers one question, which is what the video is about.
The pipeline is short. The endpoint asks for a transcript of the video, and if it gets one it makes a single small-model pass over that text to produce the summary and the bullets. If it does not get a transcript, there is nothing to summarise and the call fails with a 404 rather than guessing from the post's written caption or from replies.
Where the transcript comes from is the whole problem on X. Transcription here is subtitles-only — the service reads a caption track the platform already publishes, and there is no speech-to-text step running. TikTok generally carries such a track. X generally does not. That is why the X flavour of this endpoint 404s in practice while the TikTok Summary API works.
Language reported for the source transcript. Null whenever the caption track carried no language tag.
Pricing
A successful summary is 9 credits — about 4.5¢ on the monthly plan, or 111 videos for $5 — but on X almost every call 404s for lack of captions, and failed calls are never charged.
Estimate only, on a full-year basis. 9 credits per returned video. Monthly: $5 per 1,000 credits with $4/1,000 top-ups. Annual: $54 per 12,000 credits with $3/1,000 top-ups. We show whichever plan is cheaper for your annual volume, divided by 12. Failed calls are never charged; cache hits cost the same as fresh calls.
Entry price, side by side
Credits are not equivalent units across vendors — each meters differently. Price your own workload on both before deciding on entry price alone. At high volume, several of these are cheaper per credit than we are.
Engineering notes
We document exactly how every endpoint behaves — nulls, caching, billing — so what you ship on day one is still running in month six. No surprises, no support tickets.
The summary requires a transcript. The transcript requires a caption track published by the platform. X does not generally publish one, so the usual outcome of a call to /v1/twitter/summary is HTTP 404 with a message saying no transcript is available for this content.
We would rather you read that here than discover it after wiring up a job. The endpoint stays in the registry because the plumbing is real and the day caption coverage changes it starts working without any change on your side. Until then, treat it as unavailable.
Calls that error are not charged. A 404 on an X video costs you a round trip and zero credits, which is the only reason it is defensible to leave the route enabled at all.
If you see credits move on a failed call, that is a bug and we want the request id. Report it rather than working around it.
The service does not download X video and run audio through a recognition model. It reads captions the platform already carries. That is a deliberate limit on cost and on what we are willing to claim, not an oversight, and it is why the coverage story differs so sharply between platforms.
So a video with clear audio and no caption track fails exactly like a silent one. Audio quality is irrelevant to the outcome here; the presence or absence of a published track is the only thing that matters.
On the rare X post that does carry a track, what you get back is a language model's compression of that text. It is fine for deciding whether something is worth watching. It is not a quotation, and numbers, prices and product names are the fields most likely to drift.
Very long transcripts are truncated before the model sees them, so a long broadcast replay would be summarised from its opening stretch rather than end to end.
Successful summaries are stored in the immutable class with no expiry, because the words in a published video do not change. A repeat call for the same post returns the stored copy in milliseconds and costs the same 9 credits.
Failures are not cached. Each attempt on a caption-less post does the same work and fails the same way, so retry loops buy you nothing except traffic.
Questions
Not right now. It depends on a caption track published by the platform, and X posts almost never carry one, so calls to /v1/twitter/summary return a 404 saying no transcript is available. The route exists and the response shape is documented, but you should plan as though the capability is unavailable on X. Failed calls are not charged.
Because summarisation runs off captions, not audio. There is no speech-to-text step in the current configuration, so the endpoint can only summarise videos where the platform itself has published a transcript. TikTok does that for most spoken content. X does not, which is the entire difference. Same code, same price, very different hit rate.
9 credits per video when it succeeds. Credits are $0.005 each on monthly billing and $0.0045 on annual, so a successful call is about four and a half cents. Calls that fail, which on X is most of them, are not billed at all. Cached repeats of a successful summary cost the same 9 credits as the first call.
Not from this endpoint. It summarises spoken video content only. If you want the written post, the X Post Stats API returns the tweet text along with likes, reposts, replies and views, and you can run that text through whatever summariser you already use. That is the practical route today for anyone doing text analysis on X.
Three: summary, a paragraph of roughly 150 words; key_points, an array of three to five short strings; and language, the language code of the source transcript or null when none was reported. There are no engagement metrics, no author block and no timestamps. If you need those, call the stats endpoint alongside this one.
Only if one of two things changes: X starts publishing caption tracks more widely, or we enable a speech-to-text leg. The pipeline already has the shape for both, so no client change would be needed on your side. We are not going to promise a date, and we are not going to quietly start charging for a call that cannot succeed in the meantime.
No. A 404 here means the platform published no caption track for that video, which is a stable fact about the post rather than a transient error. Retrying produces the same result and burns your rate budget. Treat 404 as a terminal outcome for that URL and move on to the next item in your queue.
Next
100 trial credits on signup — no card, key on screen immediately.