One call generates.
The same models, the same prices, the same ledger — reachable from your own code.
POST https://vistreo.saascode.ai/api/v1/connect/generate Authorization: Bearer vistreo_live_••••••••4a2f content-type: application/json { "modality": "image", "model_slug": "your-model-slug", "prompt": "a dancer mid-leap on a rooftop at dusk" }{ "ok": true, "result": { "job_id": "…", "state": "reserved", "modality": "image", "model_slug": "your-model-slug", "credits_reserved": …, "estimated_seconds": 12 } }
The whole studio.
POST /api/v1/connect/generateImage, video or audio — one verb, the modality is a field.GET /api/jobs/{id}The state machine, event by event, same as the app shows.POST your callbackWe call you when the job lands, so you do not poll.GET /api/modelsThe live catalog with each model's price in credits.GET /api/credits/ledgerThe ledger, entry by entry, including refunds.MCP connect_generateThe same verb as an MCP tool, for an agent that already speaks it.// on the request "callback_url": "https://your-app.example/hooks/generation" // on delivery POST https://your-app.example/hooks/generation x-vistreo-signature: sha256=<HMAC-SHA256 of the raw body, keyed with your secret> x-vistreo-event: job.completed content-type: application/json
The signature is computed over the raw body, so you verify it the way you would any webhook. Delivery is best-effort and never blocks the job: a job's state is always readable at GET /api/jobs/{id}.
A key takes one click.
Create it in settings, choose read or write, copy it once. No application, no approval.
Get a keyvistreo_live_••••••••4a2fShown in full once, at creation. Masked everywhere after that.
Which plans include it
The API is a plan capability and it runs at the plan's own concurrency. A plan that does not include it yet is shown, not hidden.
Create with Vistreo MCP in Claude and Codex
The same generate call, as a tool inside your AI client. Connect once with a personal API key; every generation is priced and debited exactly as it is in the studio, and lands in your library with its lineage.
export VISTREO_API_KEY=vk_... # a write-scope key from Settings > API keys claude mcp add --transport http vistreo https://vistreo.saascode.ai/api/mcp --header "Authorization: Bearer $VISTREO_API_KEY"
# ~/.codex/config.toml [mcp_servers.vistreo] url = "https://vistreo.saascode.ai/api/mcp" bearer_token_env_var = "VISTREO_API_KEY"
The key stays in an environment variable, never in the config you paste. Product API is included on Pro and Studio; the tool is connect_generate.
Get a keySame credits. Same ledger.
A call from your code and a press of Generate write the same kind of entry — debited before the provider, returned in full if it fails.
Identical in shape, because they are the same thing. There is no API balance and no API rate.