Delivery Hero OrdersEstimation API
The OrdersEstimation API from Delivery Hero — 2 operation(s) for ordersestimation.
The OrdersEstimation API from Delivery Hero — 2 operation(s) for ordersestimation.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/delivery-hero-ordersestimation-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: 1.1.1
title: On Demand Rider Orders Estimation API
x-logo:
url: data:image/svg+xml,%3Csvg width='173' height='28' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='translate(-64 -15)' fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h1350v60H0z'%3E%3C/path%3E%3Cpath d='M0 0h1350v60H0z'%3E%3C/path%3E%3Cg transform='translate(64 15)' fill='%23D61F26'%3E%3Cpath d='M32.18 13.383l-.021.012-3.754 1.531-.115.053-.915 4.18c-.061.143-.244.177-.367.058l-2.735-3.234-.013-.01-15.423 6.618a.103.103 0 01-.104-.176l13.333-9.98-1.687-3.852c-.084-.175.071-.362.277-.31h.002l4.086 1.006 3.172-2.823c.137-.107.323-.03.358.14l.31 4.241 3.658 2.141c.157.1.134.332-.062.405zM30.316 1.258C25.582-.6 20.376.795 17.164 4.365L4.63 17.793c-.169.181-.09.408.115.438l3.34.205c.267.017.3.247.166.404L.086 27.646c-.142.152.03.392.224.332l11.656-3.683c.246-.085.436.135.332.328l-1.56 2.756c-.08.157.071.372.267.358l16.804-3.743c4.015-.636 7.6-3.316 9.193-7.374 2.4-6.09-.598-12.967-6.686-15.362z'%3E%3C/path%3E%3Cpath d='M75.362 21.69h-3.829L74.53 7.658l4.176-1.535-3.343 15.565'%3E%3C/path%3E%3Cpath d='M67.138 13.653c-.917 0-1.444.759-1.658 1.638 1.813 0 2.362-.566 2.362-1.036 0-.33-.295-.602-.704-.602m-2.087 4.096c-.02.096-.04.274-.04.37 0 .625.428.84 1.562.84 1.013 0 2.456-.255 3.297-.546v2.868c-1.073.39-2.753.603-4.1.603-3.16 0-4.682-.859-4.682-3.725 0-2.814 1.307-7.201 6.344-7.201 3.198 0 4.153 1.445 4.153 2.968 0 1.97-1.696 3.647-6.534 3.823'%3E%3C/path%3E%3Cpath d='M82.316 10.455c-1.305 0-2.145-.839-2.145-1.99 0-1.503 1.054-2.341 2.359-2.341 1.328 0 2.148.838 2.148 1.97 0 1.522-1.034 2.361-2.362 2.361'%3E%3C/path%3E%3Cpath d='M79.63 11.31h3.94l-1.992 10.224h-3.98L79 14.354'%3E%3C/path%3E%3Cpath d='M94.925 11.31c-1.367 3.435-2.87 6.79-4.78 10.224h-4.88c-.623-3.24-.898-6.654-.818-10.224h3.981a47.373 47.373 0 00.036 4.994c.021.43.061.838.099 1.251h.022c.174-.413.368-.82.545-1.251.682-1.68 1.306-3.51 1.777-4.994h4.018'%3E%3C/path%3E%3Cpath d='M100.252 13.653c-.915 0-1.445.759-1.661 1.638 1.817 0 2.363-.566 2.363-1.036 0-.33-.29-.602-.702-.602m-2.086 4.096a2.33 2.33 0 00-.042.37c0 .625.431.84 1.561.84 1.016 0 2.46-.255 3.299-.546v2.868c-1.074.39-2.752.603-4.097.603-3.163 0-4.684-.859-4.684-3.725 0-2.814 1.306-7.201 6.341-7.201 3.2 0 4.155 1.445 4.155 2.968 0 1.97-1.694 3.647-6.533 3.823'%3E%3C/path%3E%3Cpath d='M112.351 14.92a4.396 4.396 0 00-.957-.12c-.879 0-1.581.88-1.895 2.5l-.816 4.235H104.7l1.993-10.224h2.987l.096 1.363c.916-1.13 1.64-1.716 2.752-1.716.506 0 .78.039.915.078l-1.091 3.883'%3E%3C/path%3E%3Cpath d='M124.799 11.31c-1.758 4.567-3.318 7.902-4.88 10.207-2.262 3.376-4.254 4.157-6.304 4.157-.605 0-1.247-.16-1.561-.314l.626-2.947h1.366c.683 0 .974-.275 1.424-.879-.761-2.75-1.133-6.594-1.094-10.224h4.002a44.95 44.95 0 00.039 4.936c.02.448.056.878.095 1.309h.02c.177-.413.37-.82.547-1.27a50.015 50.015 0 001.736-4.975h3.984'%3E%3C/path%3E%3Cpath d='M140.1 21.534h-4.2l.997-5.153h-3.553l-.997 5.153h-4.192l2.652-13.62h4.197l-.955 4.86h3.551l.957-4.86h4.193l-2.651 13.62'%3E%3C/path%3E%3Cpath d='M148.37 13.653c-.918 0-1.442.759-1.658 1.638 1.815 0 2.364-.566 2.364-1.036 0-.33-.296-.602-.706-.602m-2.088 4.096a2.32 2.32 0 00-.037.37c0 .625.43.84 1.559.84 1.016 0 2.46-.255 3.299-.546v2.868c-1.073.39-2.752.603-4.1.603-3.16 0-4.682-.859-4.682-3.725 0-2.814 1.307-7.201 6.342-7.201 3.2 0 4.158 1.445 4.158 2.968 0 1.97-1.7 3.647-6.539 3.823'%3E%3C/path%3E%3Cpath d='M160.467 14.92a4.333 4.333 0 00-.954-.12c-.877 0-1.581.88-1.893 2.5l-.82 4.235h-3.979l1.988-10.224h2.985l.1 1.363c.916-1.13 1.637-1.716 2.748-1.716.51 0 .782.039.92.078l-1.095 3.883'%3E%3C/path%3E%3Cpath d='M167.006 14.1c-1.6 0-2.03 2.44-2.03 3.533 0 .877.37 1.13 1.095 1.13 1.577 0 1.988-2.44 1.988-3.55 0-.858-.35-1.113-1.053-1.113m-1.485 7.784c-3.102 0-4.622-1.327-4.622-3.98 0-2.947 1.462-6.946 6.615-6.946 3.084 0 4.624 1.366 4.624 3.982 0 3.005-1.464 6.944-6.617 6.944'%3E%3C/path%3E%3Cpath d='M52.543 18.294h-.781l1.404-7.182h1.095c1.657 0 2.262.98 2.262 2.323 0 2.715-1.504 4.86-3.98 4.86m3.719-6.928l2.652-2.545c-1.035-.623-2.455-.908-4.227-.908h-5.073l-2.651 13.621h5.289c6.144 0 8.601-4.293 8.601-8.76 0-1.161-.25-2.09-.732-2.81l-3.86 1.402'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/svg%3E
altText: Delivery Hero
backgroundColor: '#FFFFFF'
description: '# About
The On Demand Rider (ODR) API provides system-to-system integration to facilitate on-demand courier delivery service requests.'
servers:
- url: https://pandago-api-sandbox.deliveryhero.io/sg/api/v1
description: <b>Sandbox</b> environment
- url: https://api-infra-eu-central-1.stg.ondemandrider.net/{country code}/api/v1
description: <b>Stage</b> Glovo generic 💡 Find your country URL [here](#section/About/API-Endpoints-and-URLs) 💡
- url: https://ondemand-api-glovoapp.deliveryhero.io/{country code}/api/v1
description: <b>Production</b> Glovo generic 💡 Find your country URL [here](#section/About/API-Endpoints-and-URLs) 💡
- url: https://ondemand-api-glovoapp.deliveryhero.io/pt/api/v1
description: <b>Example in production</b> for Glovo Portugal
security:
- Bearer_Token: []
tags:
- name: OrdersEstimation
x-displayName: Estimations
paths:
/orders/fee:
summary: Fee Estimation
post:
summary: Estimate Fee for an Order
description: 'Use this endpoint to estimate time of an order.
It takes a JSON object containing an order.'
tags:
- OrdersEstimation
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
default: Bearer {access-token}
requestBody:
$ref: '#/components/requestBodies/EstimateOrderRequest'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EstimateOrderFeeResponse'
examples:
response:
value:
client_order_id: client-ref-000001
estimated_delivery_fee: 8.17
sender:
client_vendor_id: outlet-987b61a1-7ccf-4447-82e0-6b9c1ab35a4f
location:
address: '1 2nd Street #08-01'
latitude: 1.2923742
longitude: 103.8486029
notes: use the left side door
notes: use the left side door
'400':
description: Invalid request body
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
message: Invalid request payload\n - recipient.phone_number is required
'422':
description: Unable to process request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
message: No Branch found that is close enough to the given sender coordinates
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
message: Unable to proceed, something went wrong
operationId: postOrdersFee
x-operation-id-source: derived
/orders/time:
summary: Time Estimation
post:
summary: Estimate Time for an Order
description: 'Use this endpoint to estimate time of an order.
It takes a JSON object containing an order.
*NOTE:*
*Time is estimated based on historical data and it does not consider live condition (e.g. traffic, weather, etc.)*'
tags:
- OrdersEstimation
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
default: Bearer {access-token}
requestBody:
$ref: '#/components/requestBodies/EstimateOrderRequest'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/EstimateOrderTimeResponse'
examples:
response:
value:
client_order_id: client-ref-000001
estimated_pickup_time: '2018-09-13T01:30:52.123Z'
estimated_delivery_time: '2018-09-13T01:45:52.123Z'
delivery_duration: PT20M
lower_bound: PT15M
upper_bound: PT25M
'400':
description: Invalid request body
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
message: Invalid request payload\n - recipient.phone_number is required
'422':
description: Unable to process request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
message: No Branch found that is close enough to the given sender coordinates
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
message: Unable to proceed, something went wrong
operationId: postOrdersTime
x-operation-id-source: derived
components:
schemas:
Longitude:
title: Longitude
type: number
format: double
minimum: -180
maximum: 180
Latitude:
title: Latitude
type: number
format: double
minimum: -90
maximum: 90
EstimateOrderFeeResponse:
title: Estimate Order Fee Response
type: object
properties:
client_order_id:
type: string
sender:
allOf:
- $ref: '#/components/schemas/Sender'
description: The resolved pickup details. The `location` (and `phone_number`, when available) are populated from the pickup outlet's information. When the request was submitted using `sender.client_vendor_id`, that value is echoed back here as well.
estimated_delivery_fee:
$ref: '#/components/schemas/Price'
PostalCode:
title: PostalCode **(can be used only for Singapore)**
type: string
maxLength: 120
description: Vendors in Singapore alone should use this attribute. If an accurate postal code is provided for Singapore orders, vendor does not need to provide address or lat/long information.
example: 752340, 750313, 757046
EstimateOrderRequest:
title: Estimate Order Request
type: object
properties:
client_order_id:
type: string
sender:
$ref: '#/components/schemas/Sender'
recipient:
$ref: '#/components/schemas/ContactWithOptionalFields'
payment_method:
$ref: '#/components/schemas/PaymentMethod'
coldbag_needed:
$ref: '#/components/schemas/Boolean'
amount:
$ref: '#/components/schemas/Price'
description:
$ref: '#/components/schemas/Description'
required:
- recipient
- amount
- description
example:
sender:
name: ODR
phone_number: '+6500000000'
location:
address: '1 2nd Street #08-01'
latitude: 1.2923742
longitude: 103.8486029
notes: use the left side door
recipient:
name: Merlion
location:
address: 20 Esplanade Drive
latitude: 1.2857488
longitude: 103.8548608
notes: 2nd floor - door 3, use lift A and leave at the front door
phone_number: '+6500000000'
amount: 23.5
payment_method: PAID
description: Refreshing drink
PaymentMethod:
type: string
enum:
- PAID
- CASH_ON_DELIVERY
- CARD_ON_DELIVERY
description: "Supported Payment Methods:\n * `PAID` - Order has been fully paid already and courier will not collect any amount from the end customer\n * `CASH_ON_DELIVERY` - Courier will collect payment (order amount) from the end customer upon delivery\n * `CARD_ON_DELIVERY` - Payment by credit card upon receipt of the order"
ClientVendorID:
title: Client Outlet ID
type: string
maxLength: 255
Boolean:
title: Boolean
type: boolean
default: false
ContactWithOptionalFields:
title: Contact
type: object
description: "Please provide **`location`** attribute\nThe **`name`** and **`phone_number`** attributes are optional.\n*NOTE for vendors in Finland, Norway, and Sweden:*\nVendors in the the named countries have the option to work with coordinates (by providing **`location.latitude`** and **`location.longitude`**) or with addresses by providing **`location.address`**. Addresses should be specified in accordance with the format used by the national postal service of the specific country. Do not include additional address elements, like business names, floor numbers, etc. Delimit address elements by spaces. Examples:\n * Jakobsbergsgatan 24 111 44 Stockholm\n * Pasilankatu 10 00240 Helsinki\n * Waldemar Thranes gate 98 0175 Oslo\n\n\n \n\n*NOTE for vendors in Singapore:*\nVendors in Singapore have the option to work with location coordinates (by providing **`location.latitude`** and **`location.longitude`**) or with postal codes (by providing **`location.postal_code`**). If both location coordinates and postal codes are provided, only the coordinates will be used for finding the exact location. Postal code should be specified as a 6 digit number. For example: 752340."
properties:
name:
type: string
maxLength: 255
phone_number:
$ref: '#/components/schemas/PhoneNumber'
location:
$ref: '#/components/schemas/Location'
notes:
type: string
maxLength: 2048
description: 'Include instructions for our couriers regarding Pick-Up (in Sender) or Drop-Off (in Recipient).
TIP:
You can include your OrderID as part of Pick-Up instruction and our couriers will be able to see it in their app.'
required:
- location
Address:
type: string
maxLength: 255
Sender:
title: Sender
type: object
description: "There are two type of payloads accepted:\n * **[PREFERRED]** Outlet reference\n\n * Please provide **`client_vendor_id`** attribute\n\n * Unique ID for the Outlet, retrieved from the Outlets API. This is the preferred way to identify the order's origin.\n\n * Sender details\n\n * Please provide **`name`**, **`phone_number`** and **`location`** attributes\n\n *In the case where all attributes are provided, Outlet reference will be used and Sender details will be ignored.*\n\n \n\n*NOTE for vendors in Finland, Norway, Sweden, Tawian and Kuwait:*\n\n \n\nVendors in the the named countries have the option to work with coordinates (by providing **`location.latitude`** and **`location.longitude`**) or with addresses by providing **`location.address`**. Addresses should be specified in accordance with the format used by the national postal service of the specific country. Do not include additional address elements, like business names, floor numbers, etc. Delimit address elements by spaces. Examples:\n * Jakobsbergsgatan 24 111 44 Stockholm\n * Pasilankatu 10 00240 Helsinki\n * Waldemar Thranes gate 98 0175 Oslo\n * 5 Lane 80 Taiyuen Road, Datong District, Taipei City 10349\n * Al-Sabbahiya, B.P. 48001, 54551 KUWAIT\n\n \n\n\n*NOTE for vendors in Singapore:*\n\nVendors in Singapore have the option to work with location coordinates (by providing **`location.latitude`** and **`location.longitude`**) or with postal codes (by providing **`location.postal_code`**). If both location coordinates and postal codes are provided, only the coordinates will be used for finding the exact location.\nPostal code should be specified as a 6 digit number. For example: 752340.\n"
properties:
name:
type: string
maxLength: 255
phone_number:
$ref: '#/components/schemas/PhoneNumber'
location:
$ref: '#/components/schemas/Location'
notes:
type: string
maxLength: 2048
description: 'Include instructions for our couriers regarding Pick-Up (in Sender) or Drop-Off (in Recipient).
TIP:
You can include your OrderID as part of Pick-Up instruction and our couriers will be able to see it in their app.'
client_vendor_id:
$ref: '#/components/schemas/ClientVendorID'
ErrorResponse:
title: Error Response
type: object
properties:
message:
type: string
required:
- message
Price:
title: Price
type: number
default: 0
minimum: 0
example: 123.45
EstimateOrderTimeResponse:
title: Estimate Order Time Response
type: object
properties:
client_order_id:
type: string
estimated_pickup_time:
type: string
description: Estimated pickup time in RFC 3339 format.
estimated_delivery_time:
type: string
description: Estimated delivery time in RFC 3339 format.
delivery_duration:
type: string
description: 'Estimated delivery duration as an ISO 8601 duration (e.g. `PT20M`).
'
lower_bound:
type: string
description: 'Lower bound of the customer-facing delivery time window as an ISO 8601
duration (e.g. `PT15M`).
'
upper_bound:
type: string
description: 'Upper bound of the customer-facing delivery time window as an ISO 8601
duration (e.g. `PT25M`).
'
Description:
title: Description
type: string
maxLength: 1000
Location:
title: Location
type: object
properties:
address:
$ref: '#/components/schemas/Address'
latitude:
$ref: '#/components/schemas/Latitude'
longitude:
$ref: '#/components/schemas/Longitude'
postal_code:
$ref: '#/components/schemas/PostalCode'
required:
- address
- latitude
- longitude
PhoneNumber:
type: string
format: e164
description: '* Phone number in E.164 standard (https://en.wikipedia.org/wiki/E.164)
* libphonenumber is used for phone number validation
'
example: '+6588888888'
requestBodies:
EstimateOrderRequest:
content:
application/json:
schema:
$ref: '#/components/schemas/EstimateOrderRequest'
required: true
securitySchemes:
Bearer_Token:
type: apiKey
name: Authorization
in: header
description: 'Provide the access token in the format: `Bearer {access-token}`. You can obtain the access token from the [Authentication endpoint](#tag/Authentication).
'
x-tagGroups:
- name: Authentication
tags:
- Authentication
- name: Orders
tags:
- OrdersManagement
- OrdersEstimation
- RiderPosition
- Proofs
- name: Outlets
tags:
- Outlets
- name: Callback
tags:
- Callback