Get started
Limits and errors
Plan limits
| Free | Pro | Team | |
|---|---|---|---|
| API calls a month | 100 | 10,000 | 100,000 |
| Results a month | 50 | 2,500 | 25,000 |
| Results per page | 25 | 100 | 100 |
| Pages per query | 2 | 40 | 40 |
| Firms per overlap | 2 | 5 | 20 |
| Natural language questions a day | 5 | 100 | 500 |
| Webhooks | – | – | 10 |
A call counts once, whatever it returns. A result is one record returned: a firm, a company, a round, an event. Requests that fail with a 4xx or 5xx count neither. At either limit the API answers 429 until the 1st of next month: there are never overage charges. Compare plans.
Headers
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Calls a month on your plan. |
X-RateLimit-Remaining | Calls left this month, after this one. |
x-asks-remaining | On /v1/search: natural language questions left today. |
Errors
Every error has the same shape, with a stable code to branch on and a message for people.
Response
404{
"error": {
"code": "firm_not_found",
"message": "No firm with that id, slug or domain in the published catalog. This says nothing about whether the firm exists."
}
}| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_query | q needs at least three characters. |
| 400 | invalid_input | A field of the fit request is missing or not valid. The message names it. |
| 400 | invalid_event_type | One of the event types does not exist. |
| 400 | invalid_since | since is not an ISO 8601 date. |
| 400 | invalid_kind | Not one of the news kinds. round is not a filter: funding data is Fundup AI's. |
| 400 | too_few_firms | An overlap needs at least two firms. |
| 400 | invalid_url | A webhook URL must be https, on a public host and the default port. |
| 400 | invalid_event_types | A webhook event type is not one of the deliverable types. |
| 400 | invalid_firms | firms must be a list of up to 500 slugs or domains. |
| 400 | unknown_firm | A webhook firm is not in the published catalog. |
| 401 | missing_api_key | No key was sent. |
| 401 | invalid_api_key | The key is not valid, or it was revoked. |
| 403 | plan_required | This needs a paid plan. |
| 403 | limit_reached | You have as many webhooks as your plan allows. |
| 404 | firm_not_found | No published firm matches. This says nothing about whether the firm exists. |
| 404 | company_not_found | No published company has that domain. This says nothing about who backs it. |
| 404 | not_found | No such endpoint or webhook. |
| 410 | funding_data_moved | A round endpoint that was retired. Funding data is Fundup AI's: fundup_url says where to go. |
| 429 | quota_exceeded | This month's calls are used up. Calls resume on the 1st, with no charge. |
| 429 | results_quota_exceeded | This month's results are used up. |
| 429 | depth_limit | The cursor goes past your plan's pages per query. Narrow the query with filters. |
| 429 | too_many_firms | More firms in an overlap than your plan compares. |
| 429 | rate_limited | More than 120 calls a minute across an account's keys. Wait a minute and retry; refused calls do not use quota. |
| 429 | ask_limit | Today's natural language questions are used up. The count resets at midnight UTC. |
| 500 | internal_error | Something went wrong on our side. Retry with backoff. |
Retrying
Retry a 500 with backoff. A 429 with rate_limited clears within a minute. Do not retry a 429 with quota_exceeded or results_quota_exceeded: it lasts until the month resets. A 404 on a firm or company means it is not in the published catalog, not that it does not exist.