Order lifecycle
Fulfillment & Delivery
Fulfillment
Pickup Points
Manage the association between orders and physical pickup points. Pickup points represent designated locations where customers collect their orders.
POST/order_pickup_pointsCreate Order Pickup Point
Associate an order with a pickup point.
Request Body
{
"orderId": 1927055,
"pickupPointId": 42
}Request Body Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| orderId | integer | 1927055 | Identifier of the order. |
| pickupPointId | integer | 42 | Identifier of the associated pickup point. |
Response
{
"status": 200,
"code": "order_pickup_point_created",
"message": "The order pickup point has been created.",
"data": {
"orderPickupPointId": 789,
"orderId": 1927055,
"pickupPointId": 42
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "order_pickup_point_created" | Machine-readable application code for the result. |
| message | string | "The order pickup point has been created." | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.orderPickupPointId | integer | 789 | Identifier of the associated order pickup point. |
| data.orderId | integer | 1927055 | Identifier of the order. |
| data.pickupPointId | integer | 42 | Identifier of the associated pickup point. |
GET/order_pickup_points/{orderPickupPointId}Get Order Pickup Point
Retrieve a specific order-pickup-point association by its ID.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderPickupPointId | integer | Yes | The order pickup point ID. |
Response
{
"status": 200,
"code": "order_pickup_point_retrieved",
"message": "The order pickup point has been retrieved.",
"data": {
"orderPickupPointId": 789,
"orderId": 1927055,
"pickupPointId": 42
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "order_pickup_point_retrieved" | Machine-readable application code for the result. |
| message | string | "The order pickup point has been retrieved." | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.orderPickupPointId | integer | 789 | Identifier of the associated order pickup point. |
| data.orderId | integer | 1927055 | Identifier of the order. |
| data.pickupPointId | integer | 42 | Identifier of the associated pickup point. |
GET/order_pickup_points/orders/{orderId}Get Pickup Point by Order
Retrieve the pickup point associated with a given order.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| orderId | integer | Yes | The order ID. |
Response
{
"status": 200,
"code": "order_pickup_point_retrieved",
"message": "The order pickup point has been retrieved.",
"data": {
"orderPickupPointId": 789,
"orderId": 1927055,
"pickupPointId": 42
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "order_pickup_point_retrieved" | Machine-readable application code for the result. |
| message | string | "The order pickup point has been retrieved." | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.orderPickupPointId | integer | 789 | Identifier of the associated order pickup point. |
| data.orderId | integer | 1927055 | Identifier of the order. |
| data.pickupPointId | integer | 42 | Identifier of the associated pickup point. |
GET/order_pickup_points/pickup_points/{pickupPointId}Get Orders by Pickup Point
Retrieve all order associations for a given pickup point.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| pickupPointId | integer | Yes | The pickup point ID. |
Response
{
"status": 200,
"code": "order_pickup_point_retrieved",
"message": "The order pickup point has been retrieved.",
"data": [
{
"orderPickupPointId": 789,
"orderId": 1927055,
"pickupPointId": 42
},
{
"orderPickupPointId": 790,
"orderId": 1927060,
"pickupPointId": 42
}
]
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "order_pickup_point_retrieved" | Machine-readable application code for the result. |
| message | string | "The order pickup point has been retrieved." | Human-readable result message. Do not use this value for program logic. |
| data | array | […] | Endpoint-specific response payload. |
| data[] | object | {…} | Endpoint-specific response payload. |
| data[].orderPickupPointId | integer | 789 | Identifier of the associated order pickup point. |
| data[].orderId | integer | 1927055 | Identifier of the order. |
| data[].pickupPointId | integer | 42 | Identifier of the associated pickup point. |
Cart Management
Manage saved carts. Carts can be referenced during order creation via the cartId field.
DELETE/carts/{cartId}Delete Cart
Delete a saved cart by its ID. No authentication required.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| cartId | string | Yes | The cart ID to delete. |
Response
{
"status": 200,
"code": "cart_deleted",
"message": "Cart deleted successfully."
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "cart_deleted" | Machine-readable application code for the result. |
| message | string | "Cart deleted successfully." | Human-readable result message. Do not use this value for program logic. |
Delivery Areas
Managing a restaurant's delivery zones (listing, replacing, and binding them to consumption modes) is documented in Restaurant Operations → Delivery Areas. The read-only endpoints below are useful in ordering flows: listing zones across a whole brand, and reading the weekly schedules of a single zone. To resolve the zone matching a customer address, see the Delivery section below.
GET/areas/brand/{brandId}List Delivery Areas by Brand
Retrieve all restaurants of a brand with their delivery areas.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| brandId | integer | Yes | The unique identifier of the brand. |
Response
{
"status": 200,
"code": "restaurant_succeed",
"data": [
{
"name": "Le Bistrot",
"restaurantId": 200,
"areas": [
{
"areaId": 45,
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Paris Centre",
"deliveryFee": 350,
"deliveryDelay": 30,
"isActivated": true,
"minimumAmount": 1500
}
]
}
]
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "restaurant_succeed" | Machine-readable application code for the result. |
| data | array | […] | Endpoint-specific response payload. |
| data[] | object | {…} | Endpoint-specific response payload. |
| data[].name | string | "Le Bistrot" | The name value. |
| data[].restaurantId | integer | 200 | Identifier of the restaurant. |
| data[].areas | array | […] | List of areas entries. |
| data[].areas[] | object | {…} | Object containing areas fields. |
| data[].areas[].areaId | integer | 45 | Identifier of the associated area. |
| data[].areas[].uuid | string | "a1b2c3d4-e5f6-7890-abcd-ef1234567890" | The uuid value. |
| data[].areas[].name | string | "Paris Centre" | The name value. |
| data[].areas[].deliveryFee | integer | 350 | The delivery fee value. |
| data[].areas[].deliveryDelay | integer | 30 | The delivery delay value. |
| data[].areas[].isActivated | boolean | true | Whether activated is enabled or applies. |
| data[].areas[].minimumAmount | integer | 1500 | The minimum amount value. |
GET/areas/{areaUuid}/area_schedulesGet Area Schedules
Retrieve the weekly schedules of a delivery area by its UUID. No authentication required.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| areaUuid | string | Yes | The UUID of the delivery area. |
Response
{
"status": 200,
"code": "area_schedules_succeed",
"message": "You can access to these area schedules.",
"data": [
{
"areaScheduleId": 12,
"areaId": 45,
"day": "MON",
"start": 690,
"end": 840,
"orderingQuota": 20
}
]
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "area_schedules_succeed" | Machine-readable application code for the result. |
| message | string | "You can access to these area schedules." | Human-readable result message. Do not use this value for program logic. |
| data | array | […] | Endpoint-specific response payload. |
| data[] | object | {…} | Endpoint-specific response payload. |
| data[].areaScheduleId | integer | 12 | Identifier of the associated area schedule. |
| data[].areaId | integer | 45 | Identifier of the associated area. |
| data[].day | string | "MON" | The day value. |
| data[].start | integer | 690 | The start value. |
| data[].end | integer | 840 | The end value. |
| data[].orderingQuota | integer | 20 | The ordering quota value. |
Location
The Location endpoints provide geocoding, address autocomplete, and place details powered by Google Maps. These are typically used in delivery flows to let customers search for and validate their delivery address.
Autocomplete Address
Returns address suggestions as the customer types. Use a consistent sessiontoken across autocomplete and place details calls to group them into a single billing session on Google Maps.
GET/location/autocompleteSearch address suggestions
Returns a list of address suggestions matching the search text. Pass a unique session token to group this call with a subsequent place details lookup.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| searchText | string | Yes | Partial address text typed by the user. |
| sessiontoken | string | Yes | A UUID that groups autocomplete and place details requests into a single session for billing. |
Response
{
"status": 200,
"code": "autocomplete_success",
"message": "Points of interest have been found",
"data": {
"suggestions": [
{
"name": "10 Rue de la Paix, Paris, France",
"provider": "google",
"providerId": "ChIJLU7jZClu5kcR4PcOOO6p3I0"
},
{
"name": "10 Rue de la Paix, Lyon, France",
"provider": "google",
"providerId": "ChIJMcbr7Crq9EcRoC_unOSfQE0"
}
]
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "autocomplete_success" | Machine-readable application code for the result. |
| message | string | "Points of interest have been found" | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.suggestions | array | […] | List of suggestions entries. |
| data.suggestions[] | object | {…} | Object containing suggestions fields. |
| data.suggestions[].name | string | "10 Rue de la Paix, Paris, France" | The name value. |
| data.suggestions[].provider | string | "google" | The provider value. |
| data.suggestions[].providerId | string | "ChIJLU7jZClu5kcR4PcOOO6p3I0" | Identifier of the associated provider. |
Place Details
After the customer selects a suggestion from the autocomplete results, call this endpoint with the providerId to get the full structured address including coordinates.
GET/location/place_detailsGet full address from a place ID
Retrieves detailed address information (street, city, postal code, coordinates) for a given Google place ID. Use the same session token as the preceding autocomplete call.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| placeId | string | Yes | The provider place ID returned by the autocomplete endpoint (providerId). |
| sessiontoken | string | Yes | The same session token used in the autocomplete request. |
Response
{
"status": 200,
"code": "place_details_success",
"message": "The place details have been found",
"data": {
"place": {
"name": "10 Rue de la Paix, 75002 Paris, France",
"provider": "google",
"providerId": "ChIJLU7jZClu5kcR4PcOOO6p3I0",
"streetNumber": "10",
"route": "Rue de la Paix",
"locality": "Paris",
"postalCode": "75002",
"administrativeAreaLevel1": "Ile-de-France",
"administrativeAreaLevel2": "Paris",
"country": "France",
"lat": 48.8698,
"lng": 2.3308
}
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "place_details_success" | Machine-readable application code for the result. |
| message | string | "The place details have been found" | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.place | object | {…} | Object containing place fields. |
| data.place.name | string | "10 Rue de la Paix, 75002 Paris, France" | The name value. |
| data.place.provider | string | "google" | The provider value. |
| data.place.providerId | string | "ChIJLU7jZClu5kcR4PcOOO6p3I0" | Identifier of the associated provider. |
| data.place.streetNumber | string | "10" | The street number value. |
| data.place.route | string | "Rue de la Paix" | The route value. |
| data.place.locality | string | "Paris" | The locality value. |
| data.place.postalCode | string | "75002" | The postal code value. |
| data.place.administrativeAreaLevel1 | string | "Ile-de-France" | The administrative area level1 value. |
| data.place.administrativeAreaLevel2 | string | "Paris" | The administrative area level2 value. |
| data.place.country | string | "France" | The country value. |
| data.place.lat | number | 48.8698 | The lat value. |
| data.place.lng | number | 2.3308 | The lng value. |
Geocode Address
Converts a free-text address string into geographic coordinates and a structured address. This is useful when you already have a full address and need to resolve its latitude and longitude.
GET/location/geocodeGeocode an address to coordinates
Takes a full address string and returns latitude, longitude, and the resolved street name.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| address | string | Yes | The full address to geocode (e.g., "10 Rue de la Paix, 75002 Paris, France"). |
Response
{
"status": 200,
"code": "geocode_found",
"message": "Address coordinates have been found",
"data": {
"lat": 48.8698,
"lng": 2.3308,
"route": "Rue de la Paix"
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "geocode_found" | Machine-readable application code for the result. |
| message | string | "Address coordinates have been found" | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.lat | number | 48.8698 | The lat value. |
| data.lng | number | 2.3308 | The lng value. |
| data.route | string | "Rue de la Paix" | The route value. |
Typical Flow
- Generate a UUID to use as
sessiontoken. - Call
GET /location/autocompleteas the user types, passing thesessiontoken. - When the user selects a suggestion, call
GET /location/place_detailswith theproviderIdand the samesessiontoken. - Use the returned coordinates (
lat,lng) to check delivery eligibility viaGET /deliveries/restaurant/{restaurantId}.
Delivery
The Delivery endpoint determines whether a given set of coordinates falls within a restaurant's configured delivery area. If the address is within range, it returns the matching delivery area configuration including fees, delays, and minimum order amounts.
GET/deliveries/restaurant/{restaurantId}Get delivery configuration for coordinates
Checks whether the given latitude and longitude fall within one of the restaurant's active delivery areas. Returns the matching area with its delivery fee, estimated delay, minimum order amount, and schedule settings. Throws an error if no delivery area covers the specified coordinates.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| restaurantId | string | Yes | The unique identifier of the restaurant. |
| lat | number | Yes | Latitude of the delivery address. |
| lng | number | Yes | Longitude of the delivery address. |
Response
{
"status": 200,
"code": "delivery_area_by_address_succeed",
"message": "Your address can be delivered by this area.",
"data": {
"areaId": 542,
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Paris Centre",
"deliveryFee": 350,
"deliveryDelay": 30,
"isActivated": true,
"minimumAmount": 1500,
"minimumAmountForFreeDelivery": 3000,
"paymentLater": false,
"forceOnlinePayment": true,
"restaurantId": 200,
"priority": 1,
"isScheduleModeEnabled": false,
"schedules": [
{
"day": "monday",
"startTime": "11:00",
"endTime": "14:00"
},
{
"day": "monday",
"startTime": "18:00",
"endTime": "22:00"
}
]
}
}Response Properties
Every field in the example is listed below. Explicit requiredness is shown when the endpoint contract defines it.
| Property | Type | Example | Description |
|---|---|---|---|
| status | integer | 200 | HTTP status code returned by the API. |
| code | string | "delivery_area_by_address_succeed" | Machine-readable application code for the result. |
| message | string | "Your address can be delivered by this area." | Human-readable result message. Do not use this value for program logic. |
| data | object | {…} | Endpoint-specific response payload. |
| data.areaId | integer | 542 | Identifier of the associated area. |
| data.uuid | string | "a1b2c3d4-e5f6-7890-abcd-ef1234567890" | The uuid value. |
| data.name | string | "Paris Centre" | The name value. |
| data.deliveryFee | integer | 350 | The delivery fee value. |
| data.deliveryDelay | integer | 30 | The delivery delay value. |
| data.isActivated | boolean | true | Whether activated is enabled or applies. |
| data.minimumAmount | integer | 1500 | The minimum amount value. |
| data.minimumAmountForFreeDelivery | integer | 3000 | The minimum amount for free delivery value. |
| data.paymentLater | boolean | false | The payment later value. |
| data.forceOnlinePayment | boolean | true | The force online payment value. |
| data.restaurantId | integer | 200 | Identifier of the restaurant. |
| data.priority | integer | 1 | The priority value. |
| data.isScheduleModeEnabled | boolean | false | Whether schedule mode enabled is enabled or applies. |
| data.schedules | array | […] | List of schedules entries. |
| data.schedules[] | object | {…} | Object containing schedules fields. |
| data.schedules[].day | string | "monday" | The day value. |
| data.schedules[].startTime | string | "11:00" | The start time value. |
| data.schedules[].endTime | string | "14:00" | The end time value. |
Note: If the coordinates do not fall within any active delivery area for the restaurant, the API returns an error with the code no_delivery_area_found. Your application should handle this case by informing the customer that delivery is not available at their address.