Get Video

Retrieve the status and details of a video generation request, including current render status.

GET /v1/platform/videos/:id

Returns the current status and details of a video generation request. Use this to poll for completion in async mode, or to check the most recent renderStatus after triggering a render.

Path Parameters

ParameterTypeDescription
idstringThe video request ID returned by the create endpoint.

Example Request

curl https://api.tutorflow.io/v1/platform/videos/e41a085a-e43f-4f63-92f4-9e11250f6e63 \
  -H "Authorization: Bearer tf_platform_..."

Response

Returns the same VideoResDto structure as the create endpoint, with renderStatus and videoKey reflecting the latest state. See Create Video for all fields.

Example Response (Render Complete)

{
  "id": "e41a085a-e43f-4f63-92f4-9e11250f6e63",
  "videoId": "e10b8286-94ad-4139-a946-3548b46f6d07",
  "status": "COMPLETED",
  "isTerminal": true,
  "title": "What Is Photosynthesis for Kids?",
  "language": "en",
  "sceneCount": 4,
  "aspectRatio": "16:9",
  "targetDurationSeconds": 30,
  "slug": "what-is-photosynthesis-for-kids-d6a02f3b",
  "tier": "default",
  "mode": "sync",
  "priceSnapshot": {
    "category": "video",
    "catalogKey": "video.default",
    "tier": "default",
    "unit": "scene",
    "unitPrice": 0.04,
    "units": 4,
    "amountUsd": 0.16,
    "currency": "USD",
    "source": "platform_pricing_catalog_v2"
  },
  "shareToken": "b64adc04eca28e709add5568af2c414c",
  "editToken": "2dce05b2f639b93ec7559d779b3db71c",
  "editTokenExpiresAt": "2026-04-25T15:15:28.628Z",
  "previewUrl": "https://tutorflow.io/en/platform/videos/edit/2dce...",
  "publicUrl": "https://tutorflow.io/en/platform/videos/b64adc04eca28e709add5568af2c414c",
  "renderStatus": "COMPLETED",
  "videoKey": "platform/{workspaceId}/videos/{videoId}/rendered/what-is-photosynthesis-for-kids-1dvr.mp4",
  "renderPollUrl": "GET /v1/platform/videos/edit/2dce.../",
  "renderTriggerUrl": "POST /v1/platform/videos/edit/2dce.../render",
  "createdAt": "2026-04-25T04:14:47.546Z",
  "completedAt": "2026-04-25T04:15:28.677Z"
}

Get-by-Edit-Token

If you only have an editToken, use the editor endpoint instead:

curl https://api.tutorflow.io/v1/platform/videos/edit/{editToken}

This returns a VideoEditResDto with the full scene array (script, TTS keys, clip keys, subtitles, transitions, durations) plus renderStatus, videoKey, bgmAudioKey, and a refreshed editTokenExpiresAt.

Render Status Lifecycle

renderStatusMeaningNext action
IDLEScenes generated. No render yet.POST /edit/:editToken/render
RENDERINGLambda is composing the mp4.Poll every 5–10 s.
COMPLETEDmp4 is at videoKey.Download / share.
FAILEDRender error.Inspect, fix scenes, retrigger render.

Polling Pattern (Async + Render)

// Step 1: kick off generation
const create = await POST('/v1/platform/videos', { prompt, mode: 'async' })
 
// Step 2: wait for scene generation
let req = create
while (!req.isTerminal) {
  await sleep(req.pollAfterMs ?? 3000)
  req = await GET(`/v1/platform/videos/${create.id}`)
}
 
// Step 3: trigger render
let edit = await POST(`/v1/platform/videos/edit/${req.editToken}/render`)
 
// Step 4: poll render status
while (edit.renderStatus === 'RENDERING') {
  await sleep(8000)
  edit = await GET(`/v1/platform/videos/edit/${req.editToken}`)
}
 
// Step 5: edit.videoKey now points at the final mp4