Changelog
Every change to the Storefront API, generated from the OpenAPI snapshot diff.
A workflow checks the live OpenAPI document every night. When the snapshot changes, it opens a pull request whose body is the endpoint and schema diff — and that same diff is appended below. Newest entries first.
2026-09-25 — POST /orders/import takes naira
unit_price, delivery_fee, discount and total are now amounts in naira with at most
2 decimals (6500 or "6500.00"), like every other Merchant API amount — they were integers in
kobo. The receipt must add up: the sum of unit_price × quantity, plus delivery_fee, minus
discount, equals total, or the import answers 422 validation_failed on total with the
amount it expected. Caps: ₦1,000,000 per unit price, delivery fee or discount, ₦10,000,000 per
total. If you sent kobo, divide by 100 before sending.
2026-09-25 — Merchant API: real examples, deletes name what they deleted
- The reference shows real calls. Every operation now carries a realistic request body, path
and page parameter values from one example store, and the exact
404and422bodies that operation answers — the422names a field the operation validates.request_idin every example is a UUID, as the API sends it. - Variant and image deletes answer what they deleted.
DELETE /products/{product}/variants/{variant}answereddata: []; it now answers{"id": 7731, "uid": "…", "deleted": true}(the variant's own ids).DELETE /products/{product}/images/{image}answers{"id": 88215, "deleted": true}—idisnullwhen the removed primary image was a bare URL with no media row.DELETE /products/{product}gains"deleted": truebeside itsidandp_id. A client that testeddatafor an empty list should testdata.deleted. - A missing record's 404 names the record. Operations that answered
"No query results for model [App\Models\Product] 20417"now answer"Product not found."(likewise for orders and shipping zones), andGET /customers/{customer}answers"Customer not found"(was"User not found").error.codeis unchanged (not_found) — branch on it, never on the message. - An imported order's customer is on
shipping_address.POST /orders/importstores the platform's customer (name + phone) as the order's recipient:shipping_address.nameandshipping_address.phone(new, additive;nullon every other order), readable only withmerchant-customers-contact-readlike every contact. Webhooks carry them, as they carrycustomer. Queek never writes contact intometadata, and a key without the contact scope readsmetadatawithout contact keys (customer_phone,phone,email, …).
2026-09-25 — order payload: store customer and shipment
The order object — every orders/* webhook and every Merchant API order endpoint — changed
in two ways:
customeris the store's own record of the buyer. Itsidis now the store customer id (the oneGET /customers/{customer}and thecustomers/*events use), andname,emailandphoneare what this store holds — no longer the buyer's global Queek profile, which could carry the name and contact they use at other stores.customerisnullwhen the order has no store customer record (marketplace orders, imports placed under a guest). If you matched orders to people by the oldcustomer.id,emailorname, re-key on the newcustomer.id.- New
shipmentkey (additive): carrier tracking on a shipping order —carrier_name,tracking_number,tracking_url,zone_name,shipped_at,estimated_delivery_at,delivered_at— ornull.PATCH /orders/{order}/shipmentanswers the order with it.
2026-09-23 — public API naming
The Merchant API moved to clean public paths under /api/v1/merchant/* (49 operations
in 14 groups: Store, Products, Variants, Images, Collections, Inventory, Orders,
Customers, Discounts, Coupons, Shipping zones, Metafields, Metaobjects, Content), each
with a standard name and one update verb per resource; discounts gained list and
retrieve. The earlier biz/vendor paths — live only hours, never announced — now refuse
keys with route_not_available naming the new path. The scopes table is regenerated
(32 scopes, adding discount list and retrieve).
The Storefront reference is complete: 57 operations with standard names (the committed snapshot had only 30), including the account, address, follow, order and metaobject groups, grouped by the spec's own order.
2026-09-23 — Merchant API v1
The Merchant API is documented: server-side access for a store's own systems
(ERP and stock sync, fulfilment, catalogue) on https://api.usequeek.com/api/v1/biz,
authenticated by a private sk_ key alone. New section beside the storefront docs with
an overview, authentication & keys, a scopes table generated from the spec (30 scopes
across 49 operations), idempotency & rate limits, errors, and an endpoint reference
generated from the new spec/merchant-openapi.json snapshot (37 paths, 18 tags).
2026-09-22 — snapshot baseline
Baseline snapshot: 29 paths, 30 operations, 7 shared schemas. Future entries list added/removed/changed paths and schemas against this starting point.