Раздел описывает API для расчёта стоимости доставки, создания заказа и получения истории статусов отправления.
Все запросы отправляются на {BASE_URL}/api/v2/orders/....
Базовый URL и токен предоставляет Starex.
Authorization: Bearer {TOKEN}
Content-Type: application/json
Accept: application/json
Accept-Language: ru
-401.
Список методов:
| Метод | Адрес | Назначение |
|---|---|---|
| POST | /api/v2/orders/calculate |
Расчёт стоимости доставки |
| POST | /api/v2/orders/create |
Создание заказа (отправления) |
| GET | /api/v2/orders/trace |
История статусов отправления |
4500000 —
это 45 000 сум.
Поле service определяет, куда доставляется отправление, и от него
зависит, какие поля обязательны.
service | Тип | Обязательные поля |
|---|---|---|
1 |
До двери (курьер везёт по адресу) | receiver_district_id + receiver_address |
2 |
До ПВЗ (забирают в филиале) | receiver_branch_id |
ID районов и филиалов берутся из раздела Справочники.
service = 1 поле receiver_branch_id игнорируется,
а при service = 2 игнорируется receiver_district_id.
Позволяет узнать стоимость доставки до создания заказа.
POST
{BASE_URL}/api/v2/orders/calculate
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
sender_district_id | integer | Да | ID района отправителя |
sender_address | string | Нет | Адрес отправителя |
service | integer | Да | 1 — до двери, 2 — до ПВЗ |
receiver_district_id | integer | Да при service=1 | ID района получателя |
receiver_branch_id | integer | Да при service=2 | ID филиала (ПВЗ) |
receiver_address | string | Нет | Адрес получателя |
weight | number | Да | Вес, кг (например 1.5) |
POST {BASE_URL}/api/v2/orders/calculate
Authorization: Bearer {TOKEN}
Content-Type: application/json
{
"sender_district_id": 12,
"sender_address": "улица Амира Темура, 1",
"receiver_district_id": 45,
"receiver_address": "улица Мустакиллик, 20",
"weight": 1.5,
"service": 1
}
{
"success": true,
"data": {
"price": 4500000,
"from_town": { "code": 3922, "name": "TASHKENT" },
"to_town": { "code": 3969, "name": "SAMARKAND" },
"mass": 1.5,
"service": { "code": 1, "name": "Курьерская доставка" }
}
}
| Поле | Тип | Описание |
|---|---|---|
price | integer | Стоимость доставки, в тийинах |
from_town.code | integer|null | Код города отправителя (внутренний код Starex) |
from_town.name | string|null | Название города отправителя |
to_town.code | integer|null | Код города получателя |
to_town.name | string|null | Название города получателя |
mass | number|null | Учтённый вес (кг) |
service.code | integer|null | Код типа доставки |
service.name | string|null | Название типа доставки |
service = 2 (ПВЗ) поле to_town может вернуться
пустым — в этом случае адрес определяется по филиалу.
Создаёт новое отправление и возвращает штрих-код (barcode).
POST
{BASE_URL}/api/v2/orders/create
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
sender_district_id | integer | Да | ID района отправителя |
sender_person | string | Нет | ФИО отправителя |
sender_phone | string | Нет | Телефон отправителя |
sender_address | string | Нет | Адрес отправителя |
service | integer | Да* | 1 — до двери, 2 — до ПВЗ |
receiver_district_id | integer | Да при service=1 | ID района получателя |
receiver_branch_id | integer | Да при service=2 | ID филиала (ПВЗ) |
receiver_person | string | Да** | ФИО получателя (физлицо) |
receiver_company | string | Да** | Название компании-получателя |
receiver_phone | string | Да | Телефон получателя |
receiver_address | string | Нет | Адрес получателя (нужен для доставки до двери) |
weight | number | Нет | Вес, кг |
* Технически поле можно не передавать, но тогда отправление уйдёт
без адреса — всегда передавайте 1 или 2.
** Должно быть заполнено хотя бы одно из полей
receiver_person или receiver_company.
receiver_person и
receiver_company одновременно — при передаче обоих
имя получателя не попадёт в отправление. Для физлица передавайте только
receiver_person, для юрлица — только receiver_company.
POST {BASE_URL}/api/v2/orders/create
Authorization: Bearer {TOKEN}
Content-Type: application/json
{
"sender_district_id": 12,
"sender_person": "Али Валиев",
"sender_phone": "998901234567",
"sender_address": "улица Амира Темура, 1",
"receiver_district_id": 45,
"receiver_person": "Вали Алиев",
"receiver_phone": "998907654321",
"receiver_address": "улица Мустакиллик, 20",
"weight": 1.5,
"service": 1
}
{
"sender_district_id": 12,
"sender_person": "Али Валиев",
"sender_phone": "998901234567",
"receiver_branch_id": 7,
"receiver_person": "Вали Алиев",
"receiver_phone": "998907654321",
"weight": 1.5,
"service": 2
}
{
"success": true,
"data": {
"order_code": "AB123456789UZ",
"price": 4500000,
"api_response": {
"orderNo": "123456",
"barcode": "AB123456789UZ",
"error": 0,
"errorMessage": null,
"errorMessageRu": null,
"orderPrice": 45000
}
}
}
| Поле | Тип | Описание |
|---|---|---|
order_code | string|null | Штрих-код (barcode) — используется во всех последующих запросах и в webhook |
price | integer|null | Стоимость отправления, в тийинах |
api_response.orderNo | string|null | Внутренний номер отправления |
api_response.barcode | string|null | Штрих-код |
api_response.error | integer|null | 0 — успешно, другое значение — ошибка |
api_response.errorMessage | string|null | Текст ошибки |
api_response.errorMessageRu | string|null | Текст ошибки на русском |
api_response.orderPrice | number|null | Цена (в сумах, без тийинов) |
"success": true. Поэтому всегда проверяйте
data.api_response.error: 0 — отправление создано,
иначе — нет.
Пример ответа с ошибкой:
{
"success": true,
"data": {
"order_code": null,
"price": null,
"api_response": {
"orderNo": null,
"barcode": null,
"error": 1,
"errorMessage": "Wrong town code",
"errorMessageRu": "Неверный код города",
"orderPrice": null
}
}
}
Возвращает историю статусов одного отправления по штрих-коду.
GET
{BASE_URL}/api/v2/orders/trace
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
barcode | string | Да | Штрих-код отправления |
GET {BASE_URL}/api/v2/orders/trace?barcode=AB123456789UZ
Authorization: Bearer {TOKEN}
Accept: application/json
{
"success": true,
"data": {
"barcode": "AB123456789UZ",
"date": "2026-06-10 09:00:00",
"weight": 1.5,
"recipient": "Вали Алиев",
"trace": [
{ "code": 1, "name": "Новый", "advanced": "NEW", "statetime": "2026-06-10 09:00:00", "branch": "Центральный склад Ташкента", "description": "Заказ принят" },
{ "code": 9, "name": "Доставлен", "advanced": "COMPLETE", "statetime": "2026-06-15 14:30:00", "branch": "Филиал Самарканд", "description": "Вручено получателю" }
]
}
}
| Поле | Тип | Описание |
|---|---|---|
barcode | string | Штрих-код отправления |
date | string|null | Дата и время приёма |
weight | number|null | Вес (кг) |
recipient | string|null | Получатель |
trace[] | array | История статусов (по возрастанию времени) |
trace[].code | integer | Код статуса (раздел 6) |
trace[].name | string|null | Название статуса (на русском) |
trace[].advanced | string|null | Языконезависимый мнемонический код (например NEW) |
trace[].statetime | string|null | Время статуса |
trace[].branch | string|null | Название филиала или склада, где зафиксирован статус |
trace[].description | string|null | Дополнительный комментарий к статусу |
Если штрих-код не найден:
{
"success": false,
"error": {
"code": -404,
"message": "Данные не найдены"
}
}
Каждый статус отправления обозначается числовым code. Эти коды
используются в трёх местах в одном и том же значении:
trace[].code в ответе статусов отправления;state внутри webhook;code в справочнике статусов.Расшифровку кодов даёт запрос справочника:
GET
{BASE_URL}/api/v2/dictionaries/states
{
"success": true,
"data": [
{ "code": 0, "name": "Ожидает синхронизации", "advanced": "AWAITING_SYNC" },
{ "code": 1, "name": "Новый", "advanced": "NEW" },
{ "code": 9, "name": "Доставлен", "advanced": "COMPLETE" }
]
}
| Поле | Тип | Описание |
|---|---|---|
code | integer | Код статуса |
name | string|null | Название статуса (на русском) |
advanced | string|null | Стабильный языконезависимый мнемонический код |
При ошибке в ответе success = false и возвращается объект
error:
{
"success": false,
"error": {
"code": -2006,
"message": "Необходимо выбрать район"
}
}
| Код | HTTP | Причина |
|---|---|---|
422 | 422 | Ошибка валидации (например, отсутствует receiver_phone) |
401 | 401 | Токен не передан или недействителен |
-423 | 423 | Аккаунт заблокирован |
-401 | 200 | Нет доступа к сервису «Заказы» |
-500 | 200 | Не заполнены параметры доступа для вашего аккаунта — свяжитесь со Starex |
-2001 | 200 | Район отправителя не найден |
-2002 | 200 | Район получателя не найден |
-2004 | 200 | Филиал получателя не найден |
-2005 | 200 | Не переданы ни receiver_person, ни receiver_company |
-2006 | 200 | service=1, но не передан receiver_district_id |
-2007 | 200 | service=2, но не передан receiver_branch_id |
-404 | 200 | Отправление не найдено (для trace) |
100 | 200 | Непредвиденная внутренняя ошибка |
Accept-Language:
uz, ru или en.