← Вернуться в админ-панель

DashGO API

Единое API для расчёта стоимости доставки, оформления заказов и отслеживания посылок через все курьерские службы Азербайджана.

Base URL: https://api.dashgo.az/api
Формат: JSON
Версия: 1.0

Аутентификация

Все запросы к API должны содержать ваш API ключ в заголовке X-API-Key. Ключ выдаётся при регистрации мерчанта в системе DashGO.

Как получить API ключ? Свяжитесь с нашей командой или зарегистрируйте мерчанта через админ-панель. API ключ будет сгенерирован автоматически.
Заголовок запроса
// Каждый запрос должен содержать заголовок:
X-API-Key: mk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
Пример с cURL
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 ключ в URL параметрах. Используйте только заголовок X-API-Key. Храните ключ на стороне сервера, не включайте его в клиентский JavaScript код.

Коды ответов

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 Ленкорань
Расширение географии Список городов будет расширяться. Следите за обновлениями API. Если нужный город не указан в списке, свяжитесь с поддержкой.

Расчёт стоимости доставки

POST /api/calculate-shipping Рассчитать стоимость доставки у всех курьеров

Возвращает список всех доступных курьеров с ценами, отсортированный от дешёвого к дорогому. Используется для отображения вариантов доставки покупателю.

Параметры запроса (body JSON)
Параметр Тип Обязат. Описание
weight number Да Фактический вес посылки в килограммах
from string Да Город отправления (см. список городов)
to string Да Город назначения (см. список городов)
type string Нет Тип отправления: letter, parcel_small, parcel_medium, parcel_large
dimensions object Нет Габариты: { length, width, height } в сантиметрах. Используется для расчёта объёмного веса
extras object Нет Дополнительные услуги (см. ниже)
Объект extras
Параметр Тип Описание
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}
  }'
Успешный ответ (200)
{
  "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"
  }
}
Ошибка (400)
{
  "error": "Не указаны обязательные параметры: weight, from, to"
}
Объёмный вес Если указаны габариты (dimensions), система автоматически рассчитает объёмный вес по формуле: (длина × ширина × высота) / 5000. Для расчёта цены используется максимум из фактического и объёмного веса.

Создание заказа

POST /api/create-order Оформить заказ на доставку

Создаёт заказ на доставку у выбранного курьера. Обычно вызывается после того, как покупатель выбрал вариант доставки из результатов calculate-shipping.

Параметры запроса (body JSON)
Параметр Тип Обязат. Описание
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']}")
Успешный ответ (200)
{
  "success": true,
  "order_id": 42,
  "tracking_number": "DG-X7KP3N",
  "status": "created"
}

Список заказов

GET /api/orders Получить историю заказов
Query параметры
Параметр Тип Обязат. Описание
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']}")
Успешный ответ (200)
{
  "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"
    }
  ]
}

Список курьеров

GET /api/couriers Получить список курьерских служб

Возвращает список всех активных курьерских служб, доступных на платформе.

Query параметры
Параметр Тип Обязат. Описание
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']}")
Успешный ответ (200)
{
  "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
    }
  ]
}

Статистика

GET /api/stats Общая статистика по заказам

Возвращает сводную статистику: количество заказов, общий оборот, средний чек, количество курьеров и мерчантов.

Пример запроса
const response = await fetch('https://api.dashgo.az/api/stats', {
  headers: { 'X-API-Key': 'mk_ваш_ключ' }
});

const data = await response.json();
console.log(data.stats);
Успешный ответ (200)
{
  "success": true,
  "stats": {
    "total_orders": 156,
    "total_revenue": 2340.50,
    "avg_price": 15.00,
    "courier_count": 4,
    "merchant_count": 3
  }
}

Быстрый старт интеграции

Пошаговая инструкция для подключения вашего мерчанта к DashGO.

1
Получите API ключ Зарегистрируйте мерчанта и получите ключ формата mk_...
2
Рассчитайте стоимость доставки Вызовите POST /api/calculate-shipping при оформлении заказа покупателем. Покажите варианты доставки.
3
Создайте заказ на доставку После оплаты вызовите POST /api/create-order с выбранным курьером и ценой.
4
Отслеживайте доставку Используйте GET /api/orders для проверки статуса. Сохраните tracking_number для покупателя.