API ReferenceTranscription
Transcribe
Transcribe video or audio content from a URL or file upload. Returns an async job.
POST /api/v1/transcription
Transcribe video or audio content. Accepts either a video URL or a file upload (max 25MB). This is an async operation — poll GET /api/v1/transcription/{id} for results.
Credits: 1 per request
Content-Type: multipart/form-data
Form Fields
| Field | Type | Required | Description |
|---|---|---|---|
url | string | No* | Video URL to transcribe (YouTube, TikTok, Instagram) |
file | file | No* | Video/audio file to transcribe (max 25MB) |
* Provide either url or file, not both.
Example Requests
With URL:
curl -X POST https://api.usesoke.ai/api/v1/transcription \
-H "X-Soke-Key: sk_live_your_api_key" \
-F "url=https://youtube.com/watch?v=VIDEO_ID"With file upload:
curl -X POST https://api.usesoke.ai/api/v1/transcription \
-H "X-Soke-Key: sk_live_your_api_key" \
-F "file=@/path/to/video.mp4"Response
{
"success": true,
"data": {
"id": "txn_abc123",
"status": "processing",
"sourceUrl": "https://youtube.com/watch?v=VIDEO_ID"
},
"meta": {
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"processing_time_ms": 200
}
}Polling for Results
curl "https://api.usesoke.ai/api/v1/transcription/txn_abc123" \
-H "X-Soke-Key: sk_live_your_api_key"Completed response:
{
"success": true,
"data": {
"id": "txn_abc123",
"status": "completed",
"transcript": "Welcome to today's video. In this tutorial, we'll cover...",
"durationSeconds": 612,
"wordCount": 1850,
"language": "en"
}
}Additional Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1/transcription/{id} | Poll transcription status |
GET | /api/v1/transcription | List transcription history (paginated) |
DELETE | /api/v1/transcription/{id} | Delete a transcription |
Error Codes
| Code | Status | Description |
|---|---|---|
BAD_REQUEST | 400 | Neither url nor file provided, or both provided |
RATE_LIMIT_EXCEEDED | 429 | Rate limit exceeded |
INSUFFICIENT_CREDITS | 402 | Not enough credits |
The transcript output can be passed to the Generate Description endpoint's transcript field for context-aware description generation.