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 get it included on Business (fair-use up to 2,000 min/month).

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 500 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 it included on the Business plan (fair-use up to 2,000 min/month). Either way, you generate the keys yourself from your account.
Rather not write the HTTP calls? The same key also opens our MCP server, which hands Claude Code, Claude Desktop, Cursor or VS Code five ready-made transcription tools. See the MCP section below.
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 (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.

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 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.
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..."
}
MCP server

Give your AI assistant the same tools

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.

Endpoint
https://dokitscript.com/mcp   // transport: Streamable HTTP (JSON-RPC over POST)
Authorization: Bearer <your API key>

The five tools your assistant gets

ToolWhat 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.
Who can connect: any account on Starter, Pro or Business, and any account holding API tokens. On Starter and Pro, transcriptions run on your token balance, bought separately from your subscription, and each file is capped at 45 minutes. Business includes API and MCP usage in the plan (fair-use up to 2,000 min/month) and goes up to 5 hours per file.

Set up the MCP server →

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. 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.

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 5 hours.
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 fair-use up to 2,000 minutes a month, just like the dashboard.

LimitValue
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
Errors are JSON. Expect 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": "..." }.
Available now

Start building

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.

Open your account