Skip to content

Item availability

When the kitchen runs out of something, Quiqqy needs to know before the next customer orders it. Availability sync is the difference between a smooth day and a stream of ITEM_OUT_OF_STOCK denials — which cost customers, and count against your quality metrics.

Wire these calls to the 86 action in your POS so a tap on the terminal propagates in one round trip.

POST /pos/stores/:storeId/items/availability flips any number of items in one call. Items are addressed by the external_id you pushed at menu sync; variants by their own external_id.

Terminal window
curl -s https://auth.quiqqy.ai/api/v2/pos/stores/st_8fk2c1p9/items/availability \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"items": [
{ "external_id": "SKU-BURRATA", "available": false, "snooze_until": "2026-07-31T04:00:00Z" },
{ "external_id": "SKU-MARG-LG", "available": false },
{ "external_id": "SKU-TIRAMISU", "available": true }
]
}'
200 OK
{ "status": "success", "message": "Availability updated" }
FieldTypeMeaning
external_idstring, requiredYour id for the item or variant
availableboolean, requiredfalse removes it from sale immediately
snooze_untilISO 8601, optionalWith available: false: Quiqqy restores the item automatically at this time

Unknown external_ids are reported back without failing the rest of the batch. One call with fifty items beats fifty calls with one — the batch endpoint has its own generous rate limit for exactly this reason.

An 86 is almost never forever — it is “until tomorrow’s delivery”. Prefer snooze_until over a bare available: false:

  • 86 for the dayavailable: false with snooze_until set to the store’s next opening. No morning un-86 sweep to forget.
  • Out indefinitelyavailable: false without snooze_until. The item stays off until you flip it back.
  • Back early — send available: true any time; it clears the snooze.

When an item’s availability changes on the Quiqqy side (a merchant toggles it in their dashboard, or a snooze expires), you receive menu.item_availability_changed so the POS can mirror the state.

For one-off flips, PATCH /pos/stores/:storeId/items/:extItemId accepts any item fields, including availability:

Terminal window
curl -s -X PATCH https://auth.quiqqy.ai/api/v2/pos/stores/st_8fk2c1p9/items/SKU-BURRATA \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "available": false }'

When the problem is the store — the POS is down, the kitchen is slammed, an unexpected closure — pause the store rather than 86ing everything:

Terminal window
curl -s -X PUT https://auth.quiqqy.ai/api/v2/pos/stores/st_8fk2c1p9/status \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "status": "inactive" }'

status takes exactly two values: active (accepting online orders) and inactive (paused). A paused store stops taking new orders immediately; existing orders continue through their lifecycle. Set status back to active to resume. The change is announced to your webhook as store.status_changed, so a pause made from the merchant dashboard reaches the POS too.