Skip to content

GoOrder Developers

GoOrder Partner API · v1

Put GoOrder’s restaurants inside your product.

Browse live menus, quote delivery, place and track orders, and get signed webhooks for every change. One REST API, a full sandbox, and a quickstart that fits in one sitting.

  • 24 endpoints
  • Signed webhooks
  • Idempotent orders
  • Free sandbox
curl -X POST https://back.goorder.com/api/partner/v1/orders \
-H "Authorization: Bearer $GOORDER_API_KEY" \
-H "Idempotency-Key: order-100234" \
-H "Content-Type: application/json" \
-d '{
"store_id": "66f1a2b3c4d5e6f708192a3b",
"fulfilment": "delivery",
"items": [
{ "item_id": "66f1a2b3c4d5e6f708192a50", "quantity": 2 }
],
"customer": {
"name": "Sara Ahmed", "phone": "+971501234567"
},
"delivery_address": {
"line1": "Marina Tower", "floor": "12",
"apartment": "1204", "area": "Dubai Marina",
"location": { "lat": 25.0805, "lng": 55.1403 }
},
"payment_method": "cash",
"reference": "PARTNER-100234"
}'
const res = await fetch('https://back.goorder.com/api/partner/v1/orders', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.GOORDER_API_KEY}`,
'Idempotency-Key': 'order-100234',
'Content-Type': 'application/json',
},
body: JSON.stringify({
store_id: '66f1a2b3c4d5e6f708192a3b',
fulfilment: 'delivery',
items: [
{ item_id: '66f1a2b3c4d5e6f708192a50', quantity: 2 },
],
customer: { name: 'Sara Ahmed', phone: '+971501234567' },
delivery_address: {
line1: 'Marina Tower', floor: '12',
apartment: '1204', area: 'Dubai Marina',
location: { lat: 25.0805, lng: 55.1403 },
},
payment_method: 'cash',
reference: 'PARTNER-100234',
}),
});
const { data: order } = await res.json();
import os, requests
res = requests.post(
"https://back.goorder.com/api/partner/v1/orders",
headers={
"Authorization": f"Bearer {os.environ['GOORDER_API_KEY']}",
"Idempotency-Key": "order-100234",
},
json={
"store_id": "66f1a2b3c4d5e6f708192a3b",
"fulfilment": "delivery",
"items": [
{"item_id": "66f1a2b3c4d5e6f708192a50", "quantity": 2},
],
"customer": {"name": "Sara Ahmed", "phone": "+971501234567"},
"delivery_address": {
"line1": "Marina Tower", "floor": "12",
"apartment": "1204", "area": "Dubai Marina",
"location": {"lat": 25.0805, "lng": 55.1403},
},
"payment_method": "cash",
"reference": "PARTNER-100234",
},
)
order = res.json()["data"]
{
"data": {
"id": "66f1a2b3c4d5e6f708192a3b",
"object": "order",
"environment": "live",
"reference": "PARTNER-100234",
"order_number": "GO-004218",
"status": "placed",
"fulfilment": "delivery",
"store": { "id": "66f1a2b3c4d5e6f708192a3b", "name": "Burger Lab" },
"pricing": {
"subtotal": 60.0, "delivery_fee": 7.0, "tip": 0,
"discount": 0, "total": 67.0, "currency": "AED"
},
"payment": { "method": "cash", "status": "pending" }
}
}

Everything a branded ordering experience needs

  • Live menus

    Stores, hours, prices, modifiers and availability exactly as customers see them.

  • Delivery quotes

    Check an address against the delivery area and get the fee before you order.

  • Orders you can trust

    Server-side pricing, idempotent creation and clear business-rule errors.

  • Live tracking

    A status timeline and the rider’s position while the order is on its way.

  • Signed webhooks

    Every status and payment change, HMAC-signed, retried for ~20 hours.

  • A real sandbox

    Simulate the whole lifecycle with a test key — no restaurant, no rider, no card.

Your first order in three calls

  1. Find a store

    GET /stores?lat=25.2&lng=55.27

    Only stores that deliver to your customer, nearest first.

  2. Quote the address

    GET /stores/{id}/delivery-quote

    Fee, distance and whether the address is in range.

  3. Place the order

    POST /orders

    Prices are calculated by GoOrder — you send items, not totals.

Read the full ordering guide →

Tools