API товаров (режим "с ссылками")

Используйте эти эндпоинты, если к каналу привязан набор товаров в режиме "с ссылками", а карточками вы управляете из внешней CMS.

Токен должен иметь scope products.

Базовый URL: https://api.apx.chat/api

Перед началом

  • В разделе Настройки -> Ресурсы AI -> Товары (с ссылками) создайте набор товаров.
  • В настройках канала включите AI оператора и выберите этот набор.
  • Выпустите API токен со scope products.
  • Убедитесь, что каждый товар имеет уникальный id и валидный href.

Где взять channelId

const url = "https://api.apx.chat/api/external/channels";

const response = await fetch(url, {
  method: "GET",
  headers: {
    "X-Api-Token": "tok_xxxxx",
  },
});

const data = await response.json();
console.log(data);

Подробно: /docs/channels

Структура товара

Минимальный JSON:

JSON
{
  "id": "sku-1001",
  "href": "https://shop.example.com/products/sku-1001",
  "title": "Название товара",
  "description": "Короткое описание",
  "price": 1990,
  "priceOld": 2490,
  "images": ["https://cdn.example.com/images/sku-1001-main.jpg"],
  "tags": ["кроссовки", "мужские"],
  "payload": {
    "brand": "Acme",
    "inventory": 42
  }
}

id и href обязательны. Остальные поля передаются как метаданные.

Получение списка товаров

GET /api/ai-operator/external/channels/{channelId}/products

Параметры:

  • page (по умолчанию 1)
  • limit (по умолчанию 20)
const url = "https://api.apx.chat/api/ai-operator/external/channels/{channelId}/products?page=1&limit=20";

const response = await fetch(url, {
  method: "GET",
  headers: {
    "X-Api-Token": "tok_xxxxx",
  },
});

const data = await response.json();
console.log(data);

Создание товара

POST /api/ai-operator/external/channels/{channelId}/products

const url = "https://api.apx.chat/api/ai-operator/external/channels/{channelId}/products";

const payload = {
"id": "sku-1001",
"href": "https://shop.example.com/products/sku-1001",
"title": "Название товара"
};

const response = await fetch(url, {
  method: "POST",
  headers: {
    "X-Api-Token": "tok_xxxxx",
    "Content-Type": "application/json",
  },
  body: JSON.stringify(payload),
});

const data = await response.json();
console.log(data);

Обновление товара

PUT /api/ai-operator/external/channels/{channelId}/products/{productId}

При обновлении поле id можно не передавать в теле, оно берется из URL.

Удаление товара

DELETE /api/ai-operator/external/channels/{channelId}/products/{productId}

После удаления карточка и связанные эмбеддинги стираются.

Коды ответов

  • 200 - успех
  • 400 - невалидный JSON или отсутствуют обязательные поля
  • 401 - невалидный токен или недостаточный scope