Skip to main content
In a few minutes you’ll generate an image with the Voyager API and save it to disk.
Before you start: you need a Voyager API key from a paid plan (trials count) in the VOYAGER_API_KEY environment variable. See Authentication. The job is paid from your workspace’s Voyager credits; prices are on voyager.so/pricing.

The three calls

  1. Create a job with POST /v1/jobs. Send an Idempotency-Key so a retry never buys twice.
  2. Wait with GET /v1/jobs/{id}?wait=25. The server holds the request for up to 25 seconds and answers as soon as the job finishes. Repeat while the status is queued or running.
  3. Download outputs[].url, a signed link that works for 1 hour without your key.

Check it worked

You have an image file next to your script, and the job printed its credits. credits.charged is what the job cost. If credits.state is still pending, the final amount isn’t confirmed yet: credits.estimated is the estimate, and GET /v1/jobs/{id} will show the final charge later. See Credits.
For a fast model, add the header Prefer: wait=30 to the create request (up to 60 seconds). If the job finishes in time, the create response is 200 OK with the finished job and the loop in step 2 ends at once.

If something went wrong

The key is missing, mistyped or revoked. Check echo $VOYAGER_API_KEY starts with vy_live_, and that the key is still listed on voyager.so/dashboard/api.
The workspace isn’t on a paid plan, or doesn’t have enough Voyager credits for this job. Open error.details.upgrade_url. See Errors.
The input doesn’t match the model’s input_schema, or has a field the model doesn’t take. Read error.details, then check the schema with GET /v1/models/nano-banana-2.1. See Models.
Read job.error.code and look it up on Errors. A failed job releases its held credits unless its type’s settlement rule says otherwise.

Next

Jobs and polling

Statuses, credits, cancel, uploads and idempotency.

Models

Find video, speech, music and 3D models and their inputs.