Transcribe a TikTok, Instagram or YouTube Video API

Queues AI transcription for a post (spoken audio; slideshows use on-screen text extraction). Accepts a public post URL or an internal post id. Asynchronous: returns a job reference to poll with get_job_status; once complete the transcript is attached to get_post responses. Credits are charged on queueing and automatically refunded if the job fails.

Queue an AI transcription for any tracked post and get the spoken words back, or, for image slideshows, the on-screen text extracted frame by frame. Hand it a public post URL or an internal post id; it runs asynchronously and attaches the finished transcript to get_post. Built for content-research agents that need the actual words behind a viral hook, not just its view count. Each transcription costs 10 credits (1 credit = $0.01) and is refunded automatically if the job fails.

10 credits ($0.10) per callAsynchronous (poll job)

How to call it

POST /api/v1/transcriptions. Authenticate with your API key. Same call in three languages:

cURL

curl -X POST "https://viraloutliers.com/api/v1/transcriptions" \
  -H "Authorization: Bearer so_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"example","postId":"example"}'

Python (requests)

import requests

r = requests.post(
"https://viraloutliers.com/api/v1/transcriptions",
    headers={"Authorization": "Bearer so_live_YOUR_KEY"},
    json={"url":"example","postId":"example"},
)
print(r.json())

JavaScript (fetch)

const res = await fetch("https://viraloutliers.com/api/v1/transcriptions", {
  method: "POST",
  headers: { "Authorization": "Bearer so_live_YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({"url":"example","postId":"example"}),
});
const data = await res.json();
console.log(data);

Parameters

NameTypeDescription
urlstringPublic post URL (e.g. a TikTok/Reel/Short link). The easy path when you have a link.
postIdstringInternal post id (from search results). Provide this or url.

What it returns

The call itself returns a job reference immediately: transcription is asynchronous, not a blocking request. You poll that reference with get_job_status (free) until it reports completed, at which point the transcript is attached to the post and comes back on every subsequent get_post call at no extra cost.

For a normal video the transcript is the spoken audio. For a TikTok photo carousel or Instagram slideshow there is no speech, so the job extracts the on-screen text instead, the same words a viewer reads, so both formats end up queryable. A typical short is ready within a couple of minutes.

How it works

You submit either a url (the easy path when a user hands you a link) or a postId from search results. The service fetches the post's media if it is not already stored, runs it through an AI transcription model, and writes the result back onto the post record. Credits are charged when the job is queued and, critically, refunded automatically to your balance if the job ultimately fails: you are never billed for a transcript you did not receive.

The job runs on a deferred queue, so submitting many at once does not block; each returns its own reference to poll. Because the transcript is cached on the post, transcribing the same post again is unnecessary: get_post will already carry it, and remix_post reuses it rather than regenerating.

Common use cases

Hook mining is the headline use: transcribe the top 20 outliers in a niche, pull the first three seconds of each, and build a swipe file of proven opening lines. Script-recreation agents combine the transcript with the post's visual analysis to rewrite a winning video in a brand's own voice. Search and RAG pipelines transcribe a back catalogue so the actual words, not just captions, become searchable.

Because the transcript lives on the post, downstream skills get it for free: remix_post adapts from the full transcript, and reporting tools can quote the exact hook that drove an outlier.

vs. running your own speech-to-text pipeline

Doing this yourself means downloading the media (proxies, expiring CDN links, HEIC and animated-cover quirks), handling the slideshow case where there is no audio at all, running and paying for a transcription model, and storing the output somewhere joined to the post. Every one of those is a moving part that fails on its own schedule.

request_transcript folds all of it into one call at a flat credit price, with automatic refunds on failure and the result cached on a post record already carrying stats and outlier scores. Compared with a generic transcription API you would still have to feed media into, this one starts from a post id and handles the media fetch and the slideshow-vs-video distinction for you.

Pricing

10 credits ($0.10) per call in prepaid credits (1 credit = $0.01). For example, 10 calls per dollar. Subscriptions include monthly credits; top-up packs start at $15. Failed asynchronous jobs are refunded automatically, and calls stop at a zero balance, never a surprise bill. See the full pricing table.

Agent workflows

  • Hook mining: transcribe the top 20 outliers in a niche → extract the first-3-second hooks → hook swipe file.
  • Script recreation: transcript + visual analysis → rewrite for your own brand voice.

Frequently asked questions

How do I transcribe a TikTok, Reel or Short with an API?

POST the post id to the transcriptions endpoint (or call the request_transcript MCP tool). It costs 10 credits, runs asynchronously, and the finished transcript is returned by get_post, usually within a few minutes.

What happens if transcription fails?

The job is retried automatically; if it ultimately fails your credits are refunded to your balance without any action on your side.

Can I transcribe a TikTok or Instagram slideshow that has no audio?

Yes. When a post is an image carousel with no spoken audio, the job extracts the on-screen text from the slides instead of transcribing speech, so slideshows come back with usable text just like videos do. You call it the same way; the service picks the right method from the post type.