Reference
Rate limits and credits
Requests per key
Each key may make 120 requests per minute by default, counted in fixed one-minute windows. Every authenticated response tells you where you stand:
HTTP/1.1 200 OK
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-Request-Id: req_4f1a9c2e7b3d4e5f8a6b7c8d9e0f1a2bPast the limit, requests answer 429 rate_limited with Retry-After set to the seconds until the window resets. Long polls (?wait=60) count as one request each, however long they wait.
We also pace the calls we make to Rogue for your account. Short bursts are smoothed out rather than refused, so a busy minute may be a little slower.
Concurrent generations
Rogue runs a limited number of generations per account at the same time, with separate limits for images, edits and videos (extensions count as videos). You never hit that limit directly: extra generations wait in our queue as queued and start as soon as a slot frees up.
curl "https://rogue-api.sentryq-va.com/v1/account/limits" \
-H "Authorization: Bearer $ROGUE_API_KEY"{
"object": "limits",
"overall": {
"limit": 2,
"running": 1
},
"image": {
"limit": 2,
"running": 1,
"queued": 6
},
"edit": {
"limit": 1,
"running": 0,
"queued": 0
},
"video": {
"limit": 1,
"running": 0,
"queued": 2
}
}In rare cases Rogue itself refuses because of this limit; that surfaces as 429 queue_full with a Retry-After.
Credits
Generations spend the credits of the Rogue account behind the key, at Rogue's own prices. The cost is fixed when the generation is created and shown in cost.credits. Grabbing frames and every read are free.
Checking the balance
curl "https://rogue-api.sentryq-va.com/v1/account/balance" \
-H "Authorization: Bearer $ROGUE_API_KEY"{
"object": "balance",
"balance": 1000,
"monthly": 600,
"lifetime": 400,
"monthly_allowance": 2000,
"next_refill": "2026-10-01T00:00:00Z"
}balance is what you can spend now: the monthly credits that come with your plan plus the lifetime credits you bought. next_refill is when the monthly credits renew.
Before you spend
- POST /v1/estimate prices a request without running it and says whether the balance covers it.
- A generation the account cannot afford answers 402 insufficient_credits and is not queued.
Daily budgets per key
Give a key a daily credit budget when you create it in the console. Before each generation we add its cost to what the key has committed since 00:00 UTC; if the total would pass the budget, the request answers 403 budget_exceeded. Failed and canceled generations do not count.
Budgets for agents
Always give MCP clients and automated scripts a key with a budget. A prompt loop then stops at a cost you chose, not when the account is empty.
Handling limits well
- On
429and503, wait forRetry-Afterseconds before retrying. - Reuse the same
Idempotency-Keywhen you retry a POST, so nothing runs or is charged twice. - Submit batches freely and follow them with webhooks instead of polling each job in a tight loop.
- Use one key per app or agent, so each gets its own request allowance and budget.