CQTAI
FFmpeg Media · FFmpeg

Extract Single FrameNEW

📌 What is thisExtract one frame from a video: the last frame or a given timestamp; output keeps the original resolution without scaling.
💡 When to useUse to grab a video's last frame (e.g. as a reference for a follow-up shot) or the original frame at a given second. Pass "last" for the last frame or a number of seconds for that moment; a value past the duration falls back to the last frame.

Endpoints

UsageMethodPath
Submit taskPOST/v1/ffmpeg/extract_frame
Query ResultGET/v1/ffmpeg/info?id={taskId}
Recommended polling intervalPoll every 3-5s (response includes progress 0-100) until status = succeeded / failed. status = queued means the task is enqueued and waiting to start (not charged yet) — just keep polling. Single-task timeout is 300s with auto-refund.

Request Parameters

ParamTypeRequiredDescription
inputUrlstringRequiredInput media URL on a trusted allowlist domain (platform CDN or a trusted-source CDN); upload first to obtain one, or use an asset URL already on a trusted CDN
positionstring | number"last" for the last frame (default), or a number of seconds for that moment; a value past the duration falls back to the last frame
formatstringImage format: png (default) / jpg
webhookUrlstringCompletion webhook URL (optional)

Request Example

curl -X POST https://api.cqtai.com/v1/ffmpeg/extract_frame \
  -H 'Authorization: Bearer <API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{ "inputUrl": "https://cdn.novapi.ai/veo31/1788164205419_de868f9d69d445baaf577d42e87a236f.mp4", "position": "last", "format": "png" }'
# -> { "code":200, "data":"<taskId>" }

Response Example

{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "<taskId>",
    "operation": "transcode",
    "status": "succeeded",
    "progress": 100,
    "resultUrl": "https://cdn.novapi.ai/ffmpeg/xxx.mp4",
    "costPoints": 3,
    "errorMsg": null
  }
}

Billing & Credits

Flat 1 credit (x your user rate). Auto-refunded on failure.