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 get it included on Business (fair-use up to 2,000 min/month).
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.
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 500 MB). Responses are JSON, with the transcript available as plain text, timestamped text, SRT or VTT.
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 (fair-use up to 2,000 min/month).
Where to generate a key: sign in, open your account, and use the API panel. Key creation is open on Starter, Pro and Business, and to any account holding API tokens. 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.
Authorization: Bearer dks_live_4a7c92e1b8d3f0a6c5e2b9d7f1a3c8e0b4d6f9a2c7e1b5d3Base URL: https://dokitscript.com. All endpoints return JSON. Transcription is asynchronous: create a job, poll its status, then fetch the finished transcript.
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.
| Field | Type | Description |
|---|---|---|
| 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. |
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" }'
{
"jobId": "job_a1b2c3d4e5f6",
"status": "pending",
"links": {
"self": "/api/v1/jobs/job_a1b2c3d4e5f6"
}
}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.
| Field | Type | Description |
|---|---|---|
| file | file |
Required. Audio/video file: MP3, MP4, WAV, M4A, OGG, WebM, AAC or FLAC. Max 500 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. |
curl -X POST https://dokitscript.com/api/v1/transcribe-file \ -H "Authorization: Bearer dks_live_YOUR_KEY" \ -F "[email protected]" \ -F "language=en"
{
"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.
Returns the status of a job you created. Poll this until status is done; the response then includes the transcriptId to fetch.
curl https://dokitscript.com/api/v1/jobs/job_a1b2c3d4e5f6 \ -H "Authorization: Bearer dks_live_YOUR_KEY"
{
"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.
Returns a finished transcript that belongs to you. Add ?format=timestamps|plain|srt|vtt to control the formatted field (defaults to timestamps).
curl "https://dokitscript.com/api/v1/transcript/6630f1a2b3c4d5e6f7a8b9c0?format=srt" \ -H "Authorization: Bearer dks_live_YOUR_KEY"
{
"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..."
}Beyond the REST endpoints above, Dokitscript runs a remote MCP server (Model Context Protocol). Point Claude Code, Claude Desktop, Cursor or VS Code at it and your assistant can transcribe a link and read your history on its own, with no glue code to write. It authenticates with the same Bearer key as the REST API, so nothing new to set up on your side.
https://dokitscript.com/mcp // transport: Streamable HTTP (JSON-RPC over POST) Authorization: Bearer <your API key>
| Tool | What it does |
|---|---|
transcribe_url |
Submits a TikTok, Instagram, YouTube, Facebook, X or LinkedIn link and returns an id immediately; the transcription runs in the background. |
get_transcript |
Fetches a transcript by id in plain text, timestamps, SRT or VTT, or reports progress while it is still running. |
list_transcripts |
Lists the transcriptions on the account, most recent first, with pagination and a platform filter. |
search_transcripts |
Full-text search across the account's transcription history. |
ask_question |
Answers a free-form question about one of your transcripts, with sources. Counts against your monthly AI quota and needs a plan that includes the feature. |
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. Tokens are what fund API and MCP calls on Starter and Pro: those plans open the door, but their subscription minutes stay on the web app. Already on Business? The API is included, fair-use up to 2,000 minutes a month, no tokens needed.
| Pack | Tokens | Transcription | Price |
|---|---|---|---|
| Starter | 50 | ≈ 12.5 hours | $14.99 |
| Growth | 200 | ≈ 50 hours | $49.99 |
| Scale | 1,000 | ≈ 250 hours | $249.99 |
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 fair-use up to 2,000 minutes a month, just like the dashboard.
| Limit | Value |
|---|---|
| Access | Starter, Pro or Business plan, or any account holding API tokens |
| Billing | 1 token / 15 min on Starter and Pro · fair-use up to 2,000 min/mo included on Business |
| Max video / audio duration | 45 min (tokens) · 5 h (Business) |
| Rate limit (job creation) | 20 requests / minute per key |
| Active API keys | Up to 10 per account |
400 (bad request), 401 (missing/invalid key), 402 (out of API tokens), 403 (no API access: no tokens and not on a paid plan), 404 (job or transcript not found), 429 (rate limited) and 503 (API temporarily unavailable). Error bodies look like { "error": "..." }.
Open your account, buy a pack of API tokens (or go Business, fair-use up to 2,000 min/month), 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.