Errors
Errors use the standard problem details format (RFC 9457), with Content-Type: application/problem+json:
{
"type": "https://developers.nepzio.com/errors/validation_failed",
"title": "Unprocessable content",
"status": 422,
"detail": "Some fields are not valid; see errors.",
"code": "validation_failed",
"errors": [{ "field": "variants[0].price", "code": "invalid_money", "message": "variants[0].price must be whole rupees: a multiple of 100 paisa." }],
"request_id": "req_3f9a1c0b7d2e4a6b8c9d0e1f"
}
- Branch on
code. It is stable.detailandmessageare for people and may be reworded. errorslists problems with particular fields, by the name you sent (variants[0].price).request_id, also in theX-Request-Idheader of every response, identifies the request. Quote it when you contact us.- New codes may appear. Treat an unknown code by its HTTP status.
Status codes
| Status | Meaning |
|---|---|
| 400 | The request couldn't be read: a bad parameter, invalid JSON, an unknown field |
| 401 | No key, or the key isn't valid |
| 402 | The store's plan doesn't allow it (e.g. its product limit) |
| 403 | The key may not do this |
| 404 | Nothing with this id in your store, or no such endpoint |
| 405 | The endpoint doesn't take this HTTP method |
| 409 | Not possible in the current state |
| 415 | The body isn't JSON |
| 422 | The request was understood but some values aren't valid |
| 429 | Too many requests; wait for Retry-After |
| 500 | Something went wrong on our side; retry later |
Codes
authentication_required
No key was sent. Send Authorization: Bearer <key>.
invalid_api_key
The key isn't valid: unknown, revoked, expired after a roll, or the account is suspended.
browser_request_refused
The request came from a browser (it has an Origin header). Keys work only from a server.
insufficient_scope
The key lacks the scope named in the message. Add it in Settings → Developers.
forbidden
The key may not do this.
not_found
Nothing with this id in your store (or a malformed id), or no endpoint at this address.
method_not_allowed
The endpoint doesn't take this HTTP method. The Allow header lists those it does.
unsupported_media_type
Send the body as JSON with Content-Type: application/json.
invalid_request
The request couldn't be read, for example because the body isn't valid JSON.
invalid_parameter
A query parameter, header or body field isn't valid, or the body has a field the endpoint doesn't take. errors names it.
validation_failed
Some values aren't valid. errors names each field and says why.
insufficient_stock
The change would take stock below zero.
plan_limit_reached
The store's plan doesn't allow this, for example a new product beyond its product limit.
order_not_cancellable
The order can't be cancelled: it has shipped, or is already finished.
order_managed_elsewhere
The order came from a marketplace (Daraz, Amazon) and is managed there.
idempotency_key_in_use
A request with the same Idempotency-Key is still running. Retry shortly.
idempotency_key_reused
This Idempotency-Key was used for a different request. Use a new key per distinct request.
rate_limited
Too many requests. Wait for the seconds in Retry-After. See Rate limits.
internal_error
Something went wrong on our side. Retry later; if it keeps happening, contact us with the request_id.