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.
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 50 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 (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.
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 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. |
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..."
}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.
| 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 unlimited fair-use just like the dashboard.
| Limit | Value |
|---|---|
| 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 |
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": "..." }.
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.