curl --request GET \
--url https://www.genviral.io/api/partner/v1/editor/projects/b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f \
--header 'Authorization: Bearer <token>'
{
"ok": true,
"code": 200,
"message": "Editor project retrieved",
"data": {
"project_id": "b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f",
"title": "Launch cut",
"aspect_ratio": "9:16",
"duration_ms": 42000,
"updated_at": "2026-10-02T12:00:00.000Z",
"assets": [
{
"asset_id": "asset_1",
"name": "interview.mp4",
"url": "https://example.com/interview.mp4",
"poster_url": null,
"duration_ms": 42000
}
],
"clips": [
{
"clip_id": "clip_1",
"asset_id": "asset_1",
"start_ms": 0,
"end_ms": 42000,
"source_start_ms": 0,
"source_end_ms": 42000,
"lane": 0
}
],
"text_clips": [
{
"clip_id": "caption-8f1d2c3b-4a5e-4f60-9b7c-1d2e3f4a5b6c",
"text": "this changed how I plan",
"start_ms": 0,
"end_ms": 1450,
"role": "caption"
}
],
"undo": null,
"render": null,
"editor_url": "https://www.genviral.io/editor/b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f?workspace=personal"
}
}
Video Editor
Get Editor Project
Read a video editor project: assets, timeline clips, text clips, and the latest render.
GET
/
api
/
partner
/
v1
/
editor
/
projects
/
{projectId}
curl --request GET \
--url https://www.genviral.io/api/partner/v1/editor/projects/b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f \
--header 'Authorization: Bearer <token>'
{
"ok": true,
"code": 200,
"message": "Editor project retrieved",
"data": {
"project_id": "b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f",
"title": "Launch cut",
"aspect_ratio": "9:16",
"duration_ms": 42000,
"updated_at": "2026-10-02T12:00:00.000Z",
"assets": [
{
"asset_id": "asset_1",
"name": "interview.mp4",
"url": "https://example.com/interview.mp4",
"poster_url": null,
"duration_ms": 42000
}
],
"clips": [
{
"clip_id": "clip_1",
"asset_id": "asset_1",
"start_ms": 0,
"end_ms": 42000,
"source_start_ms": 0,
"source_end_ms": 42000,
"lane": 0
}
],
"text_clips": [
{
"clip_id": "caption-8f1d2c3b-4a5e-4f60-9b7c-1d2e3f4a5b6c",
"text": "this changed how I plan",
"start_ms": 0,
"end_ms": 1450,
"role": "caption"
}
],
"undo": null,
"render": null,
"editor_url": "https://www.genviral.io/editor/b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f?workspace=personal"
}
}
Returns a compact view of a project. Always read the project before editing it: take clip ids and
times from this response, never invent them.
Time units
Two kinds of millisecond values appear, and they are not interchangeable:- Timeline ms:
start_msandend_mson a clip or text clip, andduration_mson the project. Position in the edited video. Used bydelete_range,split_clip,trim_clip, andreorder_clip. - Source ms:
source_start_msandsource_end_mson a clip, and the word and gap times from Get Editor Transcript. Position inside the original asset. Used byset_sequence.
updated_at back as expected_updated_at when you edit, so a change made by someone else
in the meantime is caught instead of overwritten.
Path Parameters
string (UUID)
required
The project id.
Response
string
string
string
9:16, 1:1, or 4:5.number
Length of the edited video, in timeline ms.
string
ISO 8601 timestamp of the last change.
object[]
asset_id, name, url, poster_url, and duration_ms (source ms) of each video.object[]
clip_id, asset_id, start_ms and end_ms (timeline), source_start_ms and
source_end_ms (source), and lane.object[]
Captions and other text on the video, ordered by start:
clip_id, text, start_ms and
end_ms (timeline), and role, which is caption for captions (for example from
Add Editor Captions) and text for any other text overlay.
Each clip includes lane, percentage placement (x, y, width, height),
font_family, font_size, nullable font_weight, color, stroke_color,
stroke_width, nullable background_color, preset, align and text_case.object | null
The latest edit your credential can undo:
edit_id (UUID) and note. Send
undo_edit as the sole op to Apply Editor Ops,
with this response’s updated_at as expected_updated_at. null means no
matching edit is available. Undo restores the complete project, including
captions, audio, overlays and playback settings.object | null
The latest render of the current version, as in
Get Editor Render without
project_id; null when it has
never been rendered.string
Opens the project in the Genviral web editor, in the workspace (or personal scope) the request
acted in. Share it with the user: they upload videos there and watch edits made through the
API land live.
curl --request GET \
--url https://www.genviral.io/api/partner/v1/editor/projects/b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f \
--header 'Authorization: Bearer <token>'
{
"ok": true,
"code": 200,
"message": "Editor project retrieved",
"data": {
"project_id": "b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f",
"title": "Launch cut",
"aspect_ratio": "9:16",
"duration_ms": 42000,
"updated_at": "2026-10-02T12:00:00.000Z",
"assets": [
{
"asset_id": "asset_1",
"name": "interview.mp4",
"url": "https://example.com/interview.mp4",
"poster_url": null,
"duration_ms": 42000
}
],
"clips": [
{
"clip_id": "clip_1",
"asset_id": "asset_1",
"start_ms": 0,
"end_ms": 42000,
"source_start_ms": 0,
"source_end_ms": 42000,
"lane": 0
}
],
"text_clips": [
{
"clip_id": "caption-8f1d2c3b-4a5e-4f60-9b7c-1d2e3f4a5b6c",
"text": "this changed how I plan",
"start_ms": 0,
"end_ms": 1450,
"role": "caption"
}
],
"undo": null,
"render": null,
"editor_url": "https://www.genviral.io/editor/b1d4e8f2-3a5c-4d7e-8f90-1a2b3c4d5e6f?workspace=personal"
}
}
Error Responses
401- authentication failed (missing/invalid/revoked token)404 project_not_found- the project does not exist in the key scope422 invalid_payload-projectIdis not a valid UUID
