🚀 Что такое Koston API?
Koston API — это ваш прямой канал к актуальной информации о товарах, ценах, остатках и статусах заказов магазина лонгбордов Koston-boards.ru. Автоматизируйте свой магазин и работайте быстрее конкурентов.
🎯 Для кого этот API?
- Владельцы интернет-магазинов — автоматическая синхронизация товаров и цен
- Маркетплейсы и агрегаторы — актуальные остатки и описания в реальном времени
- B2B-партнёры — отслеживание статусов заказов и доставки
- Мобильные приложения — интеграция каталога Koston в ваш софт
💎 Почему с нами выгодно работать?
- Актуальные данные — цены и остатки обновляются мгновенно
- Широкий ассортимент — лонгборды, скейтборды, аксессуары Koston и Eagle
- Оперативная информация — статусы заказов и доставки в реальном времени
- Простая интеграция — REST API с HMAC-авторизацией и подробной документацией
- Надёжность — HTTPS, лимиты запросов, полное логирование
📋 Обзор
REST API для партнёрских интернет-магазинов. Предоставляет информацию о товарах, ценах, остатках и статусах заказов в реальном времени.
https://crm.kostonboards.ru/api/v1/Метод: Все запросы — POST
Формат: JSON (UTF-8)
Протокол: HTTPS
Доступные эндпоинты:
| URL | Описание |
|---|---|
POST /api/v1/products | Список товаров |
POST /api/v1/product/{sku} | Детали одного товара |
POST /api/v1/product_price_qty/{sku} | Цена и количество |
POST /api/v1/order_status/{order_numb} | Статус заказа |
POST /api/v1/delivery_status/{order_numb} | Статус доставки |
POST /api/v1/orders | Создание заказа |
🔑 Получение API-ключей
Чтобы начать работу с API, вам нужны два идентификатора: API Key и API Secret. Секретный ключ храните в безопасности — он не показывается повторно.
Способы получения:
Самостоятельно
- Зарегистрируйтесь в системе как партнёр
- Авторизуйтесь в личном кабинете
- Перейдите в раздел «Настройки» → «API Настройки»
- Нажмите «Создать ключ» и сохраните данные
Через менеджера
Свяжитесь с вашим менеджером Koston — он создаст ключи и передаст их вам. Это быстрый способ для новых партнёров.
🔐 Аутентификация
Каждый запрос должен содержать три заголовка:
| Заголовок | Описание |
|---|---|
Authorization | Bearer <api_key> |
X-Signature | HMAC-SHA256 подпись |
X-Timestamp | Unix timestamp (разница ≤ 5 минут) |
Формула подписи:
string_to_sign = method + "|" + path + "|" + timestamp + "|" + body signature = base64(HMAC-SHA256(string_to_sign, api_secret))
📦 Список товаров
Получает список товаров с пагинацией.
Запрос (JSON):
{
"action": "products",
"published": 1,
"page": 1,
"per_page": 100
}
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
published | int | 1 | 1=активные, 0=скрытые, 2=все |
page | int | 1 | Номер страницы |
per_page | int | 100 | Кол-во на страницу (10–500) |
Ответ:
{
"success": true,
"data": {
"products": [
{
"sku": "LD023-B",
"product_name": "Дека лонгборд Koston Constellation Aurora 46/117см",
"full_desc": "",
"char_desc": "",
"brand": "Koston",
"quantity": 1,
"price": 10900.00,
"available_date": null,
"all_photos": "https://static.tildacdn.com/stor6364-3530-4636-a139-393662333332/20723331.jpg",
"published": 1
},
{
"sku": "ARD964",
"product_name": "Дека лонгборд EagleBoards Tropical 46/117см",
"full_desc": "",
"char_desc": "",
"brand": "Eagle",
"quantity": 0,
"price": 8200.00,
"available_date": null,
"all_photos": "https://static.tildacdn.com/stor6163-6664-4166-b634-663035323633/11409251.jpg",
"published": 1
}
],
"pagination": {
"page": 1,
"per_page": 100,
"total": 245,
"pages": 3
}
},
"timestamp": 1722172800
}
🔍 Детали товара
Получает полную информацию о одном товаре по SKU.
Запрос (JSON):
{
"action": "product",
"sku": "LD023-B"
}
Ответ:
{
"success": true,
"data": {
"sku": "LD023-B",
"product_name": "Дека лонгборд Koston Constellation Aurora 46/117см",
"full_desc": "",
"char_desc": "",
"brand": "Koston",
"quantity": 1,
"price": 10900.00,
"available_date": null,
"published": 1,
"all_photos": "https://static.tildacdn.com/stor6364-3530-4636-a139-393662333332/20723331.jpg"
},
"timestamp": 1722172800
}
💰 Цена и количество
Быстрый запрос только цены и остатка товара.
Запрос (JSON):
{
"action": "product_price_qty",
"sku": "LD023-B"
}
Ответ:
{
"success": true,
"data": {
"sku": "LD023-B",
"price": 10900.00,
"quantity": 1,
"published": 1
},
"timestamp": 1722172800
}
📋 Статус заказа
Получает статус заказа по номеру.
Запрос (JSON):
{
"action": "order_status",
"order_numb": "ORD-2026-001"
}
Ответ:
{
"success": true,
"data": {
"order_numb": "ORD-2026-001",
"status": "paid",
"name": "Иванов Иван",
"phone": "+7 (999) 123-45-67",
"final_summ": 10980.00,
"created_date": "2026-07-25T15:30:00+03:00"
},
"timestamp": 1722172800
}
Допустимые статусы:
| Статус | Описание |
|---|---|
new | Новый |
paid | Оплачен |
processing | В обработке |
shipped | Отправлен |
delivered | Доставлен |
cancelled | Отменён |
🛒 Создание заказа
Создаёт новый заказ в CRM Koston. Нужен метод POST и право orders.create у API-ключа.
items[].price игнорируется, если у ключа нет
сторонних цен. Своя цена учитывается только при "own_prices": true.
total = сумма позиций + delivery_cost.
Параметры запроса (JSON):
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
name | string | ✅ | Имя и фамилия получателя |
phone | string | ✅ | Телефон, 10–15 цифр |
email | string | — | E-mail (валидируется) |
city | string | — | Город доставки |
delivery_address | string | — | Адрес или ПВЗ |
ship_type | string | — | Способ доставки (свободный текст) |
pay_type | string | — | Способ оплаты |
delivery_cost | number | — | Стоимость доставки (≥ 0, по умолчанию 0) |
comment | string | — | Комментарий (до 1000 символов) |
source | string | — | Метка источника, по умолчанию api_partner |
channel | string | — | Канал заказа, по умолчанию Koston API |
cookie_id | string | — | ID посетителя (для склейки), если есть |
own_prices | bool | — | true — принимать цены из items[].price |
items[] | array | ✅ | Позиции заказа (1–100) |
items[].sku | string | ✅ | Артикул товара Koston |
items[].quantity | int | ✅ | Количество, 1–1000 |
items[].price | number | — | Цена (только при own_prices: true) |
Пример запроса:
POST https://crm.kostonboards.ru/api/v1/orders
{
"name": "Иванов Иван",
"phone": "+7 (999) 123-45-67",
"email": "ivan@example.com",
"city": "Санкт-Петербург",
"delivery_address": "Невский пр., 1",
"ship_type": "СДЭК",
"pay_type": "Картой онлайн",
"delivery_cost": 350,
"comment": "Позвонить за час",
"source": "api_partner",
"items": [
{ "sku": "LB-DANCE-01", "quantity": 1 },
{ "sku": "WH-SETS-07", "quantity": 2 }
]
}
Ответ:
{
"success": true,
"data": {
"order_id": 100234,
"order_numb": "KOSTON-7F3A1",
"status": "new",
"items_count": 2,
"subtotal": 12400.00,
"delivery_cost": 350.00,
"total": 12750.00,
"currency": "RUB",
"custom_prices": false,
"created_at": "2026-07-25 15:30:00"
},
"timestamp": 1722172800
}
Коды ошибок:
| Код | HTTP | Когда возникает |
|---|---|---|
METHOD_NOT_ALLOWED | 405 | Запрос не через POST |
VALIDATION_ERROR | 422 | Нет имени, некорректный телефон/email, неверные items/quantity |
PRODUCT_NOT_FOUND | 404 | SKU не найден |
OUT_OF_STOCK | 409 | Товара не хватает на складе |
ACCESS_DENIED | 403 | У ключа нет права orders.create |
INTERNAL_ERROR | 500 | Ошибка сохранения заказа |
🚚 Статус доставки
Получает статус доставки по номеру заказа.
Запрос (JSON):
{
"action": "delivery_status",
"order_numb": "ORD-2026-001"
}
Ответ:
{
"success": true,
"data": {
"order_numb": "ORD-2026-001",
"delivery_status": "В пути",
"tracking_number": "1234567890"
},
"timestamp": 1722172800
}
⚠️ Коды ошибок
| HTTP | Код | Описание |
|---|---|---|
| 400 | INVALID_REQUEST | Неверный формат запроса |
| 401 | UNAUTHORIZED | Неверный API-ключ |
| 401 | INVALID_SIGNATURE | Неверная подпись |
| 401 | EXPIRED_TIMESTAMP | Истекло время подписи (>5 мин) |
| 403 | ACCESS_DENIED | Нет прав на действие |
| 403 | KEY_DISABLED | Ключ заблокирован |
| 404 | PRODUCT_NOT_FOUND | Товар не найден |
| 404 | ORDER_NOT_FOUND | Заказ не найден |
| 429 | RATE_LIMIT_EXCEEDED | Превышен лимит запросов |
| 500 | INTERNAL_ERROR | Внутренняя ошибка сервера |
🛠️ Тестер запросов
Используйте этот инструмент для тестирования API-запросов прямо в браузере. Данные шифруются на лету и никуда не отправляются — обработка происходит полностью на стороне клиента.
1. Введите название вашей компании, API-ключ и секретный ключ
2. Система автоматически проверит данные (подпись вычисляется локально)
3. Выберите или введите API-запрос
4. Нажмите «Отправить» — подпись создастся и отправится на сервер
Шаг 1: Подключение
Введите данные — проверка происходит автоматически при вводе
Шаг 2: Выберите запрос
💻 Примеры кода
PHP:
<?php
$apiKey = 'ваш_api_key';
$apiSecret = 'ваш_api_secret';
$timestamp = time();
$path = '/api/v1/products';
$method = 'POST';
$body = json_encode([
'action' => 'products',
'published' => 1,
'page' => 1,
'per_page' => 100
]);
$stringToSign = $method . '|' . $path . '|' . $timestamp . '|' . $body;
$signature = base64(hash_hmac('sha256', $stringToSign, $apiSecret, true));
$url = 'https://crm.kostonboards.ru' . $path;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $apiKey",
"X-Signature: $signature",
"X-Timestamp: $timestamp",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
?>
JavaScript (Node.js):
const crypto = require('crypto');
const apiKey = 'ваш_api_key';
const apiSecret = 'ваш_api_secret';
const timestamp = Math.floor(Date.now() / 1000);
const path = '/api/v1/products';
const method = 'POST';
const body = JSON.stringify({
action: 'products',
published: 1,
page: 1,
per_page: 100
});
const stringToSign = method + '|' + path + '|' + timestamp + '|' + body;
const signature = crypto.createHmac('sha256', apiSecret)
.update(stringToSign)
.digest('base64');
fetch('https://crm.kostonboards.ru' + path, {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + apiKey,
'X-Signature': signature,
'X-Timestamp': timestamp.toString(),
'Content-Type': 'application/json'
},
body: body
})
.then(res => res.json())
.then(data => console.log(data));