Delivery Hero OrdersEstimation API

The OrdersEstimation API from Delivery Hero — 2 operation(s) for ordersestimation.

Operations 2

POST /orders/fee Estimate Fee for an Order #
POST /orders/time Estimate Time for an Order #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/delivery-hero-ordersestimation-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

delivery-hero-ordersestimation-api-openapi.yml Raw ↑
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&nbsp;\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&nbsp;\n\n*NOTE for vendors in Finland, Norway, Sweden, Tawian and Kuwait:*\n\n&nbsp;\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&nbsp;\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