Skip to main content
The Varo Cloud API gives you programmatic access to the same models you can run in the dashboard. One endpoint runs every model on the platform: you submit a generation with a model and its inputs, then poll it until the result is ready. There are no projects, environments, or deployments to manage — just models and the generations you create with them.

Base URL

All API requests are made over HTTPS to the following base URL:
Every endpoint path is appended directly to this base. Here is a minimal example that creates a generation:

Authentication

Every request must include your API key as a bearer token in the Authorization header. Keys start with sk_live_ and are created from the API Keys page in your dashboard.
See Authentication for how to create, store, and manage keys.

The generation lifecycle

Generations run asynchronously. Rather than blocking until a model finishes — which can take seconds to minutes — the API splits the work into two calls:
1

Create a generation

POST /v1/generations with a model and its inputs. The response returns immediately with an id and an initial status (such as queued).
2

Poll for the result

GET /v1/generations/{id} until status becomes completed (or succeeded). When it does, output.url points to your finished asset. If status is failed, read error.message.
The Get Started guide walks through this end to end with runnable cURL, Node.js, and Python examples.

Versioning

The current API version is v1, reflected in the base URL path. When Varo Cloud introduces changes that would break existing integrations — such as removing a field, changing a field’s type, or altering existing behavior — a new version prefix (e.g., /v2) will be released and the previous version will continue to work during a deprecation window. Non-breaking additions, including new optional fields on existing responses and entirely new endpoints, are rolled out without a version bump. Write your integration to ignore unknown fields so these additions do not affect your code.

Request format

Send request bodies as JSON and include the Content-Type: application/json header on every request that has a body. All responses are JSON as well.

Response format

A generation is returned as a flat JSON object. The fields you’ll use most are status, output, and usage:
When a request fails, the API returns an error object instead. See Errors for the full format and status codes.

Rate limits

API keys are subject to rate limits. When you exceed your limit, the API returns a 429 Too Many Requests response — read the X-RateLimit-Reset header for the Unix timestamp when your quota resets, and wait until then before retrying. If you need a higher limit for production workloads, contact Varo Cloud support.
See the Errors page for retry guidance and a backoff helper.