Usage
How API calls count against your plan, and what your keys have been doing: totals, calls per day, and the latest calls with their request_ids.
01How calls are counted
Each call the API accepts uses one research run from your plan's monthly allowance: 3 on Free, 40 on Pro, 100 on Researcher. Runs started in the ResearchAnything app draw on the same allowance, and it resets each calendar month. The run is counted when the call is accepted, whether or not it then completes. See Limits.
Your profile page in ResearchAnything shows how many runs you have used this month. When none are left, calls fail with 429 and quota_exceeded, which reports the limit and how many you have used.
API calls are not billed per token. The token figures below are estimates for your own reference.
02Usage in the Console
The Usage page of the API Console, researchanything.ai/console/usage, shows your call history. It reads this endpoint:
It serves the Console in your signed-in browser session and doesn’t accept an API key.
A call is recorded when it finishes, with the key that made it. Calls refused for quota are recorded with status rejected. Calls made from the Console's Playground are recorded against the key you picked there. A stream closed before its final event is not recorded, though its research run is still used.
03Response shape
Three parts. summary totals every recorded call on your account, across all keys. daily counts calls per day. recent lists the latest calls.
summary
| Field | Type | Description |
|---|---|---|
| total_calls | number | All recorded calls, including rejected ones. |
| ok_calls | number | Calls whose run completed. |
| error_calls | number | Calls whose run ended with status: "error". |
| tokens_in | number | Sum of the per-call tokens_in estimates. |
| tokens_out | number | Sum of the per-call tokens_out estimates. |
| avg_latency_ms | number | Mean latency across recorded calls, in milliseconds. |
| last_24h | number | Calls in the last 24 hours. |
| last_7d | number | Calls in the last seven days. |
daily
An array of { "day", "calls" } entries for the last 14 days, oldest first, with day as YYYY-MM-DD. Only days with at least one call appear; fill in the gaps yourself if you plot it.
recent
The 25 most recent calls, newest first.
| Field | Type | Description |
|---|---|---|
| id | string | The usage record's id. Not the request_id. |
| key_id | string | The key that made the call. |
| key_name | string or null | That key's name. |
| query | string | The question, cut to its first 1,000 characters. |
| status | string | ok, error or rejected. |
| latency_ms | number | How long the call took. 0 for rejected calls. |
| tokens_in | number | Estimate, as in the response envelope. |
| tokens_out | number | Estimate, as in the response envelope. |
| request_id | string | The call's request_id. Open its run timeline in the Console. |
| created_at | string | ISO 8601 timestamp of when the call was recorded. |
04Example response
{
"summary": {
"total_calls": 38,
"ok_calls": 35,
"error_calls": 2,
"tokens_in": 612,
"tokens_out": 30150,
"avg_latency_ms": 96200,
"last_24h": 4,
"last_7d": 17
},
"daily": [
{ "day": "2026-09-22", "calls": 3 },
{ "day": "2026-09-25", "calls": 6 },
{ "day": "2026-09-28", "calls": 4 }
],
"recent": [
{
"id": "c1d2e3f4-…",
"key_id": "0b6f4c1e-2a7d-4e39-9f15-7c8d3e2a1b04",
"key_name": "prod-backend",
"query": "Compare GDPR and CCPA on the right to have personal data deleted.",
"status": "ok",
"latency_ms": 101482,
"tokens_in": 16,
"tokens_out": 840,
"request_id": "3f1c9a2e-7b4d-4e8a-9c61-2d5f0b8e4a17",
"created_at": "2026-09-28T14:23:49"
}
]
}