Skip to main content
Press ⌘K to search

Rate limits & errors

REST and MCP share a single daily request limit per account. Every response carries headers so you can track usage, and errors follow a consistent JSON shape.

Daily limits

One counter covers both the REST API and MCP tool calls. It resets at 00:00 UTC.

Plan Requests / day Scope
Free 100 REST + MCP combined
Pro 10,000 REST + MCP combined

Need more? Compare plans.

Rate-limit headers

Every counted response includes these headers:

Header Meaning
X-RateLimit-Limit Your plan's daily request limit.
X-RateLimit-Remaining Requests left today.
X-RateLimit-Reset Unix time (seconds) when the counter resets — next UTC midnight.
Retry-After Seconds to wait — sent only on a 429.

When you hit the limit

Over the limit, the REST API returns 429 Too Many Requests with the error envelope below. The MCP server instead returns a normal tool result whose text explains the limit and links to upgrade — so your agent can relay it in the conversation rather than surfacing an opaque transport error.

{ "error": { "code": "rate_limited", "message": "Daily call limit exceeded.", "status": 429 } }

Error format

Every non-2xx REST response uses the same envelope:

{
  "error": {
    "code": "not_found",
    "message": "Stock not found.",
    "status": 404
  }
}
Status Code Meaning
400 invalid_parameter A query parameter is missing or malformed.
401 unauthorized Missing or invalid API key.
403 forbidden Your plan doesn't allow this request.
404 not_found No matching resource.
429 rate_limited Daily limit exceeded — retry after reset.
500 internal_error Something went wrong on our side.