curl --request POST \
--url https://www.genviral.io/api/partner/v1/editor/projects/b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f/transcript \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "asset_id": "asset_1" }'
{
"ok": true,
"code": 200,
"message": "Editor transcript retrieved",
"data": {
"project_id": "b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f",
"assets": [
{
"asset_id": "asset_1",
"words": [
{ "text": "So", "start_ms": 1200, "end_ms": 1480 },
{ "text": "here's", "start_ms": 1480, "end_ms": 1900 }
],
"gaps": [{ "start_ms": 9800, "end_ms": 14500 }]
}
]
}
}
Video Editor
Get Editor Transcript
Word timings and silences for the project videos, in source milliseconds.
POST
/
api
/
partner
/
v1
/
editor
/
projects
/
{projectId}
/
transcript
curl --request POST \
--url https://www.genviral.io/api/partner/v1/editor/projects/b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f/transcript \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "asset_id": "asset_1" }'
{
"ok": true,
"code": 200,
"message": "Editor transcript retrieved",
"data": {
"project_id": "b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f",
"assets": [
{
"asset_id": "asset_1",
"words": [
{ "text": "So", "start_ms": 1200, "end_ms": 1480 },
{ "text": "here's", "start_ms": 1480, "end_ms": 1900 }
],
"gaps": [{ "start_ms": 9800, "end_ms": 14500 }]
}
]
}
}
Transcribes the project’s video assets, or a single asset, and returns word timings and silent
gaps. Use them to choose the source ranges for a
set_sequence op in
Apply Editor Ops.
All times are source ms: positions inside each original asset, not on the edited timeline.
gaps are silences longer than 700 ms between words (or before the first word and after the last).
Transcripts are free and consume no credits. They are rate limited per account owner (30 requests
per hour), and long videos can take a while, so allow a generous timeout.
Path Parameters
string (UUID)
required
The project id.
Body Parameters
The body is optional.string
Transcribe only this asset. Leave it out to transcribe every video asset in the project.
Response
string
object[]
One entry per asset:
asset_id, words[] (text, start_ms, end_ms), and gaps[]
(start_ms, end_ms).curl --request POST \
--url https://www.genviral.io/api/partner/v1/editor/projects/b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f/transcript \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "asset_id": "asset_1" }'
{
"ok": true,
"code": 200,
"message": "Editor transcript retrieved",
"data": {
"project_id": "b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f",
"assets": [
{
"asset_id": "asset_1",
"words": [
{ "text": "So", "start_ms": 1200, "end_ms": 1480 },
{ "text": "here's", "start_ms": 1480, "end_ms": 1900 }
],
"gaps": [{ "start_ms": 9800, "end_ms": 14500 }]
}
]
}
}
Error Responses
400 invalid_json- request body is present but not valid JSON401- authentication failed (missing/invalid/revoked token)404 project_not_found- the project does not exist in the key scope422 invalid_payload- body failed validation (seeissues)422 asset_not_found-asset_idis not an asset of the project422 invalid_document- the project could not be read502 transcription_failed- the audio could not be transcribed; retry later429 rate_limited- transcript limit reached; waitretry_after_seconds503 provider_unavailable- the limiter could not answer right now; retry afterretry_after_seconds
