Errors
The DiscoLike API uses conventional HTTP response codes to indicate success or failure of requests.
| Error Code | Meaning |
|---|---|
| 400 | Bad Request — The request could not be processed against your data or the input you sent |
| 401 | Unauthorized — Your API key is wrong |
| 403 | Forbidden — You don’t have access to this resource |
| 404 | Not Found — The specified resource could not be found |
| 422 | Unprocessable Entity — The request failed parameter validation |
| 429 | Too Many Requests — You’re making too many requests |
| 500 | Internal Server Error — We had a problem with our server |
| 503 | Service Unavailable — We’re temporarily offline for maintenance |
422 vs 400
Section titled “422 vs 400”Every rule about the shape of a request (required parameters, lengths, list sizes, numeric ranges, enum values, date formats, URL and UUID formats, unknown parameters) is checked before the request is processed and fails with 422. The body is the standard FastAPI validation shape: a detail array with one entry per failing field, giving the field location, a message, and an error type.
{ "detail": [ { "loc": ["query", "max_records"], "msg": "Input should be greater than or equal to 5", "type": "greater_than_equal" } ]}400 is reserved for checks that can only run once the request is being processed: a value that fails domain normalization (Invalid Domain), a check against a stored record (for example changing a provider’s endpoint without supplying a new API key), a custom base_url that resolves to a private address, an uploaded file that cannot be parsed or exceeds its row limit, and business rules such as an exclusion list that is too small. The body is a plain string:
{ "detail": "Invalid Domain : hubspot" }If you previously matched on 400 for length, range, or enum failures, match on 422 instead. Each endpoint page lists its validation rules.
Endpoints that take query parameters (/count, /discover, /contacts, /contacts/count, /contacts/match, /match, /bulkmatch, /append, and others) reject unknown parameters with 422 and an extra_forbidden detail, so typos are surfaced rather than silently ignored. Documented deprecated aliases (e.g. exact_match → phrase_match, vendor → tech_stack, nl_match → icp_text) continue to work for backward compatibility.