Twitch Transcript API —
clips to JSON in one call.
POST a Twitch clip URL and get the spoken text back as JSON. Clips without captions are transcribed with AI automatically, and the response tells you which source was used. Built for clip pipelines, highlight channels, and esports tooling. Example: https://clips.twitch.tv/CharmingRudeStorkPhilosoraptor-LfhoaF0fD2wwl-hr
/api/twitch/transcript What the API handles.
Every Twitch URL format below resolves to the same JSON response shape — no branching logic needed in your client code.
clips.twitch.tv/{slug} — the format Twitch’s share button usually copies.twitch.tv/{channel}/clip/{slug}, e.g. twitch.tv/northernlion/clip/…. Same response either way.transcript_source is "native" or "ai".twitch.tv/videos/…), channel pages, and live streams are rejected with a 400 before any credit is used.Full docs at docs.transcriptmagic.com.
Per-platform response schemas, language-specific code samples (cURL, Python, JavaScript, Go, PHP), error catalog, and rate-limit headers all live on the docs subdomain. Built for both humans and agents.
One credit per call.
Every Twitch clip that returns a transcript uses 1 credit — captions or AI, same price. Clips with no detectable speech are free. View the full plan breakdown and annual pricing on the pricing page.
What devs build with it.
Real pipelines shipping real revenue. If you're doing something new, email us — we love hearing what teams are building.
Questions devs ask.
The short answers. For anything else, email [email protected] — same-day reply.
Which Twitch URLs does the API accept?
Twitch clip URLs in either format: clips.twitch.tv/{slug} or twitch.tv/{channel}/clip/{slug}. VODs, past broadcasts, channel pages, and live streams are not supported and return a 400.
How do I authenticate?
Send your API key as a Bearer token: Authorization: Bearer sk_live_…, with a JSON body of {"url": "…"}. It’s the same key and the same auth as every other TranscriptMagic endpoint — create one on the API keys page.
What does the response look like?
A flat JSON object: success, id, url, transcript (plain text), transcript_source ("native" or "ai"), and credits (your remaining balance). There are no per-line timestamps, title, or thumbnail fields.
What if the clip has no captions?
That’s the common case, and it’s handled for you: the clip’s audio is transcribed with AI and the response comes back with transcript_source: "ai". No second call and no extra parameter needed.
How is each call billed?
1 credit per clip that returns a transcript, whether it came from captions or AI. Cache hits, clips with no detectable speech, and error responses are free.
Can I transcribe a full VOD or a live stream?
Not with this endpoint — it’s clips only. If you need a moment from a past broadcast, create a clip of it on Twitch and send the clip URL.
Other platforms & references.
Ship your Twitch clip pipeline — today.
Free credits included. No credit card required. Same API key and auth across every platform endpoint.