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.
Batch availability
Section titled “Batch availability”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.
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 } ] }'await fetch( 'https://auth.quiqqy.ai/api/v2/pos/stores/st_8fk2c1p9/items/availability', { method: 'POST', headers: { Authorization: `Bearer ${accessToken}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ 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 }, ], }), },);import requests
requests.post( "https://auth.quiqqy.ai/api/v2/pos/stores/st_8fk2c1p9/items/availability", headers={"Authorization": f"Bearer {access_token}"}, json={ "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}, ] },){ "status": "success", "message": "Availability updated" }| Field | Type | Meaning |
|---|---|---|
external_id | string, required | Your id for the item or variant |
available | boolean, required | false removes it from sale immediately |
snooze_until | ISO 8601, optional | With 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.
Snooze-until pattern
Section titled “Snooze-until pattern”An 86 is almost never forever — it is “until tomorrow’s delivery”. Prefer
snooze_until over a bare available: false:
- 86 for the day —
available: falsewithsnooze_untilset to the store’s next opening. No morning un-86 sweep to forget. - Out indefinitely —
available: falsewithoutsnooze_until. The item stays off until you flip it back. - Back early — send
available: trueany 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.
Single item
Section titled “Single item”For one-off flips, PATCH /pos/stores/:storeId/items/:extItemId accepts any
item fields, including availability:
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 }'Pausing a whole store
Section titled “Pausing a whole store”When the problem is the store — the POS is down, the kitchen is slammed, an unexpected closure — pause the store rather than 86ing everything:
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.