Search documentation

Search across all documentation pages

Get API Key
Concepts

Errors

How the Zenode API reports errors — the uniform error object, the type values, and how partial failures work in batch requests.

Errors use a uniform envelope with an appropriate HTTP status:

JSON
1{
2 "error": {
3 "type": "invalid_request",
4 "message": "Field 'query' is required.",
5 "param": "query",
6 "request_id": "req_8f3a..."
7 }
8}
typeHTTPMeaning
invalid_request400Malformed body or bad parameters
authentication_error401Missing or invalid API key
permission_error403Key lacks the required scope
not_found404The resource does not exist
rate_limit_exceeded429Too many requests — see Rate limits
server_error5xxA Zenode-side failure

param is present when a specific field caused the error. Every response — success or error — includes a request_id (also in the X-Request-Id header); quote it when contacting support.

Rate limiting

Authenticated /v1 responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset on every response. When the per-minute throttle is exceeded, the response is 429 and also includes Retry-After (seconds to wait):

JSON
1{
2 "error": {
3 "type": "rate_limit_exceeded",
4 "message": "Rate limit exceeded. Try again later.",
5 "request_id": "req_8f3a..."
6 }
7}

REST can also return 429 rate_limit_exceeded when the monthly anti-abuse request cap is hit ("Monthly API request limit reached."). See Rate limits & usage for limits, header semantics, and how rate limiting differs from usage billing.

Partial failures in batches

Batch endpoints return 200 even when individual lines fail. Inspect each line: a failed line carries a per-line error (the same envelope, minus request_id) while its neighbors succeed. A non-2xx status is reserved for whole-request failures — authentication, malformed JSON, exceeding the batch cap, or rate limiting.

Next