Подключение отправки Orders и Events по API

По этой странице можно быстро собрать интеграцию отправки заказов, получения заказа и статуса, а также отправки событий. Здесь есть подготовка проекта, примеры JSON, структура запросов, таблицы полей и диагностика ошибок.

Order Endpoint
https://kontrol-zakazov.ru/api/orders
Order Update Endpoint
https://kontrol-zakazov.ru/api/orders/{id}
Order Status Endpoint
https://kontrol-zakazov.ru/api/orders/{id}/status
Events Endpoint
https://kontrol-zakazov.ru/api/events

Шаг 1. Подготовка и приложение

  1. Создайте проект в панели «Контроль заказов».
  2. Скопируйте API-ключ в настройках проекта.
  3. Добавьте API-ключ в backend или CMS-модуль.
  4. Проверьте отправку событий на тестовом заказе.
Список проектов и ключей API
Тестовая отправка заявки

Шаг 2. Общие правила запросов

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json

Важно: Не публикуйте API-ключ в frontend-коде. Отправляйте запросы с backend сервера или из защищенного CMS-модуля.

Шаг 3. Отправка заказа (Orders)

Endpoint:POST https://kontrol-zakazov.ru/api/orders

ПолеТипОбязательноеОписание
order_idstringДаУникальный ID заказа во внешней системе.
sourcestringДаИсточник заявки: site, wordpress, woocommerce или custom.
statusstringНетНачальный статус заявки.
customerobjectНетИмя, телефон, email и дополнительные контакты клиента.
productsarrayНетСписок товаров или услуг в заказе.
amountnumberНетСумма заказа.
currencystringНетВалюта заказа, например RUB или USD.
commentstringНетКомментарий клиента или менеджера.
metadataobjectНетПроизвольные технические данные интеграции.
created_atstringНетДата создания заказа во внешней системе.
Пример fetch (frontend)
fetch('https://kontrol-zakazov.ru/api/orders', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    order_id: 'SHOP-1001',
    source: 'site',
    customer: {
      name: 'Иван Петров',
      phone: '+7 980 600-00-00',
      email: 'client@example.com'
    },
    amount: 12990,
    currency: 'RUB',
    comment: 'Нужна доставка завтра'
  })
});
Пример cURL (server)
curl -X POST https://kontrol-zakazov.ru/api/orders \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "order_id": "SHOP-1001",
    "source": "site",
    "customer": {
      "name": "Иван Петров",
      "phone": "+7 980 600-00-00"
    },
    "amount": 12990,
    "currency": "RUB"
  }'

Шаг 4. Получение заказа и статуса

Получить:GET https://kontrol-zakazov.ru/api/orders/{id}
Статус:GET https://kontrol-zakazov.ru/api/orders/{id}/status

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

ПолеТипОбязательноеОписание
order_idnumberДаВнутренний ID заявки в Контроль заказов.
statusstringДаТекущий статус заявки: new, processing, done или canceled.
customerobjectНетКонтактные данные клиента.
updated_atstringДаДата последнего обновления в ISO 8601.
Статус заказа
{
  "order_id": 123,
  "status": "processing",
  "updated_at": "2026-06-26T10:20:00Z"
}
Один заказ по external_id
{
  "order_id": 123,
  "external_id": "SHOP-1001",
  "status": "new",
  "customer": {
    "name": "Иван Петров",
    "phone": "+7 980 600-00-00"
  }
}

Шаг 5. Отправка события (Events)

Endpoint:POST https://kontrol-zakazov.ru/api/events

События подходят для форм обратной связи, кликов, лид-магнитов, callback-заявок и других действий пользователя на сайте.

ПолеТипОбязательноеОписание
eventstringДаКлюч события: form_submit, callback_request, button_click.
sourcestringДаИсточник события: site, wordpress, bitrix, landing.
payloadobjectНетДополнительные данные события.
Пример fetch (frontend)
fetch('https://kontrol-zakazov.ru/api/events', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    event: 'form_submit',
    source: 'landing',
    payload: {
      form: 'callback',
      page: location.href
    }
  })
});
Пример cURL (server)
curl -X POST https://kontrol-zakazov.ru/api/events \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "event": "form_submit",
    "source": "landing",
    "payload": {
      "form": "callback",
      "page": "https://example.com"
    }
  }'
События в интерфейсе Контроль заказов

Шаг 6. Универсальный JS helper для сайта

const KONTROL_ZAKAZOV_ENDPOINTS = {
  orders: 'https://kontrol-zakazov.ru/api/orders',
  events: 'https://kontrol-zakazov.ru/api/events',
};

async function sendToKontrolZakazov(type, payload) {
  const response = await fetch(KONTROL_ZAKAZOV_ENDPOINTS[type], {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json',
      'Accept': 'application/json',
    },
    body: JSON.stringify(payload),
  });

  if (!response.ok) {
    const error = await response.json().catch(() => ({}));
    throw new Error(error.message || 'KontrolZakazov request failed');
  }

  return response.json();
}

document.querySelector('[data-order-form]')?.addEventListener('submit', async (event) => {
  event.preventDefault();

  const form = event.currentTarget;
  const data = new FormData(form);

  await sendToKontrolZakazov('orders', {
    order_id: crypto.randomUUID(),
    source: 'site',
    customer: {
      name: data.get('name'),
      phone: data.get('phone'),
      email: data.get('email'),
    },
    comment: data.get('comment'),
  });
});

Шаг 7. Ошибки и диагностика

HTTP кодПричинаЧто проверитьКомментарий
401API key missing / invalid API keyУказан ли ключ и не просрочен ли токен.Проверьте Authorization header.
403Domain forbiddenДомен отправителя добавлен в проект.Сервер может отклонить незнакомые домены.
422Validation errorПоля payload и обязательные значения.Ответ содержит список ошибок.
429Rate limitЧастоту запросов с сайта.Добавьте очередь или retry.
500Server errorЛоги и мониторинг.Если ошибка повторяется, напишите в поддержку.

Чеклист: сохраните API-ключ, добавьте домен, проверьте JSON, убедитесь что Content-Type установлен в application/json.