BETAWe are currently in beta. Should you encounter any issues, please do not hesitate to contact us.
Discount on all models + if you follow us on twitter and hit us on dm you will get free credit to your email hurry up 🔥🔥🔥 click here
GET · /api/v1/generations/{id}

Read a generation.

Returns the current status of a generation you submitted. Use this to poll until the job finishes and the output_url is ready.

Request

GET /api/v1/generations/5b91a581-ee19-4f86-9fea-bd29471d69d5 HTTP/1.1
Host: vivix-atelier.vercel.app
Authorization: Bearer vvx_live_…

Path params

FieldTypeNotes
idstring (uuid)The generation_id returned by /api/v1/generate.

Response · pending

While the job is in the queue or rendering:

HTTP/1.1 200 OK
{
  "generation_id":    "5b91a581-ee19-4f86-9fea-bd29471d69d5",
  "status":           "processing",
  "model":            "grok-imagine-image-quality",
  "credits_estimate": 211,
  "elapsed_ms":       4200,
  "created_at":       "2026-05-10T12:34:56Z"
}

Response · completed

HTTP/1.1 200 OK
{
  "generation_id": "5b91a581-ee19-4f86-9fea-bd29471d69d5",
  "status":        "completed",
  "model":         "grok-imagine-image-quality",
  "output_url":    "https://pub-364da8d08c644542b169fbc7255349e7.r2.dev/5b91a581-ee19-4f86-9fea-bd29471d69d5.jpg",
  "output_urls":   ["https://pub-…/5b91a581-ee19-4f86-9fea-bd29471d69d5.jpg"],
  "credits_used":  211,
  "duration_ms":   12420,
  "created_at":    "2026-05-10T12:34:56Z",
  "completed_at":  "2026-05-10T12:35:08Z"
}

output_url is the primary asset; output_urls is the full set when you requested number_results > 1 on an image model. Both are public R2 URLs — fetch without auth.

Response · failed

HTTP/1.1 200 OK
{
  "generation_id": "5b91a581-ee19-4f86-9fea-bd29471d69d5",
  "status":        "failed",
  "error":         "PROVIDER_ERROR",
  "message":       "Underlying model returned an error.",
  "credits_used":  0,
  "created_at":    "2026-05-10T12:34:56Z",
  "completed_at":  "2026-05-10T12:35:01Z"
}

Failed jobs refundthe credit charge automatically — you're only billed for completed work. Retry with the same body if it was transient (rate-limit on the provider side, network blip).

Status values

StatusMeaning
pendingQueued. Will pick up within a few seconds usually.
processingActively rendering on the underlying provider.
completedDone. output_url is set.
failedErrored. credits_used = 0; refund already applied.
Recommended polling interval: 2 seconds for image, 4 secondsfor video. Polling counts against your rate limit (240/min Pro, 600/min Ultimate) — at 2s intervals you'll burn 30 calls/min just polling, which is well within budget.

Errors

  • 401 KEY_INVALID — bad key
  • 403 NOT_YOURS — the generation_id belongs to a different account
  • 404 NOT_FOUND — no generation with that id exists (or it's older than the retention window)

Where to next