Reference

Rate limits and credits

Three things can slow you down: how often a key calls the API, how many generations Rogue runs at once, and how many credits the account has. Here is how each one works.

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:

Response headers
HTTP/1.1 200 OK
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-Request-Id: req_4f1a9c2e7b3d4e5f8a6b7c8d9e0f1a2b

Past 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"
Response
{
  "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"
Response
{
  "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

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 429 and 503, wait for Retry-After seconds before retrying.
  • Reuse the same Idempotency-Key when 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.