Skip to main content
Whether you got a 200 with data, a 4xx validation error, or a 5xx downstream failure, the response body has the same outer shape: request_id at the top level, plus either data (on success) or error (on failure).

Success

{
  "request_id": "e35321ccab165d147bd584900966dc16",
  "data": { /* endpoint-specific payload */ }
}

Error

{
  "request_id": "43c5ad17b9e660b4d463b512e2bf2346",
  "error": {
    "code": "request_invalid",
    "message": "brand_id and branch_id must be passed together or omitted together",
    "details": { /* optional, per-error */ }
  }
}
error.code is a stable machine-readable identifier — use it for branching in your code. error.message is human-readable and may be polished over time, so don’t pattern-match on it. request_id is in every response. Include it when you open a support ticket; it lets klikit pinpoint the exact request in our logs. Treat its format as opaque — the production format today is 32-char hex, but older paths and the development environment may return UUID-prefixed strings like req_e9f2b838-38e9-43ba-9e30-9b747da67d9f. Don’t validate it client-side.

Status code conventions

CodeMeaning
200, 201, 204Success
400Request invalid — body, headers, or query parameters didn’t validate
401Credentials missing, malformed, or revoked
403Authenticated but the credential lacks the required scope
404Resource not found, or not visible to this credential
409Conflict — most commonly an Idempotency-Key re-used with a different body
422Semantically invalid (e.g. status transition not allowed)
429Rate-limited — back off and retry
5xxKlikit-side failure. Retry with backoff; raise a ticket if it persists
A non-2xx response always has an error object. A 2xx response always has a data field (it may be null, {}, or []).

Pagination — note the inconsistency

Endpoints that return lists wrap their data in a paginated object with page, size, and total. The key holding the actual items varies by endpoint:
EndpointItems live under
GET /ordersdata.orders
GET /branchesdata.results
GET /brandsdata[0].brands (legacy shape — data is an outer array)
This is an artefact of partner-api forwarding to multiple backend services that each have their own conventions. We don’t normalise — what you see in the API Reference is what the service returns. Treat the shape per endpoint, not in general.