Что покрывает API
API продавца Dukan открывает тот же магазин, с которым работают панель управления и приложение «Менеджер»: товары, категории, бренды, подборки, блоки главной, заказы, аналитику и данные самого магазина.
Это шов для тех интеграций, о которых магазины действительно просят: загрузить прайс поставщика, вытянуть заказы в бухгалтерию или свести остатки со складом, который у вас уже работает.
Базовый адрес
https://dukan.biz/api/merchant/v1
Все пути в этом руководстве указаны относительно него, а все ответы приходят в JSON.
Получите ключ API
Откройте «Настройки», затем «Разработчикам», и создайте ключ. Дайте ему имя, которое говорит, для чего он, чтобы позже его можно было отозвать, не гадая, что при этом сломается.
Ключ показывается один раз — в момент создания. Скопируйте его тогда; если он потерян, удалите его и выпустите новый.
Аутентификация запроса
Передавайте ключ как bearer-токен:
Authorization: Bearer YOUR_API_KEY
Accept: application/json
Ключ принадлежит одному магазину и несёт те права, которые вы ему дали. Запросы к другому магазину отклоняются, а не возвращают молча пустоту.
Как сделать запрос
GET /products?status=published&limit=50
GET /orders?status=new
GET /analytics?from=2026-08-01&to=2026-08-31
Списки постраничные, и каждый ответ несёт курсор следующей страницы. Идите по курсору, а не считайте страницы: каталог меняется, пока вы его читаете.
Запись в магазин
POST, PATCH и DELETE покрывают то же поле: создание и изменение товаров и их вариантов, перевод заказа на следующую стадию, правку категорий, брендов и подборок и замену списка блоков главной.
Деньги передаются и возвращаются в минимальных единицах целыми числами, а не десятичными дробями, поэтому по дороге через вашу интеграцию ничего не округляется.
Вебхуки
Зарегистрируйте адрес, и Dukan будет отправлять на него события магазина: новый заказ, переход заказа на другую стадию, окончание товара.
Каждая доставка подписана — проверяйте подпись, прежде чем что-то делать с телом. Отвечайте кодом 2xx быстро, а работу выполняйте после: неподтверждённая доставка повторяется с растущим интервалом, поэтому ваш обработчик должен считать повтор того же события тем же событием.
Ограничения частоты
Запросы ограничены по ключу. Каждый ответ несёт остаток лимита в заголовках, а запрос сверх лимита возвращается кодом 429 с числом секунд ожидания.
Прочитайте список один раз и закэшируйте его вместо постоянного опроса. Для того, что нужно узнавать быстро, используйте вебхук, а не цикл.
Ошибки
Ошибки приходят с правильным HTTP-статусом и телом JSON, называющим поле, в котором дело:
401— ключ отсутствует, неверен или отозван.403— ключ верен, но такого делать не может.404— такой записи в этом магазине нет.422— запрос понят, но поле неверно; тело говорит какое.429— слишком много запросов.
Версии
Версия указана в пути. Добавления — новое поле, новый метод — происходят внутри версии, поэтому пишите клиентов так, чтобы они пропускали незнакомые поля. Всё, что сломало бы существующего клиента, получает новую версию и срок на переход.
Поддержка для разработчиков
Напишите на [email protected], коротко описав систему, которую вы подключаете, что вы уже пробовали и на каком запросе и ответе застряли.