Async music & video
Long audio and video are asynchronous. Do not re-queue while retrieve returns PROCESSING — that starts another paid job.
Payment on this gateway: quote, retrieve, and complete are free. Only queue returns HTTP 402 and settles USDC.
Music / long audio (/api/v1/audio/*)
POST /audio/quote → { quote } USD estimate (free)
POST /audio/queue → { queue_id, model, status } (paid — 402)
POST /audio/retrieve → PROCESSING json OR binary audio (free)
POST /audio/complete → finalize & delete media (free)- Quote (recommended, free) — pricing fields only:
model+duration_seconds(orcharacter_count). Do not sendprompton quote (Venice rejects it; this gateway strips it if present). Forace-step-*,duration_secondsmust be one of60|90|120|150|180|210. Returns{ quote }so you can budget before paying. - Queue (paid) — generation body (
model,prompt, …). Settle the 402, then savequeue_id. Charge comes from a fresh server-side Venice quote × margin — not from trusting the client quote amount. - Retrieve (poll, free) —
{ "model", "queue_id" }.- Processing: JSON with timing fields (ms).
- Done: binary audio — save immediately.
- Complete (free) — delete media unless already deleted on retrieve.
- After a successful binary retrieve, Venice may have already cleaned the job.
- On this gateway, that case returns 200
{ "success": true, "alreadyCompleted": true }instead of a 400. - Preferred: save media from retrieve; treat complete as best-effort cleanup (or set
delete_media_on_completion: trueon retrieve and skip complete).
Poll interval: start ~2–5s; use average_execution_time as a guide.
Video (/api/v1/video/*)
Same pattern under /video/quote (free), /video/queue (paid), /video/retrieve (free), /video/complete (free).
Queue 200 is { model, queue_id } — not job_id, and often no status.
duration, aspect_ratio, and resolution must be values from that model’s model_spec.constraints on GET /api/v1/models?type=video. Catalog data[0] (e.g. Gemini Omni) may reject 5s (only 4s/6s/8s/10s). A rejected quote is 400, not 503.
- Some models return
download_url(VPS-backed); when present, retrieve may return JSON status and you download from that URL (~24h). - Non-VPS: retrieve returns binary
video/mp4when ready — save immediately. completeafter a successful retrieve is often a no-op; the gateway maps Venice “Request ID is invalid” to{ success: true, alreadyCompleted: true }.- Poll interval: ~10–15s (jobs can take minutes).
Sync alternative for YouTube transcripts: POST /api/v1/video/transcriptions (paid sync route).
Full detail: OpenAPI info.x-guidance.