Fire a request, keep working. Bruno does the heavy lifting on a queue and calls your webhook when each asset is ready — no long-polling, no blocked requests.
Создайте API-ключ в аккаунте и храните его в BRUNO_KEY, не в коде.
Сделайте endpoint идемпотентным, проверяйте подпись и отвечайте 2xx как можно быстрее.
Сразу после 202 Accepted продолжайте процесс, не ждите результат в том же запросе.
Проверяйте /v1/balance и лимиты тарифа, чтобы избежать 402 payment_required.
Get a key, POST a job, plug in a webhook. Full step-by-step in the docs.
POST a job with your prompt and settings. You instantly get a job id and a 202.
The pipeline runs each stage on the queue with retries. You stay unblocked.
We call your endpoint per stage. Payloads are signed & idempotent. Return 2xx fast.
| POST | /v1/assets | Queue a new asset generation |
| GET | /v1/assets/:id | Job status & stage progress |
| GET | /v1/assets/:id/result | Signed download URLs (WebP/GIF/MP4/WebM/PNG sheet) + meta |
| POST | /v1/assets/:id/approve | Approve a paused stage in manual mode |
| POST | /v1/assets/:id/cancel | Cancel a running job |
| POST | /v1/motion | Upload a motion clip (characters only) |
| GET | /v1/balance | Current balance & usage |
Full schema in docs. Each endpoint accepts the same payload via REST or MCP.
POST /v1/assets{
"type": "character",
"subtype": "runner",
"prompt": "neon samurai, orange hakama",
"actions": ["run", "melee"],
"formats": ["webp", "mp4"],
"webhook": "https://you.dev/hooks/bruno"
}
202{
"job": "job_8fK2a91",
"status": "queued",
"accepted_at": "2026-05-23T19:42:00Z"
}
{
"event": "asset.stage.completed",
"job": "job_8fK2a91",
"stage": "render",
"status": "done",
"request_id": "req_991bc",
"signature": "t=1716493320,v1=..."
}
GET /v1/assets/:id/result{
"job": "job_8fK2a91",
"status": "completed",
"result": {
"webp": "https://cdn.brunoapi.com/.../sprite.webp",
"mp4": "https://cdn.brunoapi.com/.../preview.mp4"
}
}
PNG atlas for game engines and pipelines.
Lightweight loop for web storefront previews.
Shareable clip for social and product pages.
Alternative video format for modern browsers.
Generation lives behind a subscription. Every tier includes a monthly quota; anything above is just $3 per asset (and that price drops on bigger plans).
A job created through the REST or MCP API counts against the API key's owner subscription. No active plan → API calls return 402 payment_required.