DashGO API
Единое API для расчёта стоимости доставки, оформления заказов и отслеживания посылок через все курьерские службы Азербайджана.
Аутентификация
Все запросы к API должны содержать ваш API ключ в заголовке X-API-Key. Ключ выдаётся при регистрации мерчанта в системе DashGO.
// Каждый запрос должен содержать заголовок: X-API-Key: mk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
curl -X POST https://api.dashgo.az/api/calculate-shipping \ -H "Content-Type: application/json" \ -H "X-API-Key: mk_a1b2c3d4e5f6..." \ -d '{"weight": 2, "from": "baku_center", "to": "ganja"}'
Коды ответов
API использует стандартные HTTP коды ответов для индикации успеха или ошибки.
| Код | Статус | Описание |
|---|---|---|
| 200 | OK | Запрос выполнен успешно |
| 400 | Bad Request | Не указаны обязательные параметры или неверный формат данных |
| 401 | Unauthorized | Отсутствует или неверный API ключ |
| 404 | Not Found | Endpoint не найден или ресурс не существует |
| 429 | Too Many Requests | Превышен лимит запросов (100 запросов/минуту) |
| 500 | Internal Server Error | Внутренняя ошибка сервера. Свяжитесь с поддержкой |
{
"error": "Не указаны обязательные параметры: weight, from, to"
}
Города и маршруты
При расчёте стоимости и создании заказа используйте следующие идентификаторы городов.
baku_center Баку (Центр)baku_nasimi Баку (Насими)baku_suburb Баку (пригород)sumgait Сумгаитganja Гянджаlankaran ЛенкораньРасчёт стоимости доставки
Возвращает список всех доступных курьеров с ценами, отсортированный от дешёвого к дорогому. Используется для отображения вариантов доставки покупателю.
| Параметр | Тип | Обязат. | Описание |
|---|---|---|---|
| weight | number | Да | Фактический вес посылки в килограммах |
| from | string | Да | Город отправления (см. список городов) |
| to | string | Да | Город назначения (см. список городов) |
| type | string | Нет | Тип отправления: letter, parcel_small, parcel_medium, parcel_large |
| dimensions | object | Нет | Габариты: { length, width, height } в сантиметрах. Используется для расчёта объёмного веса |
| extras | object | Нет | Дополнительные услуги (см. ниже) |
| Параметр | Тип | Описание |
|---|---|---|
| fragile | boolean | Хрупкий груз (+3 AZN) |
| insurance | boolean | Страховка (1% от cargo_value) |
| cargo_value | number | Объявленная стоимость груза в AZN (обязательно если insurance = true) |
| cod | boolean | Наложенный платёж (+2 AZN) |
const response = await fetch('https://api.dashgo.az/api/calculate-shipping', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': 'mk_ваш_ключ' }, body: JSON.stringify({ weight: 2.5, from: 'baku_center', to: 'ganja', type: 'parcel_medium', dimensions: { length: 30, width: 20, height: 15 }, extras: { fragile: true, insurance: true, cargo_value: 150 } }) }); const data = await response.json(); console.log(data.options); // Список вариантов доставки
$ch = curl_init('https://api.dashgo.az/api/calculate-shipping'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'X-API-Key: mk_ваш_ключ' ], CURLOPT_POSTFIELDS => json_encode([ 'weight' => 2.5, 'from' => 'baku_center', 'to' => 'ganja', 'type' => 'parcel_medium', 'dimensions' => ['length' => 30, 'width' => 20, 'height' => 15], 'extras' => [ 'fragile' => true, 'insurance' => true, 'cargo_value' => 150 ] ]) ]); $response = curl_exec($ch); $data = json_decode($response, true); foreach ($data['options'] as $option) { echo $option['courier_name'] . ': ' . $option['price'] . ' AZN'; }
import requests response = requests.post( 'https://api.dashgo.az/api/calculate-shipping', headers={ 'Content-Type': 'application/json', 'X-API-Key': 'mk_ваш_ключ' }, json={ 'weight': 2.5, 'from': 'baku_center', 'to': 'ganja', 'type': 'parcel_medium', 'dimensions': {'length': 30, 'width': 20, 'height': 15}, 'extras': { 'fragile': True, 'insurance': True, 'cargo_value': 150 } } ) data = response.json() for option in data['options']: print(f"{option['courier_name']}: {option['price']} AZN")
curl -X POST https://api.dashgo.az/api/calculate-shipping \ -H "Content-Type: application/json" \ -H "X-API-Key: mk_ваш_ключ" \ -d '{ "weight": 2.5, "from": "baku_center", "to": "ganja", "type": "parcel_medium", "dimensions": {"length": 30, "width": 20, "height": 15}, "extras": {"fragile": true, "insurance": true, "cargo_value": 150} }'
{
"success": true,
"options": [
{
"courier_id": 1,
"courier_name": "AzerPost Express",
"price": 12.45,
"rating": 4.2,
"delivery_time": "3-5 дней",
"distance": 350
},
{
"courier_id": 2,
"courier_name": "Baku Express",
"price": 15.80,
"rating": 4.7,
"delivery_time": "2-3 дня",
"distance": 350
}
],
"calculation_details": {
"effective_weight": 2.5,
"distance": 350,
"from": "baku_center",
"to": "ganja"
}
}
{
"error": "Не указаны обязательные параметры: weight, from, to"
}
(длина × ширина × высота) / 5000. Для расчёта цены используется максимум из фактического и объёмного веса.
Создание заказа
Создаёт заказ на доставку у выбранного курьера. Обычно вызывается после того, как покупатель выбрал вариант доставки из результатов calculate-shipping.
| Параметр | Тип | Обязат. | Описание |
|---|---|---|---|
| courier_id | number | Да | ID курьерской службы (из результатов calculate-shipping) |
| weight | number | Да | Вес посылки в килограммах |
| from | string | Да | Город отправления |
| to | string | Да | Город назначения |
| price | number | Да | Стоимость доставки в AZN (из результатов calculate-shipping) |
| merchant_id | string | Нет | ID вашего мерчанта (автоматически определяется по API ключу) |
const response = await fetch('https://api.dashgo.az/api/create-order', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': 'mk_ваш_ключ' }, body: JSON.stringify({ courier_id: 1, weight: 2.5, from: 'baku_center', to: 'ganja', price: 12.45 }) }); const data = await response.json(); console.log(data.tracking_number); // "DG-ABC123"
$ch = curl_init('https://api.dashgo.az/api/create-order'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'X-API-Key: mk_ваш_ключ' ], CURLOPT_POSTFIELDS => json_encode([ 'courier_id' => 1, 'weight' => 2.5, 'from' => 'baku_center', 'to' => 'ganja', 'price' => 12.45 ]) ]); $response = curl_exec($ch); $data = json_decode($response, true); echo 'Трекинг: ' . $data['tracking_number'];
import requests response = requests.post( 'https://api.dashgo.az/api/create-order', headers={ 'Content-Type': 'application/json', 'X-API-Key': 'mk_ваш_ключ' }, json={ 'courier_id': 1, 'weight': 2.5, 'from': 'baku_center', 'to': 'ganja', 'price': 12.45 } ) data = response.json() print(f"Трекинг: {data['tracking_number']}")
{
"success": true,
"order_id": 42,
"tracking_number": "DG-X7KP3N",
"status": "created"
}
Список заказов
| Параметр | Тип | Обязат. | Описание |
|---|---|---|---|
| merchant_id | string | Нет | Фильтр по ID мерчанта |
| limit | number | Нет | Максимальное количество записей (по умолчанию: 50) |
const response = await fetch('https://api.dashgo.az/api/orders?limit=20', { headers: { 'X-API-Key': 'mk_ваш_ключ' } }); const data = await response.json(); console.log(data.orders); // Массив заказов
$ch = curl_init('https://api.dashgo.az/api/orders?limit=20'); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['X-API-Key: mk_ваш_ключ'] ]); $data = json_decode(curl_exec($ch), true); foreach ($data['orders'] as $order) { echo "#{$order['id']}: {$order['from_city']} → {$order['to_city']}\n"; }
import requests response = requests.get( 'https://api.dashgo.az/api/orders', headers={'X-API-Key': 'mk_ваш_ключ'}, params={'limit': 20} ) data = response.json() for order in data['orders']: print(f"#{order['id']}: {order['from_city']} → {order['to_city']}")
{
"success": true,
"orders": [
{
"id": 42,
"merchant_id": "shop_123",
"courier_id": 1,
"weight": 2.5,
"from_city": "baku_center",
"to_city": "ganja",
"price": 12.45,
"status": "created",
"created_at": "2026-02-13T10:30:00.000Z"
}
]
}
Список курьеров
Возвращает список всех активных курьерских служб, доступных на платформе.
| Параметр | Тип | Обязат. | Описание |
|---|---|---|---|
| include_inactive | string | Нет | Если true — включить неактивных курьеров в результат |
const response = await fetch('https://api.dashgo.az/api/couriers', { headers: { 'X-API-Key': 'mk_ваш_ключ' } }); const data = await response.json(); console.log(data.couriers); // Массив курьерских служб
import requests response = requests.get( 'https://api.dashgo.az/api/couriers', headers={'X-API-Key': 'mk_ваш_ключ'} ) data = response.json() for c in data['couriers']: print(f"{c['name']} — рейтинг: {c['rating']}")
{
"success": true,
"couriers": [
{
"id": 1,
"name": "AzerPost Express",
"short_name": "azerpost",
"base_price": 3.0,
"price_per_kg": 1.5,
"rating": 4.2,
"is_active": 1
},
{
"id": 2,
"name": "Baku Express",
"short_name": "baku_express",
"base_price": 5.0,
"price_per_kg": 2.0,
"rating": 4.7,
"is_active": 1
}
]
}
Статистика
Возвращает сводную статистику: количество заказов, общий оборот, средний чек, количество курьеров и мерчантов.
const response = await fetch('https://api.dashgo.az/api/stats', { headers: { 'X-API-Key': 'mk_ваш_ключ' } }); const data = await response.json(); console.log(data.stats);
{
"success": true,
"stats": {
"total_orders": 156,
"total_revenue": 2340.50,
"avg_price": 15.00,
"courier_count": 4,
"merchant_count": 3
}
}
Быстрый старт интеграции
Пошаговая инструкция для подключения вашего мерчанта к DashGO.
mk_...
POST /api/calculate-shipping при оформлении заказа покупателем. Покажите варианты доставки.
POST /api/create-order с выбранным курьером и ценой.
GET /api/orders для проверки статуса. Сохраните tracking_number для покупателя.