Partner API
Jul 14, 2026 4:05 PM

Errors and response codes

How the API reports errors: HTTP response codes, the error body format and handling recommendations for the integration side.

The API uses standard HTTP response codes. The error body is in the ProblemDetails format (RFC 7807, the ASP.NET Core standard).

HTTP codes

CodeMeaningWhen
200 OKSuccessThe request completed, the body contains the result
201 CreatedCreatedThe resource was created
400 Bad RequestValidation errorInvalid request body/parameters
401 UnauthorizedNot authenticatedThe token is missing, expired or invalid
402 Payment RequiredPayment requiredThe action is not available on the current plan/balance
403 ForbiddenNo permissionNo access to the restaurant or the action
404 Not FoundNot foundNo resource with this identifier
409 ConflictConflictDuplicate / state conflict (for example, creating the same thing twice)
410 GoneExpiredThe resource/code is no longer valid
423 LockedLockedThe resource is temporarily locked
429 Too Many RequestsToo frequentThe request limit was exceeded — back off
503 Service UnavailableUnavailableTemporarily unavailable — retry later

Error body format

An error response is a ProblemDetails object:

{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"detail": "Problem description",
"instance": "/api/rsv/admin/restaurants/123/reservations"
}
FieldTypeDescription
typestringLink to the problem type
titlestringShort error title
statusintegerHTTP code
detailstringDetailed description (if any)
instancestringPath of the request that caused the error

The object allows extra fields (additionalProperties) — for example, on validation errors an errors dictionary with a per-field breakdown may be present.

Handling recommendations

  • 401 — get a new token and retry the request. Do not treat 401 as “resource not found”.
  • 403 — check that the account has access to the given restaurantId.
  • 400 — read detail/errors; fix the request, do not retry it “as is”.
  • 404 — check the identifiers in the path (especially string reservation/guest IDs).
  • 409 — a duplicate is likely; before retrying, check whether the resource was already created (GET).
  • 429 / 503 — retry with exponential backoff, not immediately.

Retries

CodeRetry?How
429, 503YesExponential backoff (for example, 1s → 2s → 4s), with a cap on attempts
5xx (others)CarefullyOnly idempotent GETs; for POST — first check whether it was created
400, 401, 403, 404, 409NoThese are request/permission errors — retrying unchanged will not help

When retrying POST requests that create something, make sure you are not creating a duplicate — see Conventions → Idempotency.