Video Transcription API
Submit a video or audio file and receive a word-level transcript with speaker identification. The API supports videos from major platforms and locally uploaded video/audio files, along with language settings.
Supported Video Sources
The API accepts URLs from the following platforms: YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble and more.
You can also upload local video or audio files. Local upload requires a Standard plan or above. See the Upload API for details.
Workflow
- Submit a transcription task from a video URL
- Poll the results until status is
SUCCEEDED
Submit Transcription Task
Submit a new transcription task from a video or audio URL.
POST https://wayinvideo-api.wayin.ai/api/v2/transcripts
Request Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
video_url | string | Yes | — | The source video/audio URL or uploaded file identifier |
source_lang | string | No | null | Source language of the video (see Supported Languages). When null, the system auto-detects the original language. |
target_lang | string | No | null | Target language for the transcript (see Supported Languages). When null, no translation is applied. If target_lang differs from the video's original language, the transcript will be automatically translated into the target language. |
Example Request
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/transcripts \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-wayinvideo-api-version: v2" \
-d '{
"video_url": "https://www.youtube.com/watch?v=example",
"target_lang": "en"
}'
Response
{
"data": {
"id": "trans_proj_001",
"name": "sample project name",
"status": "CREATED"
}
}
| Field | Type | Description |
|---|---|---|
id | string | Task identifier (used to retrieve results) |
name | string | Task name |
status | string | CREATED, QUEUED, ONGOING, SUCCEEDED, FAILED |
Get Transcription Results
Retrieve the transcript with word-level timestamps and speaker labels. Poll until status is SUCCEEDED.
GET https://wayinvideo-api.wayin.ai/api/v2/transcripts/results/{id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The task ID returned by the submit endpoint |
Example Request
curl -X GET https://wayinvideo-api.wayin.ai/api/v2/transcripts/results/trans_proj_001 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-wayinvideo-api-version: v2"
Response
{
"data": {
"status": "SUCCEEDED",
"cost_usage": 27.0,
"transcript": [
{
"text": "Welcome to today's presentation",
"language": null,
"start": 200,
"end": 4500,
"speaker": "Speaker 1"
},
{
"text": "Thanks for coming",
"language": null,
"start": 5000,
"end": 8200,
"speaker": "Speaker 2"
}
]
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
status | string | CREATED, QUEUED, ONGOING, SUCCEEDED, FAILED |
error_message | string | Error reason (only present when status is FAILED) |
cost_usage | number | API units consumed for this request |
transcript | array | List of transcript segments (see below) |
Transcript Segment
| Field | Type | Description |
|---|---|---|
text | string | Transcribed text |
language | string | null | Detected language code, or null if not detected |
start | integer | Start time in milliseconds |
end | integer | End time in milliseconds |
speaker | string | Speaker label (e.g. "Speaker 1") |