API reference · Media

Video generation

Start rendering a short 720p clip — async, poll for the result.

POST/v1/videos/generations100 for 5s · 180 for 10s · + storage with store: true
view as markdown

Video is slow by nature (one to five minutes), so this endpoint is asynchronous: the call charges, starts the render and answers 202 immediately with a job id. Poll GET /v1/videos/generations/{id} every few seconds until status is succeeded or failed.

The money guarantee is unchanged: credits are charged at submit, and a render that fails — or never completes within 10 minutes — refunds itself automatically. You only ever pay for a delivered clip.

The finished clip arrives inline as base64 MP4 on the job and is kept for 24 hours — or set store: true to persist it to the eroq Store and receive a durable CDN URL instead, with the Store's rate (2 credits / started 10MB) charged on top.

Request body

promptstringrequired

The scene to render.

modelstring

Only eroq-motion-one today.

durationstring

5s (default) or 10s.

storeboolean

Persist to the eroq Store and answer with a CDN URL. +2 credits per started 10MB. Default false.

curl https://eroq.ai/v1/videos/generations \
  -H "Authorization: Bearer $EROQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "eroq-motion-one",
  "prompt": "slow dolly through a neon-lit hangar, rain on the windows",
  "duration": "5s"
}'
/v1/videos/generations
→ POST /v1/videos/generations
Press run — this replays a real exchange from the docs' own data. No key, no request, no charge.

Response

200 · application/json
{
  "id": "b7e6c2d4-…",
  "object": "video.generation",
  "status": "processing",
  "created": 1756118400,
  "model": "eroq-motion-one",
  "duration": "5s",
  "poll": "/v1/videos/generations/b7e6c2d4-…",
  "usage": { "credits_spent": 100, "credits_remaining": 887 }
}