Integrations & APIAll plans
API: update an order's status
POST /api/v1/orders/{order_id}/status lets your POS tell Menuthere when the kitchen accepted an order and when it went out. It needs a key with Orders access. Sending a status the order already has changes nothing, so a retry is safe.
- Where
- Ask Menuthere support for a key
- Plan
- The dashboard does not lock this by plan.
- Updated
The request
curl -X POST 'https://menuthere.com/api/v1/orders/ORDER_ID/status' -H 'Authorization: Bearer ck_live_YOUR_KEY' -H 'Content-Type: application/json' -d '{"status":"accepted"}'
| Part | Value |
|---|---|
| Method and path | POST /api/v1/orders/{order_id}/status |
| Header | Authorization: Bearer ck_live_…, from a key with Orders access |
| Body | JSON: { "status": "accepted" } |
| order_id | The order's ID. It arrives as data.order_id in the order webhook. |
| Allowed status | accepted, food_ready, dispatched, in_transit, completed |
Good to knowCancelling is not available here. A cancellation refunds loyalty points, restocks items and calls off any delivery partner, so it stays in the dashboard. See Cancel an order. pending_payment belongs to the payment gateway and cannot be set either.
The response
| Field | Meaning |
|---|---|
| ok | true on success. |
| order_id | The order you updated. |
| previous_status | What the order was before. |
| status | The status it now has. |
| changed | true if the status moved. false if the order already had it, in which case nothing was written. |
A successful change also sends an order.status_updated event to your webhook, so a second system, such as a tablet, sees it too. Your own change never fails because your webhook endpoint is down.
Errors
| Status | `error` | Meaning |
|---|---|---|
| 400 | missing_status, unsupported_status, invalid_json, missing_order_id | The body is not valid, or the status is not in the allowed list. |
| 401 | missing_api_key, invalid_api_key | No key, or a wrong or revoked key. |
| 403 | scope_denied | The key has no Orders access. |
| 404 | order_not_found | No order with that ID on your account. |
| 429 | rate_limited | Too many requests this minute. |
| 503 | lookup_failed, update_failed | Menuthere could not read or write the order. Try again. |
Questions
What happens if my POS retries after a timeout?
Nothing bad. If the order already has that status, the call returns changed: false and writes nothing.
Does the customer get a message when I change the status?
The order moves through its normal states, so flows that fire on those states run. See Order updates to customers.
Related
Can't find it? Email [email protected] or chat with us, 9 AM – 9 PM.Help centerPricingmenuthere.com
