Pull live orders for an in-house dispatcher. Build a custom analytics warehouse off the order history. React to status transitions in real time via webhooks. The Orders API gives you the same data the POS, the kiosk and the driver app see, with the same latency.
Channel-agnostic by design. Web, app, kiosk, walk-in, phone, every aggregator — all one shape.
From the moment an order lands at a location until it leaves the door (or is handed across the counter) every state change is recorded. You can poll, you can subscribe via webhooks, you can replay history.
Returns the active order list at a single location — anything not yet completed or cancelled. Sub-second cache, perfect for an internal dispatcher screen, a custom KDS or a heads-up overlay.
GET /organizations/{organizationId}/orders/live?LocationId={locationId}
Authorization: Bearer <access_token>
Response — 200 OK
{
"values": [
{
"id": "a91c2f44-1d7e-4b88-9cb1-44e2cf3a2ec0",
"reference": "#5482",
"locationId": "7f2b6c9e-1a4d-4f12-9b23-5c8e0d1a3b42",
"channel": "Web",
"occasion": "Delivery",
"status": "Preparing",
"createdTimeUtc": "2026-04-19T18:42:11Z",
"acceptedTimeUtc": "2026-04-19T18:42:14Z",
"requestedDispatchTimeUtc": "2026-04-19T19:10:00Z",
"customer": { "name": "S. Patel", "phoneNumber": "+44…" },
"total": { "currency": "GBP", "amount": 28.40 }
}
]
}
Same endpoint, broader filter set. Filter by status group, occasion, channel, time window or free-text search across reference, customer name and email. Paginated; the response wraps the array in a values envelope alongside page, pageSize and totalCount.
GET /organizations/{organizationId}/orders
?LocationId=7f2b6c9e-1a4d-4f12-9b23-5c8e0d1a3b42
&StatusGroup=Completed
&Occasion=Delivery
&CreatedFromUtc=2026-04-12T00:00:00Z
&CreatedToUtc=2026-04-19T00:00:00Z
&page=1
&pageSize=50
&sortBy=createdTimeUtc
&sortDirection=Descending
Authorization: Bearer <access_token>
Response — 200 OK
{
"page": 1,
"pageSize": 50,
"totalCount": 3142,
"values": [
{ "id": "…", "reference": "#5481", "status": "Delivered", "total": { "amount": 19.20 } },
{ "id": "…", "reference": "#5480", "status": "Delivered", "total": { "amount": 42.80 } }
]
}
The detail view returns lines, modifiers, applied deals, charges (delivery fee, service charge, processing fee), payment records, the audit trail of state transitions, the assigned driver if any, and the complete address with what3words.
GET /organizations/{organizationId}/orders/{id}
Authorization: Bearer <access_token>
Response — 200 OK
{
"id": "a91c2f44-1d7e-4b88-9cb1-44e2cf3a2ec0",
"version": 7,
"reference": "#5482",
"locationId": "7f2b6c9e-…",
"status": "Preparing",
"channel": "Web",
"occasion": "Delivery",
"lines": [
{
"productId": "a1c23f44-…",
"name": "Margherita (Large)",
"quantity": 1,
"unitPrice": 14.50,
"modifiers": [
{ "name": "Extra Cheese", "price": 1.50 }
]
}
],
"charges": [
{ "type": "DeliveryFee", "amount": 2.50 }
],
"payments": [
{ "type": "Card", "amount": 28.40, "reference": "pi_3O…" }
],
"address": {
"line1": "24 Granby Road", "city": "Leicester", "postCode": "LE1 6FB"
}
}
Every aggregator and channel attaches its own identifier. Use the by-reference endpoint to resolve them to an Andromeda order id without scanning the history. Useful when handling a webhook from Uber Eats, Deliveroo, Just Eat or your own system.
GET /organizations/{organizationId}/orders/by-reference/ExternalOrderId/19c2f1ab-5d3e-4ac8-b711-3f0d4e2a1b9c
Authorization: Bearer <access_token>
Response — 200 OK
{
"id": "a91c2f44-1d7e-4b88-9cb1-44e2cf3a2ec0",
"reference": "#5482",
"status": "Preparing",
"identifiers": [
{ "scheme": "ExternalOrderId", "value": "19c2f1ab-…" },
{ "scheme": "AggregatorChannel", "value": "UberEats" }
]
}
Refund the whole order or specific lines. The Commands API records the refund as a domain event, settles against the original payment provider (Stripe Connect, your acquiring bank), and propagates back to the customer’s order history within seconds.
POST /organizations/{organizationId}/orders/{id}/refund
Authorization: Bearer <access_token>
Content-Type: application/json
{
"reason": "CustomerComplaint",
"notes": "Margherita arrived cold",
"amount": { "currency": "GBP", "amount": 28.40 }
}
Response — 202 Accepted
{
"refundId": "4d8a91f2-…",
"orderId": "a91c2f44-…",
"status": "Pending",
"providerReference": "re_3OabcXYZ…"
}
Polling is fine; webhooks are better. Register a delivery URL on your tenant, choose the event topics you care about, and Andromeda will post a signed JSON payload to your endpoint within a second of every state change. Retries with exponential back-off; HMAC-SHA256 signature in the X-Andromeda-Signature header. See the Integrations page for the full webhook contract.
POST https://your-app.example.com/andromeda/webhook
X-Andromeda-Signature: sha256=8d2f3e…
X-Andromeda-Event: order.status.changed
{
"eventId": "f4e2c9a1-…",
"event": "order.status.changed",
"organizationId": "…",
"locationId": "7f2b6c9e-…",
"orderId": "a91c2f44-…",
"reference": "#5482",
"from": "Preparing",
"to": "Ready",
"occurredTimeUtc": "2026-04-19T18:54:02Z"
}
Credentials, tokens, your first call in ten minutes.
Products, modifiers, prices, allergens, deals.
CRM, marketing segments, loyalty tiers and vouchers.
Sales metrics, operational reports, export to BI.
Couriers, payment devices, third-party integrators, webhooks.
API surface, auth, the platform at a glance.
Test environment, sandbox tenant, sample data, real endpoints. No commitment.