Limits and errors
How many calls you can make, how big answers can be, and what every error code means.
Allowances#
Limits are per connected app and reset at midnight UTC. Ask your assistant to call about to see what's left.
| Limit |
Amount |
| Tool calls per minute |
20 per connection |
| Tool calls per day |
300 per connection |
Analyst estimates (get_analyst_estimates) |
4 lookups a day per person, 8 a day across all members |
| Time per tool call |
100 seconds |
Analyst estimates share a small free data allowance, so ask for them once per company. Reported earnings
(get_market_data with dataset=earnings) don't count against it.
Answer size#
- A tool result stays under about 40 KB (roughly 10,000 tokens), so it never floods your assistant's context.
- Lists come in pages. Each result has
page.nextOffset; passing it back as offset continues exactly where the last
page stopped. Filings and transcript search use nextCursor instead.
- Long text (filings, earnings calls) comes in windows of up to 15,000 characters.
- If a page still doesn't fit, the result is trimmed, says so in
trimmed, and moves nextOffset back so nothing is
skipped.
Other bounds#
|
|
Companies per comparison (compare_companies, get_growth_quality) |
4 |
Periods per statement (get_financials) |
12 |
| Earnings calendar window |
63 days (400 for one ticker), from 120 days ago to 400 days ahead |
| EDGAR full-text search |
100 hits per SEC page, filings since 2001 |
Error codes#
Errors come back as a normal tool result with isError, a code and a plain message, so your assistant can explain
them.
| Code |
Meaning |
What to do |
not_found |
The company, filing or call isn't in the saved data |
Check the name with search_companies |
not_saved |
The company isn't in the saved universe |
Nothing to load; the website shows the same |
ambiguous |
Several issuers share that ticker |
Retry with the CIK the message lists |
invalid_input |
An argument is missing or wrong |
Fix it and retry |
rate_limited |
Too many calls this minute or today |
Wait retryAfterSeconds |
daily_allowance_used |
Today's analyst-estimate lookups are used |
Try after midnight UTC |
source_unavailable |
The upstream source is down or has no data |
Try later; nothing was invented |
source_rate_limited |
The upstream provider is rate limiting |
Try in a minute |
timeout |
The source took too long |
Ask for less, or retry |
result_too_large |
Too big even after trimming |
Ask for fewer rows or periods |
access_revoked |
This connection was disconnected |
Connect again |
service_unavailable |
The research server is briefly offline |
Try again in a few minutes |
HTTP responses#
| Status |
Meaning |
401 |
No sign-in, or it expired or was disconnected. Your app should offer to sign in again. |
503 |
The research server is briefly offline. Retry after the Retry-After seconds; your sign-in is still valid. |