Nunua Pro Developers
Going live

Limits and errors

The limits every integration works within, and what each error means.

Limits

LimitValue
Rate600 requests a minute per shop key; 120 a minute per partner key. Over that you get 429 with Retry-After. Batch your writes.
Batch size200 products per /products/batch or snapshot call; 500 items per /inventory call.
VariationsUp to 100 variants and 3 options per product.
ValuesTZS only. Price 0 to 100 000 000; stock −100 000 000 to 100 000 000 (stored as 0 when negative). A row outside these is rejected on its own.

Idempotency

Send an Idempotency-Key header (any unique string, such as a UUID) on writes you might retry. The same key within 24 hours replays the first response instead of doing the work again, and the replay carries Idempotent-Replay: true.

HTTP errors

Errors come back as {"error": {"code": "…", "message": "…"}}. Branch on code; show message to people. Every failed call is also listed in the console's error log for 14 days.

HTTPerror.codeMeaning
401invalid_keyMissing, wrong or revoked key, or the wrong kind of key for this endpoint.
402feature_not_in_planThe shop's plan doesn't include POS sync.
403connection_pausedThe shop paused the link.
403vendor_pendingYour account is waiting for approval; until then a partner key works for the sandbox only.
403vendor_suspendedYour partner account is suspended.
403not_sandboxSandbox tools need a sandbox key.
404unknown_order, unknown_snapshot, unknown_codeIt isn't yours, or doesn't exist.
409snapshot_closed, already_accepted, …Already finished, or already answered differently.
422too_many_removed, no_products, validationFix the request. A batch's own problems come back per product instead.
429rate_limitedSlow down and honour Retry-After.

Per-item errors

Problems with single products arrive inside a 200 batch response as status: "rejected" with human-readable errors. For inventory items, the codes are:

CodeMeans
unknown_productWe have no product with that external_id. Send the full product first.
unknown_variantWe have no such variation. Send the full product, with its variants, first.
product_has_variantsA product with variations takes price and stock from them. Send variant_external_id.