orderId immediately,
then poll until the codes are ready.
Statuses
The order was accepted and is being fulfilled. Poll again after
estimatedReadyAt.All codes were delivered. The response includes
products[].pin.Some — but not all — codes were delivered. The response includes
delivered and total.No codes were delivered. The response includes a
reason.Codes are returned only when
status is completed. While processing, you receive
{"status": "processing", "message": "Order is still processing"}.The flow
Place the order
POST /orders returns 202 Accepted with orderId, status: "processing", and
estimatedReadyAt.Wait for the estimate
estimatedReadyAt tells you roughly when codes will be ready. It scales with the order
size — small orders are near-instant; large/bulk orders take longer.Bulk / B2B orders
There is no separate bulk endpoint. When you submit a large order, Kalixo automatically segments it across providers and returns anestimatedReadyAt sized to the quantity. Just
poll GET /orders/{reference} — while it works you’ll get “Order is still processing”, and
once finished you’ll get the codes.
Polling cadence
Poll at or after
estimatedReadyAt, then every minute or so. Avoid tight polling loops.Idempotency
Re-submitting the same
externalOrderCode returns the existing order — never a duplicate.Polling example
Node