Documentation Index
Fetch the complete documentation index at: https://docs.transcribetube.com/llms.txt
Use this file to discover all available pages before exploring further.
POST /api/transcribeVideo returns immediately with a projectId — the actual transcription happens asynchronously in the background and typically takes between a few seconds and several minutes depending on video length and queue load.
There are two ways to find out when a transcription is ready: webhook (push) or polling (pull). You can use either, or both.
Project States
Every project moves through a small set of states. The current value is returned in thestate field of GET /api/detail/{id}.
| State | Meaning | Action |
|---|---|---|
upload | The video is being downloaded from YouTube and uploaded to our storage. | Wait. |
transcription | The audio is being transcribed by our speech engine. | Wait. |
done | Transcription finished, full text and transcript JSON available. | Read the result. |
error | Something failed in the pipeline. | Retry (re-submit), or contact support if it persists. |
upload → transcription → done. Most videos under 10 minutes complete in 30–90 seconds total.
Pattern 1: Webhook (recommended)
Provide awebhookUrl when you call POST /api/transcribeVideo:
done, we POST the full payload to your URL. See Webhooks for the payload shape, headers, and the (lack of) retry policy.
Pattern 2: Polling
If you don’t have a public webhook endpoint, pollGET /api/detail/{id} periodically until the state is done.
- Poll every 5–10 seconds for the first 2 minutes (short videos finish fast).
- Then back off to 30–60 seconds for the next 10 minutes.
- Give up after ~10 minutes and report a failure — the project will likely be in
errorstate by then.
Pattern 3: Both (most robust)
The webhook is single-attempt and not retried (see Webhooks). To make sure you never miss a result:- Submit with a
webhookUrl. - Have your webhook handler mark the project as “received” in your own database.
- Run a background job every few minutes that lists pending projects via
GET /api/listand reconciles any that didn’t get a webhook by callingGET /api/detail/{id}.
Response Shape by State
Note thatGET /api/detail/{id} returns different fields depending on state:
state === "done" or by the presence of the text field.
