Errors & Caching
Error codes, response format, and caching behavior
Error Responses
All errors return a JSON body with error type and message.
| Status | Type | Description |
|---|---|---|
400 | invalid_parameter | Invalid ticker, timeframe, or parameter value |
401 | unauthorized | Missing or invalid Bearer token |
403 | tier_restricted | Endpoint requires a higher tier. Includes upgrade_url |
404 | not_found | Ticker not in supported universe |
429 | rate_limit_exceeded | Daily request limit reached. Includes upgrade_url and reset time |
500 | internal_error | Server error |
503 | data_unavailable | Data feed temporarily unavailable |
Example Error
{
"error": "tier_restricted",
"message": "GET /v1/summary requires Plus or Pro plan.",
"upgrade_url": "https://tickerapi.ai/pricing"
}
Response Caching
All data is pre-computed after market close. Responses are cached and served from edge.
- Daily timeframe: Refreshes after market close (~5:15 PM ET)
- Weekly timeframe: Refreshes after Friday close
- Cache-Control + ETag headers are included for conditional requests
- 304 Not Modified responses do not count against request limits
Conditional Requests
Use the ETag header from responses to make conditional requests with If-None-Match. If data hasn't changed, you'll get a 304 that doesn't count against your limit.