REST + JSON. Базовый адрес: /api/v1. Всё, что видит покупатель на сайте, можно читать без ключа. Изменения — только с ключом с правом записи.
Создайте ключ в админке → «Интеграции и API». Передавайте его в заголовке:
Authorization: Bearer abk_XXXXXXXXXXXXXXXX
Ключ «только чтение» даёт доступ к заказам, фиду и журналу. Ключ «чтение + запись» — ещё и к созданию/изменению товаров, категорий, медиа, статусов заказов и запуску выгрузок. Для фида ключ можно передать параметром ?key=.
/categoriesбез ключаКатегории в порядке плиток на главной (с числом опубликованных товаров).
curl https://ВАШ-ДОМЕН/api/v1/categories
/categories/{slug}/productsбез ключаТовары категории. Тот же набор параметров есть у GET /products (плюс category, q, ids).
| sort | popular · new · price_asc · price_desc · rating · discount |
| new, sale, has_video, in_stock | фильтры: =true |
| price_min, price_max | диапазон цены, ₽ |
| q | поиск по названию, артикулу, описанию |
| ids | список id через запятую (корзина, избранное) |
| page, per_page | пагинация (по умолчанию 24, максимум 100) |
GET /api/v1/categories/vases/products?sort=price_asc&has_video=true
{ "category": { "id": 1, "slug": "vases", "name": "Вазы" },
"data": [ { "id": 3, "sku": "AB-0103", "name": "Ваза «Капля»…", "price": 690, "old_price": 890,
"discount": 22, "stock": 40, "rating": 4.7, "reviews_count": 342, "is_new": false,
"media": [ { "id": 7, "type": "image", "url": "/uploads/…" },
{ "id": 9, "type": "video", "url": "/uploads/….mp4" } ] } ],
"meta": { "page": 1, "per_page": 24, "total": 8, "pages": 1 } }/products/{id или sku}без ключаКарточка товара: описание, характеристики (attributes), фото и видео по порядку карусели, похожие товары (related).
/productsзаписьcurl -X POST https://ВАШ-ДОМЕН/api/v1/products \
-H "Authorization: Bearer abk_…" -H "Content-Type: application/json" \
-d '{ "name": "Ваза «Волна» 18 см", "sku": "AB-0142", "category": "vases",
"price": 1290, "old_price": 1590, "stock": 24, "status": "published",
"description": "…", "attributes": { "Высота": "18 см" },
"publish_to": ["site", "ozon"], "external_ids": { "wb_nm_id": "123", "wb_barcode": "460…" } }'
status: draft · published · archived. category — slug или id.
/products/{id или sku}записьЧастичное обновление — передайте только меняющиеся поля. Удобно для синхронизации остатков и цен со складом/1С:
PATCH /api/v1/products/AB-0142
{ "stock": 30, "price": 1190 }/products/{id}записьПереносит в архив. ?hard=true — удаляет навсегда вместе с файлами.
/products/{id}/mediaзаписьmultipart/form-data, поле file (можно несколько, до 20). Форматы: JPG, PNG, WEBP, GIF, AVIF, SVG, MP4, WEBM, MOV. position — место в карусели (0 = обложка).
curl -X POST https://ВАШ-ДОМЕН/api/v1/products/142/media \ -H "Authorization: Bearer abk_…" \ -F file=@vase-front.jpg -F file=@vase-360.mp4
/products/{id}/media/orderзапись{ "ids": [12, 9, 10] }/media/{id}запись/categories · PATCH/categories/{id} · DELETE/categories/{id}запись{ "name": "Вазы", "slug": "vases", "description": "Для сухоцветов", "color": "#F2DDD5",
"dark": false, "cover_url": "/uploads/…", "visible": true }
PATCH /categories/order с {"ids":[…]} — порядок плиток. Картинку загрузите через POST /uploads (поле file) и передайте полученный url.
/ordersбез ключаОформление заказа (так работает корзина сайта). Цены берутся из базы, остатки списываются.
{ "customer_name": "Анна", "phone": "+7 900 000-00-00", "email": "", "address": "…", "comment": "",
"items": [ { "product_id": 1, "qty": 2 } ] }/orders · /orders/{id}чтениеФильтры: status (new · confirmed · printing · shipped · done · cancelled), source, page, per_page.
/orders/{id}запись{ "status": "shipped" }/integrations/{ozon|wildberries}/syncзаписьФоновая выгрузка цен и/или остатков ({"scope":"prices"|"stocks"|"all"}) по товарам с отметкой нужного канала. Доступы маркетплейсов задаются в админке. Результат — GET /integrations/jobs.
/feeds/yml?key=…чтениеYML-фид каталога для Яндекс Маркета и агрегаторов.
Добавьте адрес в админке. На каждое событие придёт POST с JSON { event, created_at, data } и заголовком X-Abik-Signature: sha256=… — HMAC-SHA256 тела запроса по секрету вебхука.
| order.created | новый заказ |
| order.status_changed | смена статуса заказа |
| product.created / updated / deleted | изменения каталога |
| product.stock_changed | изменился остаток |
// проверка подписи (Node.js)
const sig = 'sha256=' + crypto.createHmac('sha256', SECRET).update(rawBody).digest('hex');
if (sig !== req.headers['x-abik-signature']) return res.status(401).end();
Ответ с кодом 4xx/5xx и телом { "error": "текст" }. 401 — нет ключа, 403 — ключ только для чтения, 404 — не найдено, 409 — товара нет в наличии.