transcript.imDocs
DocumentationAPI Reference

Extract transcript

POST
/v1/transcript

Extract a transcript for one video from YouTube, TikTok, Instagram, LinkedIn, or Twitter/X. Pass url (full URL, short link, or bare platform id) and the platform is auto-detected, or pass platform + externalId. The response is served from cache (Redis → Postgres) when available.

language is a priority list (de,en,asr); asr / asr-<code> request asynchronous audio transcription. When the video has no caption track (or an asr entry is reached) the call returns 202 with a jobId — poll GET /v1/transcript/job/{id}. Caption tracks that exist only in other languages also continue to ASR rather than failing; only a genuinely missing asset returns 404.

waitMs (default 2000, max 10000) is how long the caller waits before a durable 202 is returned; 0 returns a job immediately on a cache miss.

A multipart/form-data body with a file field uploads local media (account-only) instead of a remote link.

Billing: transcript extraction and cache lookup are free (0 credits).

AuthorizationBearer <token>

Session token (cookie-based auth in browser) or developer API key (tr_ prefix). API keys require the transcripts scope for /v1/transcript and the batches scope for /v1/batch.

In: header

Request Body

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/transcript" \  -H "Content-Type: application/json" \  -d '{    "language": "en",    "format": "json",    "includeTimestamp": true,    "sendMetadata": false,    "waitMs": 2000  }'
{  "status": "success",  "format": "json",  "transcript": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "platform": "youtube",    "externalId": "string",    "sourceUrl": "http://example.com",    "lang": "string",    "title": "string",    "channel": "string",    "creatorName": "string",    "creatorHandle": "string",    "creatorUrl": "string",    "thumbnailUrl": "string",    "durationSec": 0,    "publishedAt": "2019-08-24T14:15:22Z",    "metadata": {},    "source": "youtube_transcript_api",    "status": "pending",    "segments": [      {        "text": "string",        "start": 0,        "duration": 0      }    ],    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z"  },  "text": "string",  "cached": true,  "language": "string",  "metadataStatus": "complete",  "lengthSeconds": 0,  "lengthText": "string",  "metadata": {}}