Developer docs
Errors
Handle validation, retry, pricing, and rate-limit responses.
Errors
Entrega returns JSON problem responses with
type
,
title
,
status
, and
detail
. Some validation errors include an
error
code or an
errors
array.
Common status codes
| Status | Meaning | Retry |
|---|---|---|
400
| Malformed request. | No |
401
| Missing or invalid key. | No |
403
| Wrong key type or untrusted widget origin. | No |
404
| Resource not found for this tenant. | No |
409
| Delivery cannot be cancelled in current state. | No |
422
| Validation, quote, or filter error. | No |
429
| Rate limit exceeded. | Yes, with backoff |
502
| Upstream courier service failed. | Yes |
503
| Courier service unavailable or not configured. | Yes |
Quote validation codes
| Code | Cause |
|---|---|
quote_id_required
|
Create delivery request omitted
quote_id
.
|
courier_fee_aoa_not_accepted
| Request tried to set courier pricing directly. |
quote_not_found
| Quote does not exist or belongs to another tenant. |
quote_expired
| Quote validity window has passed. |
quote_company_mismatch
|
company_id
does not match the quote.
|
quote_payload_mismatch
| Origin, destination, or parcel differs from the quote payload. |
Invalid filters
List filters return
422
when values are malformed.
json
{
"type": "https://api.entrega.ao/errors/unprocessable_entity",
"title": "Validation Error",
"status": 422,
"detail": "One or more query params are invalid",
"errors": [
{"param": "status", "reason": "unknown status value(s): banana"}
]
}
Retry guidance
Retry only transport failures,
429
,
502
, and
503
. Do not retry validation, auth, or quote mismatch errors without changing the request.