DocsVidNext API
Results
Video status and progress, the finished video and its thumbnails, downloads, YouTube text, listing, canceling and deleting.
GET /v1/videos/{id} (MCP: get_video) returns the video:
{
"id": "vid_…",
"object": "video",
"status": "completed",
"progress": 100,
"queue_position": null,
"blocked": null,
"settings_used": { "preset": { "id": "…", "name": "Documentary EN" }, "format": "landscape", "language": "uk", "theme": { "id": "…", "mode": null, "level": "pro" }, "thumbnails": true },
"label": "batch-21",
"metadata": { "row": 42 },
"member": { "email": "olena@company.com" },
"dashboard_url": "https://vidnext.ai/project/…",
"result": {
"download_url": "https://api.vidnext.ai/v1/videos/vid_…/download",
"video_url": "https://…",
"video_url_expires_at": "…",
"duration_seconds": 482,
"thumbnails_status": "completed",
"thumbnails": [{ "id": "…", "url": "https://…", "aspect_ratio": "16:9", "variant": 0 }]
},
"cost": { "billing": "per_minute", "estimated_credits": 2400, "charged_credits": 2280 },
"error": null
}Statuses
status | Means |
|---|---|
queued | Waiting for a free slot (queue_position), or blocked with a reason |
processing | Being made — progress 0–99 and a stage |
completed | Ready — result is filled |
failed | Stopped — error.code and error.message say why |
canceled | Canceled before it started |
More statuses may be added; treat unknown ones as "not finished". stage is informational and may change.
Prefer webhooks to asking repeatedly. If you do poll, once a minute is plenty — a video takes 30–60 minutes.
The finished video
GET /v1/videos/{id}/downloadredirects (302) to a fresh link to the MP4.result.video_urlis the same link, valid for 6 hours — ask again for a new one.GET /v1/videos/{id}/thumbnails— the thumbnails.GET /v1/videos/{id}/youtube-metadata— titles, a description and tags for YouTube, made on first ask.dashboard_urlopens the video in VidNext, where you can edit it or redo a step.
Lists
GET /v1/videos (MCP: list_videos) — your videos, newest first. Filters: status, label, member, source (api, mcp, batch), created_after, created_before; limit up to 100 and cursor (the next_cursor of the previous page).
Deleting
DELETE /v1/videos/{id} (MCP: delete_video) deletes a finished video the API made, with its files — it frees your storage. Videos people made in the app can't be deleted this way, and a video still being made answers 409 video_not_finished. A key's Delete finished videos after (days) setting does this automatically for that key's videos.