Отправка событий через API

Помимо JavaScript-сниппета, события можно отправлять напрямую через HTTP API. Это полезно для серверной аналитики, мобильных приложений и бэкенд-интеграций.

Endpoint

POST https://ingest.gausslab.io/events

Заголовки:

Content-Type: application/json
X-Api-Key: YOUR_API_KEY

API-ключ проекта можно создать в дашборде → Настройки проекта → API-ключи.

Одиночное событие

curl -X POST https://ingest.gausslab.io/events \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -d '{
    "name": "signup",
    "url": "https://yoursite.com/register",
    "properties": {
      "plan": "pro",
      "source": "landing"
    }
  }'

Батч событий

Для эффективной отправки нескольких событий используйте батч:

curl -X POST https://ingest.gausslab.io/events/batch \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -d '{
    "events": [
      {
        "name": "page_view",
        "url": "https://yoursite.com/pricing",
        "timestamp": "2025-04-01T10:00:00Z"
      },
      {
        "name": "signup",
        "url": "https://yoursite.com/register",
        "timestamp": "2025-04-01T10:02:30Z",
        "properties": { "plan": "pro" }
      }
    ]
  }'

Максимум 50 событий в одном батч-запросе.

Поля события

Поле Тип Обязательное Описание
name string Да Название события
url string Да URL страницы
timestamp string (ISO 8601) Нет Время события. По умолчанию — текущее
properties object Нет Произвольные свойства (до 10 ключей)
client_id string Нет Идентификатор пользователя (если есть)

Ответы

Статус Описание
202 Accepted Событие принято в обработку
400 Bad Request Некорректный формат запроса
401 Unauthorized Неверный или отсутствующий API-ключ
429 Too Many Requests Превышен лимит запросов

Пример на Node.js

async function trackEvent(name, url, properties = {}) {
  await fetch('https://ingest.gausslab.io/events', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-Api-Key': process.env.GAUSS_API_KEY,
    },
    body: JSON.stringify({ name, url, properties }),
  });
}

// Использование
await trackEvent('order_created', 'https://yoursite.com/checkout', {
  order_id: '12345',
  value: 4990,
  currency: 'RUB',
});