API v1

Programmatic transcription API

Turn any TikTok, Instagram, YouTube, Facebook or X video — or your own audio/video files — into clean text from your own code. REST, Bearer authentication, JSON responses, 90+ languages. Pay as you go with API tokens, or go unlimited on Business.

View the endpoints See pricing
Overview

One API for every platform

The Dokitscript API is the same engine that powers the web app, exposed as a simple HTTP interface. Send a public video URL or upload an audio/video file, poll for the result, and pull back the full transcript with timestamps and segments — ready to drop into your pipeline, CMS or data warehouse.

What you can transcribe

Public videos from TikTok, Instagram (Reels, posts, IGTV), YouTube (Shorts & long-form), Facebook and X / Twitter — plus your own uploaded files (MP3, MP4, WAV, M4A, OGG, WebM, AAC, FLAC, up to 50 MB). Responses are JSON, with the transcript available as plain text, timestamped text, SRT or VTT.

Two ways to use it: buy API tokens (pay as you go, no subscription) or get unlimited access on the Business plan. Either way, you generate the keys yourself from your account.
Authentication

Bearer API keys

Every request is authenticated with a secret key passed in the Authorization header. Keys are tied to your account; usage is billed to your API token balance (pay as you go) or your Business plan (unlimited).

Where to generate a key: sign in, open your account, and use the API panel. Key creation unlocks as soon as you hold API tokens or are on Business. You can create up to 10 active keys and revoke any of them at any time. The secret is shown only once at creation — store it somewhere safe; if you lose it, revoke the key and create a new one.

Header format
Authorization: Bearer dks_live_4a7c92e1b8d3f0a6c5e2b9d7f1a3c8e0b4d6f9a2c7e1b5d3
Keep keys server-side. A key grants full access to your account's transcription quota — never expose it in client-side code, mobile apps or public repositories.
Reference

Endpoints

Base URL: https://dokitscript.com. All endpoints return JSON. Transcription is asynchronous: create a job, poll its status, then fetch the finished transcript.

POST /api/v1/transcribe

Starts a transcription job for a public video URL and returns immediately with a jobId to poll. Does not wait for the transcription to finish.

Body parameters
FieldTypeDescription
url string Required. Public video URL (TikTok, Instagram, YouTube, Facebook or X).
language string Optional. ISO language hint, or "auto" to detect. Defaults to "auto".
format string Optional. Output for the formatted field: timestamps, plain, srt or vtt. Defaults to timestamps.
Example request
curl -X POST https://dokitscript.com/api/v1/transcribe \
  -H "Authorization: Bearer dks_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://www.tiktok.com/@user/video/1234567890", "language": "auto", "format": "timestamps" }'
Response — 202 Accepted
{
  "jobId": "job_a1b2c3d4e5f6",
  "status": "pending",
  "links": {
    "self": "/api/v1/jobs/job_a1b2c3d4e5f6"
  }
}
POST /api/v1/transcribe-file

Transcribes an audio or video file you upload directly — same async flow as /transcribe, but the body is multipart/form-data instead of JSON. Returns a jobId to poll.

Form fields
FieldTypeDescription
file file Required. Audio/video file: MP3, MP4, WAV, M4A, OGG, WebM, AAC or FLAC. Max 50 MB.
language string Optional. ISO language hint, or "auto" to detect. Defaults to "auto".
format string Optional. Output for the formatted field: timestamps, plain, srt or vtt. Defaults to timestamps.
Example request
curl -X POST https://dokitscript.com/api/v1/transcribe-file \
  -H "Authorization: Bearer dks_live_YOUR_KEY" \
  -F "[email protected]" \
  -F "language=en"
Response — 202 Accepted
{
  "jobId": "job_a1b2c3d4e5f6",
  "status": "pending",
  "links": {
    "self": "/api/v1/jobs/job_a1b2c3d4e5f6"
  }
}

Then poll GET /api/v1/jobs/:jobId and fetch the transcript exactly like the URL flow below.

GET /api/v1/jobs/:jobId

Returns the status of a job you created. Poll this until status is done; the response then includes the transcriptId to fetch.

Example request
curl https://dokitscript.com/api/v1/jobs/job_a1b2c3d4e5f6 \
  -H "Authorization: Bearer dks_live_YOUR_KEY"
Response — 200 OK (done)
{
  "jobId": "job_a1b2c3d4e5f6",
  "status": "done",
  "progress": 100,
  "transcriptId": "6630f1a2b3c4d5e6f7a8b9c0",
  "links": {
    "transcript": "/api/v1/transcript/6630f1a2b3c4d5e6f7a8b9c0"
  }
}

While processing, status is pending or processing. On failure it is error.

GET /api/v1/transcript/:id

Returns a finished transcript that belongs to you. Add ?format=timestamps|plain|srt|vtt to control the formatted field (defaults to timestamps).

Example request
curl "https://dokitscript.com/api/v1/transcript/6630f1a2b3c4d5e6f7a8b9c0?format=srt" \
  -H "Authorization: Bearer dks_live_YOUR_KEY"
Response — 200 OK
{
  "id": "6630f1a2b3c4d5e6f7a8b9c0",
  "platform": "tiktok",
  "url": "https://www.tiktok.com/@user/video/1234567890",
  "language": "en",
  "duration": 47,
  "wordCount": 128,
  "fullText": "Here is the full transcript text...",
  "segments": [
    { "start": 0, "end": 3.2, "text": "Here is the..." }
  ],
  "speakers": [],
  "speakerText": null,
  "createdAt": "2026-06-13T10:24:00.000Z",
  "formatted": "1\n00:00:00,000 --> 00:00:03,200\nHere is the..."
}
Pricing

API tokens — pay as you go

No subscription required. Buy a pack of API tokens and use the API until they run out — tokens never expire. 1 token = 15 minutes of transcription (any started 15-minute block counts as one token), so a 40-minute file uses 3 tokens. Already on Business? The API is included with unlimited usage — no tokens needed.

PackTokensTranscriptionPrice
Starter50≈ 12.5 hours$14.99
Growth200≈ 50 hours$49.99
Scale1,000≈ 250 hours$249.99
Buy tokens from the API panel in your account (card or crypto). Token transcriptions are capped at 45 minutes per file; Business goes up to 90 minutes.
Limits & quotas

Rate limits and usage

The API reuses the same pipeline as the web app. Usage is billed either to your API tokens (1 token per started 15-minute block) or, on Business, counts as unlimited fair-use just like the dashboard.

LimitValue
Access API tokens (pay as you go) or Business plan (unlimited)
Billing 1 token / 15 min · unlimited on Business
Max video / audio duration 45 min (tokens) · 90 min (Business)
Rate limit (job creation) 20 requests / minute per key
Active API keys Up to 10 per account
Errors are JSON. Expect 400 (bad request), 401 (missing/invalid key), 402 (out of API tokens), 403 (no tokens and not on Business), 404 (job or transcript not found), 429 (rate limited) and 503 (API temporarily unavailable). Error bodies look like { "error": "..." }.
Available now

Start building

Open your account, buy a pack of API tokens (or go Business for unlimited), then create a key from the API panel and make your first request. Need help with a large integration or volume pricing? Talk to us.

Open your account