> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://api-docs.zippd.com/llms.txt.
> For full documentation content, see https://api-docs.zippd.com/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://api-docs.zippd.com/_mcp/server.

# Get a Quote

POST https://sandbox-api.deliveryapp.com/api/v1/orders-delivery/quote
Content-Type: application/json

Retrieve prices for a delivery without placing an order. Most of the details used retrieve a quote can be used to place a delivery, but placing a delivery may require more details.

This endpoint will respond with a list of price objects keyed by the vehicle name.

### By Vehicles or by Items Delivered
If the vehicle types desired for quotation are known, you should provide them in the `vehicles` item of the request data. Without `vehicles`, delivery item data to be provided in the request data. Item data must be provided for every order location except for the pickup (first) location.

Reference: https://api-docs.zippd.com/orders-a-2-b-and-multi-stop/get-a-quote

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: collection
  version: 1.0.0
paths:
  /orders-delivery/quote:
    post:
      operationId: get-a-quote
      summary: Get a Quote
      description: >-
        Retrieve prices for a delivery without placing an order. Most of the
        details used retrieve a quote can be used to place a delivery, but
        placing a delivery may require more details.


        This endpoint will respond with a list of price objects keyed by the
        vehicle name.


        ### By Vehicles or by Items Delivered

        If the vehicle types desired for quotation are known, you should provide
        them in the `vehicles` item of the request data. Without `vehicles`,
        delivery item data to be provided in the request data. Item data must be
        provided for every order location except for the pickup (first)
        location.
      tags:
        - subpackage_ordersA2BAndMultiStop
      parameters:
        - name: Authorization
          in: header
          description: ''
          required: true
          schema:
            type: string
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Orders - A2B and
                  Multi-stop_getAQuote_Response_201
        '422':
          description: Invalid data was sent with the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAQuoteRequestUnprocessableEntityError'
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              type: object
              properties:
                vehicles:
                  type: array
                  items:
                    $ref: >-
                      #/components/schemas/OrdersDeliveryQuotePostRequestBodyContentApplicationJsonSchemaVehiclesItems
                  description: >-
                    A list of vehicle types you'd like to retrieve 

                    quotes for. __This is required if `items` items have not
                    been provided in the order locations__.


                    Use either `All` or `*` to select all vehicles. `All` and
                    `*` may only be passed alone. Passing either in the
                    `vehicles` array with other values in the array will result
                    in a validation error.
                fulfilment_date:
                  type: string
                  format: date
                  description: >-
                    The date on which the order should be fulfilled. Expects
                    date in format 'Y-m-d'.
                co_loading:
                  type: boolean
                  description: >-
                    Whether or not the delivery driver is allowed to load items
                    from other deliveries on their vehicle alongside yours.
                    Defaults to `false` if not provided.
                two_man_delivery:
                  type: boolean
                  description: >-
                    Whether or not the delivery driver is required to have an
                    additional person with them to fulfil the order. Defaults to
                    `false` if not provided.
                order_locations:
                  type: array
                  items:
                    $ref: '#/components/schemas/OrderLocation-min'
              required:
                - fulfilment_date
servers:
  - url: https://sandbox-api.deliveryapp.com/api/v1
components:
  schemas:
    OrdersDeliveryQuotePostRequestBodyContentApplicationJsonSchemaVehiclesItems:
      type: string
      enum:
        - Car
        - Small Van
        - Short Wheel Base
        - Long Wheel Base
        - Extra Long Wheel Base
        - Luton Van
        - All
        - '*'
      title: >-
        OrdersDeliveryQuotePostRequestBodyContentApplicationJsonSchemaVehiclesItems
    OrderLocationMinAddress:
      type: object
      properties:
        address_line_1:
          type: string
          description: The first line of the location's address.
        address_line_2:
          type:
            - string
            - 'null'
          description: The second line of the location's address.
        city:
          type: string
          description: The city of the location's address.
        postcode:
          type: string
          description: The postal code of the location's address.
        latitude:
          type: number
          format: double
          description: The latitude coordinate of the location's address.
        longitude:
          type: number
          format: double
          description: The longitude coordinate of the location's address.
      title: OrderLocationMinAddress
    OrderLocation-min:
      type: object
      properties:
        id:
          type: integer
        time_from:
          type: string
          format: time
          description: >-
            The earliest time at which the driver should arrive at this
            location. Format 'H:i:s'.
        time_to:
          type: string
          format: time
          description: >-
            The latest time at which the driver should arrive at this location.
            Format 'H:i:s'.
        address:
          $ref: '#/components/schemas/OrderLocationMinAddress'
        requires_handballing:
          type: boolean
          description: >-
            Whether or not the delivery requires the driver to assist with
            loading/unloading items. This is only appropriate for `delivery`
            order types. Other order types will always be `false`.
      description: Location data added to a request
      title: OrderLocation-min
    OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaVehiclesItemsVehicleTitleVehicle:
      type: string
      enum:
        - Car
        - Small Van
        - Short Wheel Base
        - Long Wheel Base
        - Extra Long Wheel Base
        - Luton Van
        - 7.5 Tonne Lorry
      description: The name of the type of vehicle that this quote object applies to.
      title: >-
        OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaVehiclesItemsVehicleTitleVehicle
    OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaVehiclesItemsVehicleTitle:
      type: object
      properties:
        vehicle:
          $ref: >-
            #/components/schemas/OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaVehiclesItemsVehicleTitleVehicle
          description: The name of the type of vehicle that this quote object applies to.
        price:
          type:
            - integer
            - 'null'
          description: >-
            The sub total of the quote for this vehicle. Value will be in lowest
            currency unit, i.e. pence for GBP.
        price_formatted:
          type:
            - string
            - 'null'
          description: The price in a human-readable format.
        price_no_vat:
          type:
            - integer
            - 'null'
          description: >-
            The sub total of the quote for this vehicle excluding VAT. Value
            will be in lowest currency unit, i.e. pence for GBP.
        price_no_vat_formatted:
          type:
            - string
            - 'null'
          description: The price excluding VAT in a human-readable format.
      description: >-
        Price data may return as `null` if the request calls for a delivery
        set-up that is not supported by the platform.
      title: >-
        OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaVehiclesItemsVehicleTitle
    OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaVehiclesItems:
      type: object
      properties:
        '[vehicle_title]':
          $ref: >-
            #/components/schemas/OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaVehiclesItemsVehicleTitle
          description: >-
            Price data may return as `null` if the request calls for a delivery
            set-up that is not supported by the platform.
      title: >-
        OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaVehiclesItems
    OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaExtraTrips:
      type: object
      properties:
        price:
          type: integer
          description: >-
            The total price of extra trips for the delivery order. An extra
            trips are any and all locations after the first drop-off loca Value
            will be in lowest currency unit, i.e. pence for GBP.
        price_formatted:
          type: string
          description: Total extra trips price in a human-readable format.
        count:
          type: integer
          description: The total number of extra trips in this delivery order.
      description: >-
        This will be an object when the order type is `delivery`, `null`
        otherwise.
      title: OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaExtraTrips
    Orders - A2B and Multi-stop_getAQuote_Response_201:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          description: The quote ID.
        vehicles:
          type: array
          items:
            $ref: >-
              #/components/schemas/OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaVehiclesItems
          description: >-
            An list of quote objects. Each object will contain a quote for every
            vehicle that was outlined in the request.
        extra_trips:
          oneOf:
            - $ref: >-
                #/components/schemas/OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaExtraTrips
            - type: 'null'
          description: >-
            This will be an object when the order type is `delivery`, `null`
            otherwise.
        remote:
          type:
            - boolean
            - 'null'
          description: >-
            This will be true if __any__ of the locations fall in a postal code
            that has been flagged as remote and otherwise difficult to reach.
      title: Orders - A2B and Multi-stop_getAQuote_Response_201
    OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaErrors:
      type: object
      properties:
        field_key_1:
          type: array
          items:
            type: string
        field_key_2:
          type: array
          items:
            type: string
      description: >-
        A list of errors. Each item will represent a single field and contain a
        simple array of error messages.
      title: OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaErrors
    GetAQuoteRequestUnprocessableEntityError:
      type: object
      properties:
        message:
          type: string
          description: An overview of the error response.
        errors:
          $ref: >-
            #/components/schemas/OrdersDeliveryQuotePostResponsesContentApplicationJsonSchemaErrors
          description: >-
            A list of errors. Each item will represent a single field and
            contain a simple array of error messages.
      title: GetAQuoteRequestUnprocessableEntityError
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: ''

```

## SDK Code Examples

```python
import requests

url = "https://sandbox-api.deliveryapp.com/api/v1/orders-delivery/quote"

payload = {
    "fulfilment_date": "2022-01-11",
    "vehicles": ["Car"],
    "co_loading": True,
    "two_man_delivery": True,
    "order_locations": [
        {
            "id": 24013,
            "time_from": "11:00:00",
            "time_to": "11:30:00",
            "address": {
                "address_line_1": "123 Grovesby Road",
                "address_line_2": "Billingham House, Flat 45",
                "city": "Manchester",
                "postcode": "M1 2AB",
                "latitude": 53.477582,
                "longitude": -2.255331
            },
            "requires_handballing": True
        },
        {
            "id": 24013,
            "time_from": "11:00:00",
            "time_to": "11:30:00",
            "address": {
                "address_line_1": "123 Grovesby Road",
                "address_line_2": "Billingham House, Flat 45",
                "city": "Manchester",
                "postcode": "M1 2AB",
                "latitude": 53.477582,
                "longitude": -2.255331
            },
            "requires_handballing": True
        }
    ]
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://sandbox-api.deliveryapp.com/api/v1/orders-delivery/quote';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"fulfilment_date":"2022-01-11","vehicles":["Car"],"co_loading":true,"two_man_delivery":true,"order_locations":[{"id":24013,"time_from":"11:00:00","time_to":"11:30:00","address":{"address_line_1":"123 Grovesby Road","address_line_2":"Billingham House, Flat 45","city":"Manchester","postcode":"M1 2AB","latitude":53.477582,"longitude":-2.255331},"requires_handballing":true},{"id":24013,"time_from":"11:00:00","time_to":"11:30:00","address":{"address_line_1":"123 Grovesby Road","address_line_2":"Billingham House, Flat 45","city":"Manchester","postcode":"M1 2AB","latitude":53.477582,"longitude":-2.255331},"requires_handballing":true}]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://sandbox-api.deliveryapp.com/api/v1/orders-delivery/quote"

	payload := strings.NewReader("{\n  \"fulfilment_date\": \"2022-01-11\",\n  \"vehicles\": [\n    \"Car\"\n  ],\n  \"co_loading\": true,\n  \"two_man_delivery\": true,\n  \"order_locations\": [\n    {\n      \"id\": 24013,\n      \"time_from\": \"11:00:00\",\n      \"time_to\": \"11:30:00\",\n      \"address\": {\n        \"address_line_1\": \"123 Grovesby Road\",\n        \"address_line_2\": \"Billingham House, Flat 45\",\n        \"city\": \"Manchester\",\n        \"postcode\": \"M1 2AB\",\n        \"latitude\": 53.477582,\n        \"longitude\": -2.255331\n      },\n      \"requires_handballing\": true\n    },\n    {\n      \"id\": 24013,\n      \"time_from\": \"11:00:00\",\n      \"time_to\": \"11:30:00\",\n      \"address\": {\n        \"address_line_1\": \"123 Grovesby Road\",\n        \"address_line_2\": \"Billingham House, Flat 45\",\n        \"city\": \"Manchester\",\n        \"postcode\": \"M1 2AB\",\n        \"latitude\": 53.477582,\n        \"longitude\": -2.255331\n      },\n      \"requires_handballing\": true\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://sandbox-api.deliveryapp.com/api/v1/orders-delivery/quote")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"fulfilment_date\": \"2022-01-11\",\n  \"vehicles\": [\n    \"Car\"\n  ],\n  \"co_loading\": true,\n  \"two_man_delivery\": true,\n  \"order_locations\": [\n    {\n      \"id\": 24013,\n      \"time_from\": \"11:00:00\",\n      \"time_to\": \"11:30:00\",\n      \"address\": {\n        \"address_line_1\": \"123 Grovesby Road\",\n        \"address_line_2\": \"Billingham House, Flat 45\",\n        \"city\": \"Manchester\",\n        \"postcode\": \"M1 2AB\",\n        \"latitude\": 53.477582,\n        \"longitude\": -2.255331\n      },\n      \"requires_handballing\": true\n    },\n    {\n      \"id\": 24013,\n      \"time_from\": \"11:00:00\",\n      \"time_to\": \"11:30:00\",\n      \"address\": {\n        \"address_line_1\": \"123 Grovesby Road\",\n        \"address_line_2\": \"Billingham House, Flat 45\",\n        \"city\": \"Manchester\",\n        \"postcode\": \"M1 2AB\",\n        \"latitude\": 53.477582,\n        \"longitude\": -2.255331\n      },\n      \"requires_handballing\": true\n    }\n  ]\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://sandbox-api.deliveryapp.com/api/v1/orders-delivery/quote")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"fulfilment_date\": \"2022-01-11\",\n  \"vehicles\": [\n    \"Car\"\n  ],\n  \"co_loading\": true,\n  \"two_man_delivery\": true,\n  \"order_locations\": [\n    {\n      \"id\": 24013,\n      \"time_from\": \"11:00:00\",\n      \"time_to\": \"11:30:00\",\n      \"address\": {\n        \"address_line_1\": \"123 Grovesby Road\",\n        \"address_line_2\": \"Billingham House, Flat 45\",\n        \"city\": \"Manchester\",\n        \"postcode\": \"M1 2AB\",\n        \"latitude\": 53.477582,\n        \"longitude\": -2.255331\n      },\n      \"requires_handballing\": true\n    },\n    {\n      \"id\": 24013,\n      \"time_from\": \"11:00:00\",\n      \"time_to\": \"11:30:00\",\n      \"address\": {\n        \"address_line_1\": \"123 Grovesby Road\",\n        \"address_line_2\": \"Billingham House, Flat 45\",\n        \"city\": \"Manchester\",\n        \"postcode\": \"M1 2AB\",\n        \"latitude\": 53.477582,\n        \"longitude\": -2.255331\n      },\n      \"requires_handballing\": true\n    }\n  ]\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://sandbox-api.deliveryapp.com/api/v1/orders-delivery/quote', [
  'body' => '{
  "fulfilment_date": "2022-01-11",
  "vehicles": [
    "Car"
  ],
  "co_loading": true,
  "two_man_delivery": true,
  "order_locations": [
    {
      "id": 24013,
      "time_from": "11:00:00",
      "time_to": "11:30:00",
      "address": {
        "address_line_1": "123 Grovesby Road",
        "address_line_2": "Billingham House, Flat 45",
        "city": "Manchester",
        "postcode": "M1 2AB",
        "latitude": 53.477582,
        "longitude": -2.255331
      },
      "requires_handballing": true
    },
    {
      "id": 24013,
      "time_from": "11:00:00",
      "time_to": "11:30:00",
      "address": {
        "address_line_1": "123 Grovesby Road",
        "address_line_2": "Billingham House, Flat 45",
        "city": "Manchester",
        "postcode": "M1 2AB",
        "latitude": 53.477582,
        "longitude": -2.255331
      },
      "requires_handballing": true
    }
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://sandbox-api.deliveryapp.com/api/v1/orders-delivery/quote");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"fulfilment_date\": \"2022-01-11\",\n  \"vehicles\": [\n    \"Car\"\n  ],\n  \"co_loading\": true,\n  \"two_man_delivery\": true,\n  \"order_locations\": [\n    {\n      \"id\": 24013,\n      \"time_from\": \"11:00:00\",\n      \"time_to\": \"11:30:00\",\n      \"address\": {\n        \"address_line_1\": \"123 Grovesby Road\",\n        \"address_line_2\": \"Billingham House, Flat 45\",\n        \"city\": \"Manchester\",\n        \"postcode\": \"M1 2AB\",\n        \"latitude\": 53.477582,\n        \"longitude\": -2.255331\n      },\n      \"requires_handballing\": true\n    },\n    {\n      \"id\": 24013,\n      \"time_from\": \"11:00:00\",\n      \"time_to\": \"11:30:00\",\n      \"address\": {\n        \"address_line_1\": \"123 Grovesby Road\",\n        \"address_line_2\": \"Billingham House, Flat 45\",\n        \"city\": \"Manchester\",\n        \"postcode\": \"M1 2AB\",\n        \"latitude\": 53.477582,\n        \"longitude\": -2.255331\n      },\n      \"requires_handballing\": true\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "fulfilment_date": "2022-01-11",
  "vehicles": ["Car"],
  "co_loading": true,
  "two_man_delivery": true,
  "order_locations": [
    [
      "id": 24013,
      "time_from": "11:00:00",
      "time_to": "11:30:00",
      "address": [
        "address_line_1": "123 Grovesby Road",
        "address_line_2": "Billingham House, Flat 45",
        "city": "Manchester",
        "postcode": "M1 2AB",
        "latitude": 53.477582,
        "longitude": -2.255331
      ],
      "requires_handballing": true
    ],
    [
      "id": 24013,
      "time_from": "11:00:00",
      "time_to": "11:30:00",
      "address": [
        "address_line_1": "123 Grovesby Road",
        "address_line_2": "Billingham House, Flat 45",
        "city": "Manchester",
        "postcode": "M1 2AB",
        "latitude": 53.477582,
        "longitude": -2.255331
      ],
      "requires_handballing": true
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.deliveryapp.com/api/v1/orders-delivery/quote")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```