Video Generations

> Minimum-discount routing: Prefix the path with a min{N} segment (e.g. /min30/v1/video/generations) to require marketplace seller offers to meet a minimum estimated buyer discount before routing. Buyer-owned providers are not covered. See Minimum-Discount Routing.

Async video generation via the marketplace. Submit a job, poll for status, retrieve results.

Submit Job

POST /v1/video/generations

Auth: API key required (Authorization: Bearer *).

Request Body:

FieldTypeRequiredDescription
modelstringModel ID, e.g. venice-runway-gen4-5-text; legacy venice-video-gen maps to a live Venice model
promptstringText prompt (max 2000 chars)
duration_secondsintegerVideo duration. Optional; omitted values use the model's cheapest/default duration when known
image_urlstringImage-to-video input URL for models that support it
resolutionstringProvider-supported resolution such as 480p, 720p, 1080p, 4k
aspect_ratiostringProvider-supported ratio such as 16:9, 9:16, 1:1, 4:3, 3:4, 21:9
audiobooleanInclude audio track when the model supports it
webhook_urlstringURL for terminal state callbacks
metadataobjectClient pass-through metadata

Current Venice-backed examples include venice-runway-gen4-5-text, venice-seedance-2-fast-t2v, and venice-pixverse-c1-t2v. Query /v1/models and /api/markets for the live catalog and active order book.

Response: 202 Accepted

{

"id": "550e8400-e29b-41d4-a716-446655440000",

"object": "media.job",

"kind": "video",

"status": "queued",

"created": 1713200000,

"expires_at": 1713201800,

"estimated_cost_usdc": "102000",

"max_cost_usdc": "112200",

"poll_url": "/v1/video/generations/550e8400-...",

"cancel_url": "/v1/video/generations/550e8400-...",

"job_token": "mjt_abc123..."

}

Idempotency: Include Idempotency-Key header to prevent duplicate submissions.

Poll Status

GET /v1/video/generations/:id

Auth: API key OR X-Job-Token header (returned from submit).

Response: 202 (pending) or 200 (terminal)

{

"id": "550e8400-...",

"object": "media.job",

"kind": "video",

"status": "succeeded",

"created": 1713200000,

"expires_at": 1713201800,

"progress": 1.0,

"results": [

{

"artifact_index": 0,

"url": "https://media-artifacts.s3.amazonaws.com/async-media/550e8400/0.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=…",

"download_url": "/v1/media/artifacts/550e8400-.../0",

"content_type": "video/mp4",

"duration_seconds": 10,

"width": 1920,

"height": 1080,

"bytes": 5000000

}

],

"usage": {

"seller_cost_usdc": "80000",

"buyer_cost_usdc": "96000",

"settlement_status": "confirmed"

}

}

Status values: queuedsubmittedrunningsucceeded | failed | canceled | expired.

Cancel Job

DELETE /v1/video/generations/:id

Auth:** API key OR X-Job-Token header.

Cancellation is best-effort. If the provider has already completed the job, it may transition to succeeded instead.

Cost Model

  • Costs are USDC microdollars (1 USD = 1,000,000 microdollars).
  • Download artifacts are cached/proxied for buyer access. Default artifact retention is 3 hours (MEDIA_ARTIFACT_TTL_SECONDS can override it).
  • Seller selection uses the provider /video/quote endpoint with decrypted seller credentials; cost-multiplier offers apply the multiplier to the live quote.
  • estimated_cost_usdc is the buyer estimate at submit time.
  • max_cost_usdc is the reservation ceiling (estimated + 10% buffer).
  • Jobs expire after 30 minutes if not completed. Completed artifact download retention defaults to 3 hours.