GET /v1/status
- Updated
- Reading time
- 2 min
On this page
The snapshot to check before sending a batch, and the first thing to look at when your jobs are queuing. It answers one question: can a given model take work right now? The capacity figures describe Revoye Cloud as a whole; the queue figures are yours alone.
curl $REVOYE_BASE_URL/v1/status \
-H "Authorization: Bearer $REVOYE_API_KEY"{
"agents": { "total": 7, "idle": 3, "busy": 2, "error": 0, "offline": 2 },
"providers": [
{
"kind": "chatgpt",
"enabled": true,
"agents_idle": 2,
"rate_limit_per_hour": 60,
"used_this_hour": 14
},
{
"kind": "deepseek",
"enabled": true,
"agents_idle": 1,
"rate_limit_per_hour": null,
"used_this_hour": 3
}
],
"queue": { "depth": 4, "oldest_queued_at": "2026-09-18T09:12:00.000Z" }
}Reading it
"Agents" are the processing capacity Revoye Cloud has for each model: each one works on one job at a time.
| Field | Means |
|---|---|
agents.total | All processing capacity across every model |
agents.idle / busy / error / offline | How much of it is free, working, unavailable because of an error, or not currently running. The four add up to total |
providers[].kind | The model: chatgpt, claude, gemini, deepseek, qwen or perplexity |
providers[].enabled | Whether the model is accepting work at all. Disabled models are listed here but omitted from /v1/models |
providers[].agents_idle | Capacity that could start a job for this model right now. Narrower than agents.idle — it counts only capacity that is idle and ready to take work |
providers[].rate_limit_per_hour | How many jobs the model can start per hour. null means no hourly limit |
providers[].used_this_hour | Jobs already counted against that limit this hour |
queue.depth | Your jobs waiting to start |
queue.oldest_queued_at | When your oldest waiting job was submitted, or null. The single best signal that you are sending faster than capacity allows |
agents_idle of zero is not an error. It is a description of capacity at this instant. Jobs
sent now wait in the queue and start when capacity frees up or the hourly window resets.
Using it well
As a pre-flight check. Before a batch, confirm the model you want is enabled, has
agents_idle > 0 or at least busy capacity, and has headroom between used_this_hour and
rate_limit_per_hour. If it has none, either queue with a callback_url and let the work run when
it can, or spread the batch across models by omitting provider.
As a capacity signal. A queue.depth that grows while oldest_queued_at gets older means you
are submitting faster than the model can serve. Send less at once, or let Revoye Cloud choose the
model — more retries will not help.
Not as a lock. The snapshot is true when it is generated and can be stale by the time you act on
it — capacity idle a moment ago may already be busy. Treat it as a hint and handle
NO_AGENT_AVAILABLE anyway.
Not in a tight loop. Polling status per request spends your read rate limit for nothing. Poll on a schedule you actually need — once a minute is plenty for a dashboard — and let the errors tell you the rest.
Requires status:read.