---
metadata:
  - name: generator
    content: Diplodoc Platform v5.15.5
alternate:
  - https://delivery.yango.com/docs/en/api/express/openapi/IntegrationV2OfferCalculate.md
---
> **Documentation Index:** Fetch the complete configuration index at https://delivery.yango.com/docs/en/llms.txt

<div class="openapi">

# Get delivery options (for Russia)

- Return methods for each delivery option.
- Each option contains the price, the time interval for picking up the parcel at point A, and the time interval for delivery to point B.
- After reviewing the delivery options, you can select the best one and create an order using the selected option.
- Delivery options are available only in Russia.


## Request

<div class="openapi__requests">

<div class="openapi__request__wrapper" style="--method: var(--dc-openapi-methods-post);margin-bottom: 12px">

<div class="openapi__request">

POST {.openapi__method} 
```text translate=no
b2b.delivery.yango.tech/b2b/cargo/integration/v2/offers/calculate
```



</div>

Service URL

</div>

</div>

### Headers

#|||
 **Name** 
|
 **Description** 
||

||
 Accept-Language<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

Preferred response language. Examples: "en" — English<br>Example: `en` 
|||#{.openapi-table}

<div class="openapi-entity">

### Body

{% cut "application/json" %}


```json translate=no
{
    "items": [
        {
            "size": {
                "length": 0.1,
                "width": 0.2,
                "height": 0.3
            },
            "weight": 2.105,
            "quantity": 1,
            "pickup_point": 1,
            "dropoff_point": 2
        }
    ],
    "route_points": [
        {
            "id": 1,
            "coordinates": [
                0.1,
                0.1
            ],
            "fullname": "One Central Building 5, Trade Center Second, Dubai"
        }
    ],
    "requirements": {
        "taxi_classes": [
            "cargo"
        ],
        "cargo_type": "lcv_m",
        "cargo_loaders": 1,
        "pro_courier": false,
        "cargo_options": [
            "thermobag"
        ],
        "skip_door_to_door": false,
        "due": "2020-01-01T00:00:00+00:00"
    }
}
```


{% endcut %}


#|||
 **Name** 
|
 **Description** 
||

||
 route_points<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** [RoutePointWithAddress](#routepointwithaddress)[]

Route points. Sorted in order of visits A-B1....BN<br>

*Min items:*{.openapi-description-annotation} `2`
 
||

||
 items {.openapi-table-parameter-name} 
|
 **Type:** [Item](#item)[]

Item parameters<br>

*Min items:*{.openapi-description-annotation} `1`
 
||

||
 requirements {.openapi-table-parameter-name} 
|
 **Type:** [OfferRequirements](#offerrequirements)

Delivery requirements 
|||#{.openapi-table}

</div>

<div class="openapi-entity">

### RoutePointWithAddress

#|||
 **Name** 
|
 **Description** 
||

||
 coordinates {.openapi-table-parameter-name} 
|
 **Type:** number[]

Coordinates of points in the form of an array of two real numbers: longitude and latitude — exactly in that order.<br>

*Example:*{.openapi-description-annotation} 
```
[
  0.1,
  0.1
]
```

*Min items:*{.openapi-description-annotation} `2`

*Max items:*{.openapi-description-annotation} `2`
 
||

||
 fullname {.openapi-table-parameter-name} 
|
 **Type:** string

Full address with an indication of the city, street, and house number.
You don't need to specify the flat, the entrance number, or the floor. 

*Example:*{.openapi-description-annotation} `One Central Building 5, Trade Center Second, Dubai`
 
||

||
 id {.openapi-table-parameter-name} 
|
 **Type:** integer&lt;int64&gt;

Numeric point id (int64). The parameter is mandatory if there are multiple delivery points in the order

*Example:*{.openapi-description-annotation} `1`
 
|||#{.openapi-table}

</div>

<div class="openapi-entity">

### Item

#|||
 **Name** 
|
 **Description** 
||

||
 quantity<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** integer&lt;int64&gt;

Number of items

*Example:*{.openapi-description-annotation} `1`

*Min value:*{.openapi-description-annotation} `1`
 
||

||
 dropoff_point {.openapi-table-parameter-name} 
|
 **Type:** integer&lt;int64&gt;

ID of the point (int64) to deliver the item to.
It can be any number. Must match the route_points[].id value of the destination point.
The parameter is mandatory if there are multiple delivery points in the order.

*Example:*{.openapi-description-annotation} `2`
 
||

||
 pickup_point {.openapi-table-parameter-name} 
|
 **Type:** integer&lt;int64&gt;

ID of the point (int64) to pick up the item from.
It can be any number. Must match the route_points[].id value of the dispatch point.
The parameter is mandatory if there are multiple delivery points in the order.

*Example:*{.openapi-description-annotation} `1`
 
||

||
 size {.openapi-table-parameter-name} 
|
 **Type:** [CargoItemSizes](#cargoitemsizes)

Unit dimensions in meters. The actual values should be added to the fields.
If the dimensions aren't added, the order is placed, taking into account the maximum dimensions allowed for the selected rate.
If the actual characteristics of the unit exceed the allowed dimensions, the courier has the right to refuse to fulfill the order on site.
In this case, the minimum fee will be withheld.
Courier: up to 0.80 m × 0.50 m × 0.50 м
Express: up to 1.00 m × 0.60 m × 0.50 m
Cargo:
- Small body: up to 1.70 m × 0.96 m × 0.90 m
- Medium body: up to 2.60 m × 1.30 m × 1.50 m
- Large body: up to 3.80 m × 1.80 m × 1.80 m
 
||

||
 weight {.openapi-table-parameter-name} 
|
 **Type:** number

Item weight in kilograms.
Example: 2.105

*Example:*{.openapi-description-annotation} `2.105`
 
|||#{.openapi-table}

</div>

<div class="openapi-entity">

### OfferRequirements

Delivery requirements

#|||
 **Name** 
|
 **Description** 
||

||
 cargo_loaders {.openapi-table-parameter-name} 
|
 **Type:** integer&lt;int64&gt;

Number of loaders for the cargo rate.
Possible values: 0, 1, 2.
For an exact list of possible values for a particular geo point, use the method for obtaining rates [tariffs](https://delivery.yango.com/docs/en/api/express/openapi/IntegrationV2Tariffs.md)

*Example:*{.openapi-description-annotation} `1`
 
||

||
 cargo_options {.openapi-table-parameter-name} 
|
 **Type:** string[]

List of additional rate options.

Possible separate options:
  - auto_courier (a courier with a vehicle only)
  - thermobag (a courier with a thermobag)
        
Example of a list of options: ["auto_courier"].

For an exact list of possible values for a particular geo point,
use the method for obtaining rates [tariffs](https://delivery.yango.com/docs/en/api/express/openapi/IntegrationV2Tariffs.md)
<br>

*Example:*{.openapi-description-annotation} `thermobag`
 
||

||
 cargo_type {.openapi-table-parameter-name} 
|
 **Type:** [CargoType](#cargotype)

 Body type (size) for the cargo rate.\nPossible values:
- van (\"Small body\")
- lcv_m (\"Medium body\")
- lcv_l (\"Large body\")
- lcv_xl ("XL body")
For an exact list of possible values for a particular geo point,\nuse the method for obtaining rates [tariffs](https://delivery.yango.com/docs/en/api/express/openapi/IntegrationV2Tariffs.md)

*Example:*{.openapi-description-annotation} `lcv_m`

*Enum:*{.openapi-description-annotation} `van`, `lcv_m`, `lcv_l`, `lcv_xl`
 
||

||
 due {.openapi-table-parameter-name} 
|
 **Type:** string&lt;date-time&gt;

Estimated time of arrival of the courier (you can postpone the estimated time of delivery by 30-60 minutes from the current ) — default value.

*Example:*{.openapi-description-annotation} `2020-01-01T00:00:00+00:00`
 
||

||
 pro_courier {.openapi-table-parameter-name} 
|
 **Type:** boolean

Enable the "Pro" option for "Express" and "Courier" rates.
In this case, we will look only for experienced couriers.

*Example:*{.openapi-description-annotation} `false`
 
||

||
 skip_door_to_door {.openapi-table-parameter-name} 
|
 **Type:** boolean

Disable door-to-door delivery (disable the "Door-to-door" option).

Possible values:
- true (the courier will deliver the order only at the entrance outside)
- false (the courier will deliver the order at the door) 

*Default:*{.openapi-description-annotation} `false`

*Example:*{.openapi-description-annotation} `false`
 
||

||
 taxi_classes {.openapi-table-parameter-name} 
|
 **Type:** string[]

Delivery vehicle class.
Possible values: courier, express, cargo.
For an exact list of possible values for a particular geo point, use the method for obtaining rates [tariffs](https://delivery.yango.com/docs/en/api/express/openapi/IntegrationV2Tariffs.md)
<br>Delivery vehicle class.
Possible values: courier, express, cargo.
For an exact list of possible values for a particular geo point, use the method for obtaining rates [tariffs](https://delivery.yango.com/docs/en/api/express/openapi/IntegrationV2Tariffs.md)

*Example:*{.openapi-description-annotation} `cargo`

*Min items:*{.openapi-description-annotation} `1`
 
|||#{.openapi-table}

</div>

<div class="openapi-entity">

### CargoItemSizes

Unit dimensions in meters. The actual values should be added to the fields.
If the dimensions aren't added, the order is placed, taking into account the maximum dimensions allowed for the selected rate.
If the actual characteristics of the unit exceed the allowed dimensions, the courier has the right to refuse to fulfill the order on site.
In this case, the minimum fee will be withheld.
Courier: up to 0.80 m × 0.50 m × 0.50 м
Express: up to 1.00 m × 0.60 m × 0.50 m
Cargo:
- Small body: up to 1.70 m × 0.96 m × 0.90 m
- Medium body: up to 2.60 m × 1.30 m × 1.50 m
- Large body: up to 3.80 m × 1.80 m × 1.80 m


#|||
 **Name** 
|
 **Description** 
||

||
 height<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** number

Height in meters

*Example:*{.openapi-description-annotation} `0.3`
 
||

||
 length<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** number

Length in meters

*Example:*{.openapi-description-annotation} `0.1`
 
||

||
 width<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** number

Width in meters

*Example:*{.openapi-description-annotation} `0.2`
 
|||#{.openapi-table}

</div>

<div class="openapi-entity">

### CargoType

 Body type (size) for the cargo rate.\nPossible values:
- van (\"Small body\")
- lcv_m (\"Medium body\")
- lcv_l (\"Large body\")
- lcv_xl ("XL body")
For an exact list of possible values for a particular geo point,\nuse the method for obtaining rates [tariffs](https://delivery.yango.com/docs/en/api/express/openapi/IntegrationV2Tariffs.md)


#|||
 **Type** 
|
 **Description** 
||

||
 [CargoType](#cargotype) 
|
 

*Example:*{.openapi-description-annotation} `lcv_m`

*Enum:*{.openapi-description-annotation} `van`, `lcv_m`, `lcv_l`, `lcv_xl`
 
|||#{.openapi-table}

</div>

## Responses

<div class="openapi__response__code__200">

## 200 OK

OK

<div class="openapi-entity">

### Body

{% cut "application/json" %}


```json translate=no
{
    "offers": [
        {
            "price": {
                "total_price": "673.0",
                "total_price_with_vat": "807.6",
                "base_price": "611.8",
                "surge_ratio": 1.1,
                "currency": "AED"
            },
            "taxi_class": "express",
            "pickup_interval": {
                "from": "2023-07-17T08:02:26.607358+00:00",
                "to": "2023-07-17T08:42:26.607358+00:00"
            },
            "delivery_interval": {
                "from": "2023-07-17T08:02:26.607358+00:00",
                "to": "2023-07-17T09:15:43.607358+00:00"
            },
            "description": "express_30min_longer",
            "payload": "5e2TPP5f7Yqyv19yRZ+QVas4JK+lhwa17ncxA3VCGI8hvnFS+CIySbmfHQlR6vhC2S4XsW+M7TbEV0EQl1/1Z0PO3QQX8KbGb6rtKay",
            "offer_ttl": "2020-01-02T00:00:00+00:00"
        }
    ]
}
```


{% endcut %}


#|||
 **Name** 
|
 **Description** 
||

||
 offers<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** [CalculatedOffer](#calculatedoffer)[]

An array of delivery offers<br>Delivery options 
|||#{.openapi-table}

</div>

<div class="openapi-entity">

### CalculatedOffer

Delivery options

#|||
 **Name** 
|
 **Description** 
||

||
 delivery_interval<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** [DeliveryTimeInterval](#deliverytimeinterval)

Delivery time interval (for point B) 
||

||
 payload<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

payload of the delivery offer. To order delivery using the selected offer, pass the payload in the method [claims/create](https://delivery.yango.com/docs/en/api/express/openapi/IntegrationV2ClaimsCreate.md).

*Example:*{.openapi-description-annotation} `5e2TPP5f7Yqyv19yRZ+QVas4JK+lhwa17ncxA3VCGI8hvnFS+CIySbmfHQlR6vhC2S4XsW+M7TbEV0EQl1/1Z0PO3QQX8KbGb6rtKay`
 
||

||
 pickup_interval<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** [PickupTimeInterval](#pickuptimeinterval)

Pick-up time interval (for point A) 
||

||
 price<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** [CalculatedOfferPrice](#calculatedofferprice)

Delivery cost 
||

||
 taxi_class<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

Rate

*Example:*{.openapi-description-annotation} `express`
 
||

||
 description {.openapi-table-parameter-name} 
|
 **Type:** string

Delivery option description. Example: express_30min_longer (Express with a 30-minute delay)

*Example:*{.openapi-description-annotation} `express_30min_longer`
 
||

||
 offer_ttl {.openapi-table-parameter-name} 
|
 **Type:** string&lt;date-time&gt;

Time until which the offer can be used to create a claim. If a claim is created after that moment, its status will change to 'estimating_failed'

*Example:*{.openapi-description-annotation} `2020-01-02T00:00:00+00:00`
 
|||#{.openapi-table}

</div>

<div class="openapi-entity">

### DeliveryTimeInterval

Delivery time interval (for point B)

#|||
 **Name** 
|
 **Description** 
||

||
 from<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string&lt;date-time&gt;

Interval start (UTC)

*Example:*{.openapi-description-annotation} `2023-07-17T08:02:26.607358+00:00`
 
||

||
 to<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string&lt;date-time&gt;

Interval end (date and time)

*Example:*{.openapi-description-annotation} `2023-07-17T09:15:43.607358+00:00`
 
|||#{.openapi-table}

</div>

<div class="openapi-entity">

### PickupTimeInterval

Pick-up time interval (for point A)

#|||
 **Name** 
|
 **Description** 
||

||
 from<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string&lt;date-time&gt;

Interval start (UTC)

*Example:*{.openapi-description-annotation} `2023-07-17T08:02:26.607358+00:00`
 
||

||
 to<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string&lt;date-time&gt;

Interval end (date and time)

*Example:*{.openapi-description-annotation} `2023-07-17T08:42:26.607358+00:00`
 
|||#{.openapi-table}

</div>

<div class="openapi-entity">

### CalculatedOfferPrice

Delivery cost

#|||
 **Name** 
|
 **Description** 
||

||
 currency<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

Three-digit code of the payment currency

*Example:*{.openapi-description-annotation} `AED`

*Min length:*{.openapi-description-annotation} `3`

*Max length:*{.openapi-description-annotation} `3`
 
||

||
 surge_ratio<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** number

Order cost growth factor (depending on the system load)

*Example:*{.openapi-description-annotation} `1.1`
 
||

||
 total_price<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

Price including order cost growth factor (without VAT)

*Example:*{.openapi-description-annotation} `673.0`

*Pattern:*{.openapi-description-annotation} `^-?[0-9]{1,14}(\.[0-9]{0,4})?$`
 
||

||
 total_price_with_vat<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

Price including order cost growth factor (including VAT)

*Example:*{.openapi-description-annotation} `807.6`

*Pattern:*{.openapi-description-annotation} `^-?[0-9]{1,14}(\.[0-9]{0,4})?$`
 
||

||
 base_price {.openapi-table-parameter-name} 
|
 **Type:** string

Базовая цена доставки

*Example:*{.openapi-description-annotation} `611.8`

*Pattern:*{.openapi-description-annotation} `^-?[0-9]{1,14}(\.[0-9]{0,4})?$`
 
|||#{.openapi-table}

</div>

</div>

<div class="openapi__response__code__400">

## 400 Bad Request

Invalid request

<div class="openapi-entity">

### Body

{% cut "application/json" %}


```json translate=no
{
    "code": "bad_request",
    "message": "bad request"
}
```


{% endcut %}


#|||
 **Name** 
|
 **Description** 
||

||
 code<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

Error code

*Example:*{.openapi-description-annotation} `bad_request`

*Enum:*{.openapi-description-annotation} `bad_request`, `address_not_found`, `validation_error`
 
||

||
 message<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

Error description

*Example:*{.openapi-description-annotation} `bad request`
 
|||#{.openapi-table}

</div>

</div>

<div class="openapi__response__code__409">

## 409 Conflict

Couldn't calculate offers

<div class="openapi-entity">

### Body

{% cut "application/json" %}


```json translate=no
{
    "code": "estimating.requirement_unavailable",
    "message": "requirement unavailable"
}
```


{% endcut %}


#|||
 **Name** 
|
 **Description** 
||

||
 code<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

Error code

*Example:*{.openapi-description-annotation} `estimating.requirement_unavailable`

*Enum:*{.openapi-description-annotation} `errors.suitable_offer_not_found`, `estimating.cargocorp_payment_failure`, `estimating.limited_by_claims_creation_overflow`, `estimating.no_pickup_point`, `estimating.payment_method_cant_order`, `estimating.permitted_tariffs_not_enough`, `estimating.requirement_unavailable`, `estimating.route_too_long`, `estimating.tariff.no_categories_in_zone`, `estimating.tariff.no_sdd_tariff`, `estimating.too_large_linear_size`, `estimating.too_many_loaders`, `estimating.warning.too_heavy_item`, `estimating.warning.too_large_item`, `estimating.zone_unavailable`, `estimating.payment_method_zone_unavailable`
 
||

||
 message<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

Error description

*Example:*{.openapi-description-annotation} `requirement unavailable`
 
|||#{.openapi-table}

</div>

</div>

<div class="openapi__response__code__429">

## 429 Too Many Requests

Too many requests

<div class="openapi-entity">

### Body

{% cut "application/json" %}


```json translate=no
{
    "code": "too_many_requests",
    "message": "Too many requests"
}
```


{% endcut %}


#|||
 **Name** 
|
 **Description** 
||

||
 code<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

Error code

*Example:*{.openapi-description-annotation} `too_many_requests`

*Enum:*{.openapi-description-annotation} `too_many_requests`
 
||

||
 message<span class="openapi__required">*</span> {.openapi-table-parameter-name} 
|
 **Type:** string

Error description

*Example:*{.openapi-description-annotation} `Too many requests`
 
|||#{.openapi-table}

</div>

</div>
<!-- markdownlint-disable-file -->

</div>



[*Deprecated]: No longer supported, please use an alternative and newer version.