Docs / For agents
Set a ceiling. Agents never spend past it.
One key in front of image, video, voice and text, on prepaid credit, with the spend limit enforced by the API rather than by the agent.
The ceiling
A limit is a parameter, not an instruction
The agent says what it wants and the most it may spend. Corent decides the rest.
tool: create{ "intent": "a 10-second vertical sunrise clip", "max_cost_cents": 50} → video-air · 9:16 · 10s · 44¢ billed
Ceiling 50¢
Checked before it spends
The ceiling is enforced server-side, so a looping agent cannot argue its way past it.
No model, no tier
The agent describes the outcome. The router picks the model and sets the parameters.
The charge comes back
meta.cost_cents rides on every successful response, and every request keeps a receipt.
MCP
One paste connects an agent
Hosted, or run the package locally. Either way the key stays server-side.
Hosted, nothing to install
https://mcp.corent.tech/mcp Streamable HTTP
Any MCP client, config file
"mcpServers": { "corent": { "command": "npx", "args": ["-y", "corent-mcp"], "env": { "CORENT_API_KEY": "co_live_..." } }}
| Tool | What it does | What it spends |
|---|---|---|
| plan | Previews what Corent would do for an intent, and what it would cost. | Nothing |
| create | Takes an intent and a max_cost_cents ceiling, decides everything, generates. | Up to the ceiling |
| list_models | The models an agent can pin by name, with live status and quality score. | Nothing |
HTTP
For agents that do not speak MCP
One request, one result, the cost on the response.
The request
curl -X POST \ https://api.corent.tech/v1/images/generate \ -H "Authorization: Bearer co_live_..." \ -H "Content-Type: application/json" \ -d '{ "prompt": "a matte black watch on marble", "tier": "air" }'
The response
{ "status": "completed", "images": [{ "url": "https://..." }], "meta": { "model": "image-air", "cost_cents": 2, "duration_ms": 1500 }}
Deciding what to generate on its own? Send the raw request to /v1/intent/execute with confirm_estimated_cost_cents_up_to, and Corent picks the tier conservatively rather than letting an agent reach for the most expensive one.
Reach
Four kinds of output, one balance
Same key, same credits, the exact charge returned every time.
| Output | Endpoint | What comes back | The charge |
|---|---|---|---|
| Image | POST /v1/images/generate | The image inline, usually. A slow render returns a job id instead. | meta.cost_cents, from 3¢ |
| Video | POST /v1/videos/generate | 202 and a job id. Read GET /v1/jobs/{id}/stream instead of polling. | On the job, from 18¢ a clip |
| Voice | POST /v1/audio/speech | The finished audio file, synchronously. | meta.cost_cents, 9¢ per 1,000 characters |
| Text | POST /v1/chat/completions | An OpenAI-compatible completion. Streaming and tool calls pass through. | corent.cost_cents, from 3¢ a response |
Budget
What stops a runaway loop
Six limits, every one of them outside the agent.
| Limit | What it does |
|---|---|
| Per-request ceiling | max_cost_cents on create, confirm_estimated_cost_cents_up_to over HTTP. Past it, Corent returns the plan and the estimate and spends nothing. |
| Per-key daily cap | New keys start at $10 a day, with a rate limit and a concurrent-job limit beside it. Raising a cap needs a dashboard login, so a leaked key cannot raise its own. |
| Prepaid balance | GET /v1/account/balance, in cents. Top up from $5 by card, $10 in crypto. No subscription. |
| Balance at zero | The request returns 402 and is not charged. Nothing generates until funds land. |
| Failed generations | Never billed, failover included. The receipt reads billed: false, cost_cents: 0. |
| Blind retries | Send an Idempotency-Key. A repeated key returns the original job instead of charging twice. |
Next
Two minutes in. Take a key.
Prepaid credits from $5. No subscription. Failed generations are never billed.