# fast.video > Video API: prompt → video and image → video, 720p 24 fps with sound, 5–15 s per clip; batches; long clips up to 60 s. One price per second: GET /v1/pricing. Base URL: https://fast.video Auth: header `Authorization: Bearer fv_...` Full reference for agents (read this first): https://fast.video/llms-full.txt Docs: https://fast.video/docs · OpenAPI: https://fast.video/openapi.json ## Endpoints - POST /v1/videos {prompt, image?, end_image?, references? (≤5 pictures: character/prop sheets), audio? (track to lip-sync), duration 5-15, aspect_ratio?, webhook_url?} → 202 {id, status} (image/end_image cannot be combined with references/audio) - GET /v1/videos/{id} → {status queued|running|succeeded|failed, video_url, poster_url, cost_usd, error} - POST /v1/batches {items:[video params], webhook_url?} ; GET /v1/batches/{id} - POST /v1/sequences {mode chain|keyframes|references, prompt, duration? (total), image? (chain), images? (keyframes), references? (references mode), segments?:[{prompt,duration,audio?}], join cut|crossfade} ; GET /v1/sequences/{id} - POST /v1/uploads (multipart file: image or audio ≤ 10 MB) → {id: upl_..., kind image|audio} usable as image, references or audio - GET /v1/account → balance_usd, webhook_secret ; GET /v1/pricing ## Notes - Images: https URL, data: URI, or upload id. Aspect ratio defaults to the image's. - Jobs are async: poll every 3-5 s or use webhook_url (X-FastVideo-Signature = sha256 HMAC of body with webhook_secret). - Failed videos are refunded. Files kept 7 days. - Errors: {"error": {"code", "message"}}; 402 insufficient_credit, 422 content_rejected, 429 rate_limited.