Just Eat UK
Just Eat API
Just Eat offers services for our various business partners and our consumer applications. How you interact with the API depends on the services you wish to interact with.
Security
HTTPS
All api calls and callbacks require HTTPS. Your service will need a valid SSL certificate and be accessible via the standard SSL port (port 443).
Making an API request
Some API calls require an API key, to authenticate the partner calling the API.
Other calls require a user token in the form of a JWT.
Date Formats
Date and time formats
All dates and times should use the .
For instance:
- DueDateWithUtcOffset:
"2015-05-26T14:52:35.5444292+01:00"- Local time:
14:52 - UTC time:
13:52 - UTC offset:
+1hr(due to daylight time saving)
- Local time:
- DueDateWithUtcOffset:
"2015-02-03T11:10:00.0000000+00:00"- Local time:
11:10 - UTC time:
11:10 - UTC offset:
0(no daylight time saving, local time is equivalent to UTC)
- Local time:
Note that the offset may be for a timezone different to your own, so you should alway convert to your own local time for display purposes (e.g. on receipts and terminals).
Callback timestamps
Timestamps sent to Just Eat should be recorded as the current local time (including any changes needed to account for daylight saving) with an accompanying offset that shows the difference between the recorded local time and the current UTC time.
If it is not possible to record timestamps in local time, timestamps may be recorded in UTC time with a 00:00 offset.
Async Webhooks
Some of the webhooks on the platform are configured as being 'async' webhooks. These are for long-running operations, and work as follows:
- Your webhook is invoked with a
?callback={returnUrl}query string parameter. ThereturnUrlis a unique URL that you will need to send the async response to. - Return an immediate
202 Acceptedresponse from the webhook endpoint, to indicate that you have received the request. - Perform the long-running operation. This can be deemed either a success; or a failure.
- If the result is a success, return the following:
- Otherwise, if the result is a failure, return the following:
PUT https://uk-partnerapi.just-eat.io/orders/abcd1234 HTTP/1.1Authorization: JE-API-KEY abcd123456789GET https://uk.api.just-eat.io/consumer/me/orders/uk HTTP/1.1Authorization: Bearer abcd123456789POST {returnUrl} HTTP/1.1
{ "status": "Success", "message": "{successMessage}", "data": {} // webhook-specific response object}POST {returnUrl} HTTP/1.1
{ "status": "Failure", "message": "{failureMessage}", "data": {} // webhook-specific response object}- Homepage
- https://api.apis.guru/v2/specs/just-eat.co.uk/1.0.0.json
- Provider
- just-eat.co.uk
- OpenAPI version
- 3.0.0
- Spec (JSON)
- https://api.apis.guru/v2/specs/just-eat.co.uk/1.0.0/openapi.json
- Spec (YAML)
- https://api.apis.guru/v2/specs/just-eat.co.uk/1.0.0/openapi.yaml
Tools (100)
Extracted live via the executor SDK.
-
attemptedDeliveryApi.postTenantOrdersOrderIdQueriesAttempteddeliveryIf the customer hasn't answered the door to collect the order, then an attempted delivery event can be created using this endpoint.
-
attemptedDeliveryApi.postTenantOrdersOrderIdQueriesAttempteddeliveryResolutionRedeliverorderIf the customer responds, then you can trigger the redelivery of an order through this endpoint
-
attemptedDeliveryWebhooks.putAttemptedDeliveryQueryResolvedThis webhook will be invoked whenever an attempted delivery query has been resolved.
-
attemptedDeliveryWebhooks.putDeliveryFailedThis webhook will be invoked whenever an attempted delivery event is created from the device.
-
checkout.getCheckoutTenantCheckoutIdGet the details required to fulfil an order, which includes:
- The restaurant selling the items to be purchased
- The customer making the purchase
- How, where and when the items will be received by the customer
- Instructions about the order
-
checkout.getCheckoutTenantCheckoutIdFulfilmentAvailabletimesGets a collection of times for when an order can be fulfilled.
-
checkout.patchCheckoutTenantCheckoutIdUpdate the details required to fulfil an order, which includes:
- The customer making the purchase
- Where and when the items will be received by the customer
- Instructions about the order
-
consumerQueries.postOrdersTenantOrderIdConsumerqueriesLateordercompensationRestaurantresponseIf a customer has requested compensation for a late order, a restaurant response is given by calling this endpoint.
-
consumerQueries.postOrdersTenantOrderIdConsumerqueriesLateorderRestaurantresponseIf a customer has requested an update on the status of a late order, a response can be given by calling this endpoint.
-
consumerQueriesWebhooks.postLateOrderCompensationQueryThis webhook will be invoked when a late order compensation query has been raised and a restaurant response is required.
-
consumerQueriesWebhooks.postLateOrderQueryThis webhook will be invoked when a late order query has been raised and a restaurant response is required.
-
consumers.deleteConsumersTenantMeCommunicationPreferencesTypeSubscribedChannelsChannelRemove subscription of a specific communication preference channel.
-
consumers.getConsumersTenantCurrently this operation only supports retrieving a count of consumer accounts given an email address.
-
consumers.getConsumersTenantMeCommunicationPreferencesGet all communication preferences for a given consumer.
-
consumers.getConsumersTenantMeCommunicationPreferencesTypeGet channel subscriptions for a given consumer's communication preference type
-
consumers.postConsumersTenantCreates a consumer for the given tenant.
-
consumers.postConsumersTenantMeCommunicationPreferencesTypeSubscribedChannelsChannelSubscribe to a specific communication preference channel.
-
consumers.putConsumersTenantMeCommunicationPreferencesTypeSet only the channel subscriptions for a given consumer's communication preference type. E.g., An empty list of subscribed Channels implies unsubscribe from all channels.
-
deliveryFee.getDeliveryFeesTenantRetrieve delivery fees for many restaurants. Returns fees and minimum order values required for delivery orders.
-
deliveryPoolsApi.deleteDeliveryPoolsDeliveryPoolIdThe restaurants will no longer be associated with the pool.
-
deliveryPoolsApi.deleteDeliveryPoolsDeliveryPoolIdRestaurantsRemove restaurants from a delivery pool
-
deliveryPoolsApi.getDeliveryPoolsA delivery pool is a named group of drivers which deliver food for a set of restaurants.
-
deliveryPoolsApi.getDeliveryPoolsDeliveryPoolIdA delivery pool is a named group of drivers which deliver food for a set of restaurants.
-
deliveryPoolsApi.getDeliveryPoolsDeliveryPoolIdAvailabilityRelativeGet the current amount of time it will take a driver to collect a new order from a restaurant in the pool.
-
deliveryPoolsApi.patchDeliveryPoolsDeliveryPoolIdModify a delivery pool, changing its name, restaurants or both
-
deliveryPoolsApi.postDeliveryPoolsA delivery pool is a named group of drivers which deliver food for a set of restaurants.
-
deliveryPoolsApi.putDeliveryPoolsDeliveryPoolIdReplace an existing delivery pool changing all of its properties
-
deliveryPoolsApi.putDeliveryPoolsDeliveryPoolIdAvailabilityRelativeSet the average amount of time it will take a driver to collect a new order from a restaurant in the pool.
-
deliveryPoolsApi.putDeliveryPoolsDeliveryPoolIdHoursSet the daily start and end times for a pool or set closed flag if the pool does not operate on that day. Start and end times for all days must be provided. Though the API accepts array of start and end times for each day, multiple start and end time for a day are not accepted. If the end time for a day is equal to or before start time, end time will be considered as time for the next day.
-
deliveryPoolsApi.putDeliveryPoolsDeliveryPoolIdRestaurantsAdd additional restaurants to a delivery pool
-
orderAcceptanceApi.postOrdersOrderIdCompleteCall when an order is complete. An order can only be marked as complete if it hasn't already been marked as cancelled or complete.
-
orderAcceptanceApi.postOrdersOrderIdReadyforcollectionCall when a collection order is ready to be collected by the customer. An order can only be marked as ready for collection if it is a collection order in the accepted state.
-
orderAcceptanceApi.putOrdersOrderIdAcceptCall when an order has been accepted. An order can only be accepted if it hasn't previously been accepted, rejected, cancelled or ignored
-
orderAcceptanceApi.putOrdersOrderIdCancelCall when an order has been cancelled by Ops. Cancelling an order overrides any previous accept/reject calls. This should not be used for restaurant rejection but only from Ops involvement
-
orderAcceptanceApi.putOrdersOrderIdDuedateUse this to update the estimated time of arrival for an order (i.e. when you expect the customer to receive the food). NOTE: An initial estimate is given . This endpoint can be used to update that estimate.
-
orderAcceptanceApi.putOrdersOrderIdIgnoreCall when an order has been ignored by restaurant. An order can only be ignored if it hasn't previously been accepted, rejected, cancelled or ignored
-
orderAcceptanceApi.putOrdersOrderIdRejectCall when an order has been rejected. An order can only be rejected if it hasn't previously been accepted, rejected, cancelled or ignored
-
orderAcceptanceWebhooks.postAcceptanceRequestedThis webhook will be invoked whenever acceptance has been requested for the order.
-
orderAcceptanceWebhooks.postOrderAcceptedThis webhook will be invoked whenever the order was accepted.
-
orderAcceptanceWebhooks.postOrderCancelledThis webhook will be invoked whenever the order was cancelled.
-
orderAcceptanceWebhooks.postOrderRejectedThis webhook will be invoked whenever the order was rejected.
-
orderAcceptanceWebhooks.putRedeliveryRequestedThis webhook will be invoked whenever the customer responds to the attempted delivery notification.
-
orderApi.postOrdersCreate order
-
orderDeliveryApi.getDeliveryEstimateGet delivery estimate
-
orderDeliveryApi.putOrdersDeliverystateDriverlocationCurrent driver location (bulk upload)
-
orderDeliveryApi.putOrdersOrderIdDeliverystateAtdeliveryaddressThe _at delivery address_ callback should be sent when the driver thinks that they have arrived at the specified delivery address.
NB; This callback should be distinct from the delivered callback, as Just Eat use this callback to understand how much time is spent locating the customer's address.
-
orderDeliveryApi.putOrdersOrderIdDeliverystateAtrestaurantThe at restaurant callback should be sent when the driver arrives at the restaurant and is ready to collect the order.
-
orderDeliveryApi.putOrdersOrderIdDeliverystateAtrestaurantetaIn the UK, this endpoint updates the estimated arrival time at the restaurant. This value can be overridden from other endpoints like
This endpoint should be used to set initial at restaurant ETAs prior to driver assignment where available. The earlier a delivery partner is able to provide an estimate of when the driver will arrive at the restaurant the more likely it is that driver arrival and order preparation will be aligned.
In other tenants (Not UK):Note that if set for a given order, this Eta will NOT be overridden by any other at restaurant ETAs provided in `DriverAssigned` or `DriverLocation` requests
This value is significant since it informs when a restaurant is instructed to start preparing food. When the time remaining between current time and the estimated time of arrival becomes less than the restaurant's configured preparation time, food preparation is initiated
-
orderDeliveryApi.putOrdersOrderIdDeliverystateDeliveredThe delivered callback should be sent when the driver has handed the food to the customer and completed the order.
-
orderDeliveryApi.putOrdersOrderIdDeliverystateDriverassignedThe driver assigned callback should be sent when a driver is assigned to the order. It should communicate important details about the driver - and also an estimated time for the driver to arrive at the restaurant and delivery address.
-
orderDeliveryApi.putOrdersOrderIdDeliverystateDriverlocationJust Eat requires all delivery partners to send regular driver location callbacks, that record the GPS location of the drivers assigned to each order
Partners should aim to supply this callback approximately every 10 seconds.
Please provide an up-to-date ETA for when the driver will reach the restaurant in this request - this value is significant since it informs when a restaurant is instructed to start preparing food - when the time remaining between current time and the estimated time of arrival becomes less than the restaurant's configured preparation time, food preparation is initiated
Note that at restaurant Eta provided in this request will NOT override any ETA set in the Driver At Restaurant Eta request
-
orderDeliveryApi.putOrdersOrderIdDeliverystateDriverunassignedThe driver unassigned callback should be sent when a driver is unassigned from the order. It may details about the reason for cancelling the assignment, the driver details, and any newer at restaurant and customer estimations.
-
orderDeliveryApi.putOrdersOrderIdDeliverystateOnitswayThe on its way callback should be sent when the driver departs the restaurant with the customer's order. It should contain an ETA that records when the driver expects to arrive at the customer's address.
-
orderDeliveryWebhooks.putDriverAssignedToDeliveryDriver Assigned to Delivery
-
orderDeliveryWebhooks.putDriverAtDeliveryAddressDriver at delivery address
-
orderDeliveryWebhooks.putDriverAtRestaurantDriver at restaurant
-
orderDeliveryWebhooks.putDriverHasDeliveredOrderDriver has delivered order
-
orderDeliveryWebhooks.putDriverLocationDriver Location
-
orderDeliveryWebhooks.putDriverOnTheirWayToDeliveryAddressDriver on their way to delivery address
-
orderDeliveryWebhooks.putOrderIsReadyForPickupThe "Ready for pickup" event lets the delivery partner know that the food has been cooked and is now ready for collection up from the restaurant.
When this event is received, it is important that you let your driver know that the order should now be collected from inside the restaurant. For example, this driver notification could take the form of an in-app notification or an SMS message.
This communication is needed to support restaurants who are unable to accommodate drivers inside their premises, as it allows restaurants to notify drivers waiting outside that they should come inside to collect their order.
NB; This event can be sent by the restaurant at any point after the order is accepted by the restaurant (for instance, this event may be sent before the driver has arrived at the restaurant).
-
orderDeliveryWebhooks.putOrderRequiresDeliveryAcceptanceThis webhook will be invoked when we have determined that an order is required acceptance for delivery. Upon receiving the request, the order should be scheduled for pickup by a courier/driver. We expect an immediate
201response from this webhook to denote that you have received the request. -
orderWebhooks.postOrderReadyForPreparationAsyncThis webhook will be invoked when we have determined that an order is ready for preparation. Upon receiving the request, you should perform any preparation-related activities, such as sending the order to the POS system / kitchen screen. NOTE: This version of the webhook is asynchronous, and we expect a response in two parts:
- We expect an immediate
202response from this webhook to denote that you have received the request; - Following that, we expect an - indicating either success or failure of the operation. The body for the async callbacks are as below:
Success callback
Failure callback
{ "status": "Success", "message": "Order successfully sent to POS", "data": {}}{ "status": "Failure", "message": "{errorMessage}", // e.g. "The POS is currently in use" "data": {}} - We expect an immediate
-
orderWebhooks.postOrderReadyForPreparationSyncThis webhook will be invoked when we have determined that an order is ready for preparation. Upon receiving the request, you should perform any preparation-related activities, such as sending the order to the POS system / kitchen screen.
-
orderWebhooks.postSendToPosFailedThis webhook will be invoked if we experience an error or timeout in sending an order to the underlying POS / kitchen screen. When notified via this webhook, typically you will perform some form of alerting or backup flow (e.g. ask the operator to enter the order manually into the POS). NOTE: This message contains the
OrderId, but not the full order. It is assumed that you have stored/cached the full order details earlier in the flow - e.g. via the webhook. -
publiclyAccessible.getOrderTimesGet list of the delivery and collection lead times supplied by the restaurant
-
publiclyAccessible.updateOrderTimeUpdate the restaurant's delivery and collection lead times
-
restaurantClaims.getRestaurantsTenantRestaurantIdCustomerclaimsProvides claims for a given restaurant with optional filtering
-
restaurantClaims.getRestaurantsTenantRestaurantIdCustomerclaimsIdGet information about a order claim
-
restaurantClaims.postRestaurantsTenantRestaurantIdCustomerclaimsIdRestaurantresponseSubmit a restaurant response for the claim, where the restaurant can tell us if they accept or reject the claim
-
restaurantClaims.putRestaurantsTenantRestaurantIdCustomerclaimsIdRestaurantresponseJustificationAdd reason and optional comments in case of rejection of order claim
-
restaurantEvents.deleteV1TenantRestaurantsIdEventOfflineRemoves specified restaurant from offline events. If role header is
SystemorOperationsonly events created by the specified role will be affected. If role header isRestaurantthen all events that haveallowRestaurantOverride=truewill be affected. -
restaurantEvents.postV1TenantRestaurantsEventOfflineCreates an event for the specified restaurants that indicates a reason for those restaurants to be offline.
-
restaurantEventsWebhooks.putRestaurantOfflineStatusCallback to notify that a restaurant has been taken offline through an active Restaurant Event or there's been a change in whether the restaurant can override a previous offline status.
-
restaurantEventsWebhooks.putRestaurantOnlineStatusCallback to notify that a restaurant is now able to come back online as there are no longer any active offline Restaurant Events
-
restaurantQueries.postOrdersTenantOrderIdRestaurantqueriesCompensationWhen an order is cancelled the restaurant might be eligible for compensation, this endpoint allows a request for compensation to be created.
-
restaurantQueriesWebhooks.postOrderEligibleForRestaurantCompensationThis webhook will be invoked for every cancelled order and it will inform if the order is eligible for compensation.
-
restaurants.getRestaurantServiceTimesGets the service times (the weekly times at which a restaurant is in service for delivery or collection) for a restaurant
-
restaurants.getRestaurantsTenantRestaurantIdCatalogueGet details of the restaurant's product catalogue
-
restaurants.getRestaurantsTenantRestaurantIdCatalogueAvailabilitiesGet all availabilities on the restaurant's menu
-
restaurants.getRestaurantsTenantRestaurantIdCatalogueCategoriesGet all categories on the restaurant's menu
-
restaurants.getRestaurantsTenantRestaurantIdCatalogueCategoriesCategoryIdItemsGet all item IDs which are assigned to the specified category
-
restaurants.getRestaurantsTenantRestaurantIdCatalogueItemsGet all menu items on the restaurant's menu
-
restaurants.getRestaurantsTenantRestaurantIdCatalogueItemsItemIdDealgroupsGet all deal groups for the menu item with the provided ID
-
restaurants.getRestaurantsTenantRestaurantIdCatalogueItemsItemIdDealgroupsDealGroupIdDealitemvariationsGet all deal item variations for the deal group with the specified ID, in the menu item with the specified ID
-
restaurants.getRestaurantsTenantRestaurantIdCatalogueItemsItemIdModifiergroupsGet all modifier groups for the menu item with the provided ID
-
restaurants.getRestaurantsTenantRestaurantIdCatalogueItemsItemIdVariationsGet all variations for the menu item with the provided ID
-
restaurants.getRestaurantsTenantRestaurantIdFeesGet the fees currently applied to a restaurant in a particular tenant
-
restaurants.getRestaurantsTenantRestaurantIdMenuThe endpoint will return a 301 redirect containing a URL that will grant access to the Menu file. The URL will only be available for a short period of time. The Menu file will be a single document containing the information that Just Eat has and uses to display the Menu on our customer clients. This will include a collection of items, a collection of Categories and a collection of Availabilities for when the items are available. Partners will be able to retrieve the Menu for any Restaurants that they currently manage.
-
restaurants.putMenuForIngestionThis will begin an asynchronous process that will lead to that menu becoming live on the Just Eat platform
-
restaurants.putRestaurantsDriverEtaSet the average amount of time it will take a driver to collect a new order from a restaurant.
-
restaurants.putRestaurantServiceTimesCreates or updates the service times (the weekly times at which a restaurant is in service for delivery or collection) for a restaurant
-
restaurants.putRestaurantsTenantRestaurantIdFeesCreates or Updates the fees for a restaurant in a particular tenant
-
restaurants.searchByLocationProvides details of all restaurants that deliver to the specified location
-
restaurants.searchByPostcodeProvides details of restaurants that deliver to the specified postcode
-
restaurantWebhooks.postMenuIngestionCompleteCallback to confirm that an attempt to ingest a menu has completed either successfully or unsuccessfully
-
restaurantWebhooks.postOrderTimeUpdatedCallback to notify recipients that there has been a change to the restaurant order times for a given day and service type
-
search.getSearchAutocompleteTenantProvides auto-completed search terms for restaurants, cuisines and products available in a given location.
-
search.getSearchRestaurantsTenantGet restaurants available in a given lat-long which match a search term. Matches can be found against the name, a cuisine or a product.
-
openapi.previewSpecPreview an OpenAPI document before adding it as a source
-
openapi.addSourceAdd an OpenAPI source and register its operations as tools