Rate Limits & Errors

Understand API rate limits and how to handle error responses.

Rate Limits

API requests are rate limited to ensure fair usage and system stability.

EndpointLimitWindow
POST /deliveries100 requestsPer minute
GET /deliveries1000 requestsPer minute
GET /orders500 requestsPer minute
All endpoints10,000 requestsPer day

Rate Limit Headers

Every response includes headers to help you track your usage:

text
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1705330800

Error Handling

All errors follow a consistent format with type, code, and helpful message:

error-response.json
{
"error": {
"type": "validation_error",
"code": "invalid_address",
"message": "The pickup address could not be geocoded",
"param": "pickup.address",
"doc_url": "https://docs.send247.uk/errors/invalid_address"
}
}

Error Types

TypeDescription
validation_errorRequest parameters are invalid or missing
authentication_errorInvalid or missing API key
rate_limit_errorToo many requests, slow down
not_found_errorThe requested resource doesn't exist
conflict_errorAction conflicts with current state (e.g., cancelling delivered order)
server_errorSomething went wrong on our end

Common Error Codes

invalid_address

Address couldn't be geocoded

out_of_coverage

Address is outside service area

invalid_package_size

Package exceeds size limits

insufficient_balance

Account balance too low

duplicate_request

Same delivery already exists

delivery_not_cancellable

Delivery already picked up

💡 Pro Tip

Always implement exponential backoff when you receive a 429 rate limit error. Start with a 1-second delay and double it for each subsequent retry.