Hub Ordering API
Hub runs community storefronts: a marketplace where several merchant stores sell under one brand. A community owns its own catalogue mirror, customers, orders, payments and settlement ledger — and forwards each order to the merchant store that fulfils it.
Base URL https://hub-api.quiqqy.ai/api/v2 (sandbox: https://sandbox.quiqqy.ai/api/v2)Paths /communities/{communityId}/…Auth Partner Bearer token, scoped to the communityHub or Online Ordering?
Section titled “Hub or Online Ordering?”| You are building | Use |
|---|---|
| A POS integration for individual merchant stores — receive their orders, push their menus | Online Ordering |
| A custom storefront, ops dashboard or automation on top of a community — food halls, campus dining, virtual brands, delivery co-ops | Hub Ordering |
The rule of thumb: Online Ordering faces the store’s POS; Hub faces the community that aggregates many stores.
Tenancy
Section titled “Tenancy”Every route is scoped by community:
/communities/{communityId}/…. The community in the path must match the
community your token was issued for — cross-tenant reads are rejected, and the
same boundary is enforced at the database.
The order forwarding model
Section titled “The order forwarding model”A community order can span several stores in one cart. Hub splits it: one
child order per fulfilling store, forwarded to that store’s own order
pipeline (and on to its POS, if the store has an Online Ordering
integration). You track the parent order; the stores each work their child.
Statuses roll up — the parent reaches delivered when its children have.
customer cart (2 stores) └── community order ────────────── you track this ├── child order → Store A ── Store A fulfils └── child order → Store B ── Store B fulfilsPrices are server-derived
Section titled “Prices are server-derived”On order placement, line prices are re-derived server-side from the
community’s synced catalogue. A unit_price sent from a client is ignored — a
tampered client cannot change what a shopper is charged. Send item ids and
quantities; let Hub do the money. If the live price no longer matches what
your client displayed, pass expected_total and the order is rejected with
409 order.price_changed rather than charging a different amount.
Guides
Section titled “Guides”Endpoint-level details live in the Hub Ordering API reference.