Skip to content

Public API endpoints for uploads, transcription tasks, transcription modes, and responses.

Base URL:

https://api.videototext.dev

Successful responses use:

{
"data": {},
"meta": {}
}

Errors use Problem Details:

{
"type": "VALIDATION_ERROR",
"title": "Validation failed",
"status": 400,
"detail": "Invalid request",
"errorCode": "VALIDATION_ERROR"
}
ModeCreditsNotes
balanced1 credit per minuteDefault mode
precision2 credits per minuteHigher-accuracy option
StatusMeaning
QUEUEDThe task is waiting for processing capacity.
PROCESSINGThe task is currently being transcribed.
SUCCEEDEDThe transcript is ready.
FAILEDThe task failed and may include showError.
CANCELEDThe task was canceled.

Create a signed upload URL.

Request:

{
"filename": "meeting.mp4",
"mimetype": "video/mp4"
}

Response:

{
"data": {
"uploadUrl": "https://storage.example.com/signed-upload-url",
"fileKey": "uploads/example.mp4",
"fileUrl": "https://static.example.com/uploads/example.mp4",
"uploadId": "00000000-0000-0000-0000-000000000000",
"expiresAt": "2026-06-06T10:00:00.000Z"
},
"meta": {}
}

POST /v1/uploads/{uploadId}/operations/complete

Section titled “POST /v1/uploads/{uploadId}/operations/complete”

Validate the uploaded object, read media duration, and create an asset.

Path parameters:

NameTypeDescription
uploadIdUUIDUpload session ID returned by POST /v1/uploads.

Request:

{
"fileKey": "uploads/example.mp4",
"fileUrl": "https://static.example.com/uploads/example.mp4",
"filename": "meeting.mp4",
"mimetype": "video/mp4",
"fileSize": 10485760
}

Response:

{
"data": {
"assetId": "00000000-0000-0000-0000-000000000000"
},
"meta": {}
}

Common errors include UPLOAD_SESSION_NOT_FOUND, UPLOAD_SESSION_EXPIRED, UPLOAD_SIZE_MISMATCH, UPLOAD_MIMETYPE_MISMATCH, and UPLOAD_DURATION_UNREADABLE.

Create a transcription task from an uploaded asset.

For retry-safe task creation, see Idempotency.

Request:

{
"assetId": "00000000-0000-0000-0000-000000000000",
"language": "Auto",
"timestampMode": "CHUNK",
"transcriptionMode": "balanced"
}

Fields:

FieldTypeRequiredNotes
assetIdUUIDYesAsset returned by upload completion.
languagestringNoDefaults to Auto. Supported languages use lowercase names such as english, spanish, or chinese.
timestampModestringNoCHUNK or WORD. Defaults to CHUNK.
transcriptionModestringNoPublic mode key: balanced or precision. Defaults to balanced.

Response:

{
"data": {
"task": {
"transcriptId": "00000000-0000-0000-0000-000000000000",
"status": "QUEUED",
"language": "Auto",
"timestampMode": "CHUNK",
"transcriptionMode": "balanced",
"billedCredits": "1.500000000000"
}
},
"meta": {
"pollAfterMs": 1500
}
}

Task create and task detail responses always include transcriptionMode with the public mode key used for billing and result processing.

Return the current task status and transcript result fields needed by clients.

Path parameters:

NameTypeDescription
taskIdUUIDdata.task.transcriptId returned by POST /v1/tasks.

Response:

{
"data": {
"task": {
"transcriptId": "00000000-0000-0000-0000-000000000000",
"status": "SUCCEEDED",
"showError": null,
"fullText": "Welcome to the meeting.",
"chunks": [
{
"seq": 0,
"startMs": 0,
"endMs": 2200,
"text": "Welcome to the meeting.",
"speakerKey": null,
"speakerName": null,
"wordStartIndex": 0,
"wordEndIndex": 1
}
],
"words": [
{
"text": "Welcome",
"startMs": 0,
"endMs": 600
}
],
"sourceDurationMs": 90400,
"language": "Auto",
"resultLanguage": "english",
"timestampMode": "CHUNK",
"transcriptionMode": "balanced",
"billedCredits": "1.500000000000",
"createdAt": "2026-06-06T09:00:00.000Z"
}
},
"meta": {}
}