Paxvel Developers
DocsAPI referenceConsole Sign in Request access

Errors and limits

Error format

Errors use standard HTTP status codes and a consistent body:

{
  "error": {
    "code": "invalid_request",
    "message": "Request is not valid.",
    "details": { "date": "Must be between today and 400 days ahead." }
  },
  "request_id": "a91f03c2d4e5b6f7"
}

Use error.code in your code — message may change. details lists the fields that need fixing.

HTTPerror.codeMeaningRetry?
400invalid_jsonThe body is not valid JSON.No — fix the request.
401unauthorizedMissing or invalid key.No.
403forbidden / ip_not_allowedAccount not active, live not approved, or IP not allowed.No.
404not_foundUnknown endpoint or booking.No.
405method_not_allowedWrong HTTP method.No.
409not_cancellableAlready cancelled or completed.No.
409not_offeredNo open offer on this booking (accept / decline).No.
409not_instantinstant_only was requested (or your account is instant-only) and the booking cannot be confirmed instantly. Nothing was created; error.details.reason is no_price, short_notice or credit_limit.No — offer another vehicle or time.
409idempotency_conflictThe Idempotency-Key was used with a different body.No — use a new key.
409request_in_progressThe same Idempotency-Key is still being processed.Yes, after a second.
410offer_expiredThe offer is older than 30 minutes.Quote again.
413payload_too_largeBody larger than 64 KB.No.
415unsupported_media_typeMissing Content-Type: application/json.No.
422invalid_request / invalid_offerValidation failed; see details.No — fix the request.
429rate_limitedToo many requests.Yes, after Retry-After seconds.
500server_errorUnexpected error on our side.Yes, with backoff. Contact us with the request_id if it persists.

Rate limits

Each key may send 120 requests per minute by default. Every response carries:

HeaderMeaning
X-RateLimit-LimitRequests allowed per minute.
X-RateLimit-RemainingRequests left in the current minute.
Retry-AfterOn 429: seconds to wait.

If you need a higher limit, ask us under Questions. Cache what does not change often: GET /vehicle-types and GET /locations results can be cached for a day.

Idempotency

Networks fail. To retry a POST safely, send an Idempotency-Key header (1–80 characters: letters, digits, - _ : .), for example your order number:

Idempotency-Key: order-10045

Timeouts

Most requests complete in well under a second; quotes that include partner availability can take up to 10 seconds. Set your client timeout to 30 seconds, and when a POST /bookings times out, retry it with the same Idempotency-Key.

Versioning

This is version 1 (/api/v1). Within v1 we only make backwards-compatible changes: new endpoints, new optional request fields, new response fields and new enum values. Make your code tolerant of unknown fields and values. Breaking changes will come in a new version, announced well in advance.