Limits and Errors
Pricing plans, limits, error codes.
Pricing plans
| Plan | Price | Results per request | Requests per minute | Video |
|---|---|---|---|---|
| Free | $0 | 5 | 5 | No |
| Starter | $99 / month | 50 | 500 | No |
| Pro | $499 / month | 50 | 2,000 | Yes |
| Scale | $1,499 / month | 200 | 8,000 | Yes |
Results per request is the maximum limit for one POST /v1/stream call. A higher limit returns 400.
Requests per minute is counted per API key over a rolling minute. An exhausted key returns 429.
Video (video_url, and therefore 360° playback) requires Pro or Scale. Free keys search public imagery.
Manage your plan in Billing.
Errors
Failed requests return a JSON body with isSuccess: false:
JSON
{
"isSuccess": false,
"error": "Rate limit exceeded for Free. Try again in a minute.",
"status": 429
}| Status | Name | When | What to do |
|---|---|---|---|
| 400 | Bad Request | Invalid body, or limit above your plan's cap | Fix the request; keep limit within your plan |
| 401 | Unauthorized | Missing, malformed, or revoked API key | Check the Authorization header and the key |
| 402 | Payment Required | Your plan is inactive or a payment failed | Update payment in Billing |
| 404 | Not Found | A resource, such as a result_id, does not exist | Use an ID returned by a previous search |
| 429 | Too Many Requests | Rate limit exceeded for your plan | Honor Retry-After, then back off exponentially, or upgrade |
| 5xx | Service Error | Temporary failure on our side | Retry with exponential backoff |