API Docs

Create Transcription Job

Queue a new transcription job from an Instagram, TikTok, YouTube, Google Drive, Pinterest, Facebook, X, or direct video URL. Returns immediately with a pending job; background workers create the final transcription.
POSThttps://api.gettranscribe.ai/transcription-jobs

Headers

Content-Type: application/json
x-api-key: YOUR_API_KEY

Body Parameters

urlrequired
string

The video URL to transcribe (Instagram, TikTok, YouTube, Facebook, X, Pinterest, Google Drive, or a direct video file URL)

folder_idoptional
number

ID of the folder to organize the finished transcription

languageoptional
string

ISO-639-1 language code (e.g., "en", "es", "fr") to improve transcription accuracy

modeloptional
string

Optional transcription profile. Supported values: "accurate" (default — timed segments/words), "fast", "quality", "speakers". Defaults to "accurate" when omitted.

promptoptional
string

Context text to guide transcription (names, technical terms, domain-specific vocabulary). Ignored when model is "speakers".

sourceoptional
string

Optional origin label for analytics. For API integrations, send "api".

Example Request

curl -X POST https://api.gettranscribe.ai/transcription-jobs \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "url": "https://www.instagram.com/p/DWy1RmFAGjF/",
    "folder_id": 123,
    "model": "accurate",
    "language": "en",
    "prompt": "This video contains entrepreneurship and motivational content",
    "source": "api"
  }'

Example Response

{
  "id": 22535,
  "user_id": 2,
  "folder_id": null,
  "transcription_id": null,
  "url": "https://www.instagram.com/p/DWy1RmFAGjF/",
  "language": "en",
  "prompt": null,
  "model": "accurate",
  "source": "api",
  "status": "pending",
  "error_message": null,
  "error_code": null,
  "error_data": null,
  "create_conversation": false,
  "consumption_type": "subscription",
  "platform": "instagram",
  "thumbnail_url": "https://scontent-iad6-1.cdninstagram.com/...",
  "generated_title": "No necesitas un Ferrari para atraer pacientes. ...",
  "user_ip": null,
  "user_country": null,
  "user_country_code": null,
  "user_region": null,
  "user_city": null,
  "user_timezone": null,
  "user_latitude": null,
  "user_longitude": null,
  "user_org": null,
  "created_at": "2026-07-22T23:42:46.080Z",
  "updated_at": "2026-07-22T23:42:46.080Z",
  "deleted_at": null,
  "progress_message": null,
  "progress_current": null,
  "progress_total": null,
  "processing_scope": "production",
  "started_at": null,
  "client_origin": "api",
  "origin_surface": null,
  "entry_surface": null
}

Live example from POST /transcription-jobs (July 2026) for the Instagram URL in the sample curl. The API returns HTTP 201 with status pending immediately — workers process the job asynchronously. Poll GET /transcription-jobs/{id} (recommended) or GET /transcription-jobs until status is completed, then read transcription_id and fetch the full transcript with GET /transcriptions/{transcription_id}. While running, status becomes processing and progress_message may show steps such as Saving transcription.... On success, started_at and transcription_id are set (this job completed as transcription_id 233480). On failure, status is failed and error_message / error_code explain why. processing_scope is set by the server; clients cannot choose it. Prefer this endpoint over the old synchronous POST /transcriptions.