Rate Limits and Quotas
Your rate limit is the number of requests you can send per minute. If you exceed it, the API returns 429 Too Many Requests.
Your plan sets your request limit. Check the table below.
Rate limits
Limits apply per account to requests sent in the previous minute. All live keys share this limit; creating more keys does not increase it. Test keys (api_test_) have a separate limit.
| Plan | Rate limit |
|---|---|
| Free | 10 requests per minute, results limited to the first 5 pages |
| Starter / Basic / Professional | 50 requests per minute |
| Corporate | 200 requests per minute |
Starter, Basic and Professional allow 50 requests per minute. Their quotas and features differ. Corporate allows 200 requests per minute. On Free, requesting page 6 or later returns 400 ER0173.
Exceeding the limit returns 429 ER0203. Repeated violations can temporarily block your key. While blocked, requests return 429 ER0204.
Results per page
Your plan also limits per_page, the number of results per page. The default is 100 or your plan's maximum, whichever is lower. Without per_page, Free returns 10 articles and Starter returns 50.
| Plan | Max per_page |
|---|---|
| Free | 10 |
| Starter | 50 |
| Basic | 200 |
| Professional | 250 |
| Corporate | 250 |
If per_page exceeds your plan's maximum, the API returns 400 ER0171. The error message states the allowed value (Limit is out of range. Your plan allows up to 10 results per page.).
On Free, you can access 5 pages of 10 articles: at most 50 articles per search.
Title search window
Title searches can cover at most 31 days of published_at per request. This limit applies to all plans and endpoints, including exports, SSE and WebSocket. It covers title, title_starts_with, title_ends_with, title_pattern and query.
| Request | Result |
|---|---|
Title search without published_at.start / published_at.end | Last 31 days are searched. 200 with an ER0366 warning in meta.warnings and an x-query-window-clamped: 31 header |
| Title search with a range wider than 31 days | 400 with code ER0110 |
| Title search with a range of 31 days or less | Runs as requested |
| Any request without a title search | No range limit |
To search a longer period, split it into ranges of 31 days or less and send a separate request for each range. See Search window limit for examples.
Free plan delay
On Free, articles become available 12 hours after publication. The delay applies to searches, counts, trends, SSE, WebSocket and webhook delivery. Starter and higher plans have no added delay.
On Free, exports other than JSON and the Trends endpoint return 403 ER0706. See Plan gates for all features that require a paid plan.
Fact Check
Fact Check (/v1/fact-check) requires a paid plan and allows 10 requests per minute. This limit applies in addition to your plan's overall rate limit. Exceeding it returns 429 ER0203.
Natural language prompt
The prompt parameter is available on Basic and above. On Free and Starter it returns 403 ER0706 before the translation runs, so no points are spent.
| Plan | prompt |
|---|---|
| Free | No |
| Starter | No |
| Basic | Yes |
| Professional | Yes |
| Corporate | Yes |
The prompt parameter writes filters for you. You can also send those filters directly, including the boolean query parameter, without using prompt.
SSE Stream Connections
Each plan has a limit on the number of concurrent SSE stream connections:
| Plan | Max SSE Connections |
|---|---|
| Free | 0 |
| Starter | 2 |
| Basic | 2 |
| Professional | 10 |
| Corporate | 50 |
If you exceed the limit, the API will return a 429 error with code ER0360.
Monitoring Rate Limits
Read these response headers to track your request limit:
| Header | Description |
|---|---|
X-RateLimit-Limit | The maximum number of requests you can make in the current time window |
X-RateLimit-Remaining | The number of requests remaining in the current time window |
X-RateLimit-Reset | The number of seconds remaining until the rate limit resets |
Example (a paid plan with a 50 requests-per-minute limit):
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 49
X-RateLimit-Reset: 32Account and quota headers
These response headers show your plan, remaining points and balance. You can read them without a separate /v1/balance request:
| Header | Description |
|---|---|
X-Subscription-Plan | The key's plan (free, starter, basic, professional, corporate) |
X-Points-Remaining | Points left in the current quota period |
X-Balance-Remaining | Prepaid pay-as-you-go balance left, in cents |
X-Budget-Remaining | Cents left in this month's PAYG spending limit — only present when a limit is set |
X-Apitube-Mode | live or test, so an SDK never has to parse the test marker out of the content |
X-Request-ID | Unique id of the request — quote it when contacting support |
When X-Points-Remaining reaches 0, the next request returns 402 ER0176. When X-Budget-Remaining reaches 0, requests billed to your balance return 402 ER0177. Check these headers to stop requests before a limit is reached.
X-Subscription-Plan: basic
X-Points-Remaining: 48500
X-Balance-Remaining: 0
X-Apitube-Mode: live
X-Request-ID: e5efb02a-d9bd-45e7-8264-829167dd4842Spending your pay-as-you-go balance
To pay for requests beyond your plan quota, turn on balance spending in the dashboard. The switch is on the Pay as you go page and under Account → Plan & usage. It is off by default. Only the workspace owner can change it.
With balance spending off, requests beyond your quota return 402 ER0176. This applies to REST, SSE, WebSocket and webhooks. With it on, requests use your plan quota first, then your balance at $0.01 per request.
X-Balance-Remaining shows the money in your account even when balance spending is off. A positive balance also removes Free plan restrictions. The switch only controls whether requests can spend that money.
Pay-as-you-go spending limit
Set a monthly spending limit in the dashboard to cap spending from your prepaid balance. It resets at the start of each calendar month in UTC.
When a limit is configured, every response includes the remaining budget for the current month:
| Header | Description |
|---|---|
X-Budget-Remaining | Remaining monthly pay-as-you-go budget, in cents. Present only when a limit is set. |
Example (50000 cents = $500 left this month):
X-Budget-Remaining: 50000When you reach the monthly limit, requests charged to your balance return 402 ER0177. You can wait until the next month or raise or remove the limit in the dashboard. Requests covered by your plan quota still work.