API Reference

REST API для программного управления виджетами и аналитикой WritesApp. Доступно на тарифе Business.

Base URL

https://writesapp.ru/api/v1

Аутентификация

Bearer Token в заголовке Authorization

Формат

JSON запросы и ответы. UTF-8.

Примеры кода

Аутентификация

Все запросы к REST API должны содержать API ключ в заголовке Authorization.

Authorization: Bearer wa_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Получение API ключа

API ключ доступен в тарифе Business. Создайте ключ в настройках аккаунта.

Scopes (права доступа)

ScopeОписание
widgets:readЧтение списка и настроек виджетов
widgets:writeСоздание и редактирование виджетов
analytics:readЧтение аналитики и статистики

Пример запроса

curl -X GET "https://writesapp.ru/api/v1/widgets" \
  -H "Authorization: Bearer wa_your_api_key"

Виджеты

CRUD операции для управления виджетами.

GET/api/v1/widgets

Получить список всех виджетов аккаунта

Параметры запроса

pageНомер страницы (по умолчанию 1)
limitКоличество на странице (макс. 100)
curl -X GET "https://writesapp.ru/api/v1/widgets?page=1&limit=10" \
  -H "Authorization: Bearer wa_your_api_key"
Пример ответа
{
  "data": [
    {
      "id": "clx123abc456",
      "name": "Основной виджет",
      "domain": "example.com",
      "isActive": true,
      "eventsCount": 1234,
      "createdAt": "2024-01-01T00:00:00.000Z",
      "updatedAt": "2024-01-15T12:00:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 1,
    "totalPages": 1
  }
}
POST/api/v1/widgets

Создать новый виджет

curl -X POST "https://writesapp.ru/api/v1/widgets" \
  -H "Authorization: Bearer wa_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Мой виджет",
    "domain": "example.com",
    "channels": [
      {"type": "whatsapp", "value": "79001234567", "label": "WhatsApp"}
    ],
    "config": {
      "position": "bottom-right",
      "color": "#25D366"
    }
  }'
GET/api/v1/widgets/:id

Получить полную информацию о виджете включая настройки

curl -X GET "https://writesapp.ru/api/v1/widgets/clx123abc456" \
  -H "Authorization: Bearer wa_your_api_key"
Пример ответа
{
  "data": {
    "id": "clx123abc456",
    "name": "Основной виджет",
    "domain": "example.com",
    "isActive": true,
    "config": {
      "position": "bottom-right",
      "size": "medium",
      "color": "#25D366",
      "style": "classic",
      "title": "Напишите нам",
      "greeting": "Привет! Чем помочь?"
    },
    "channels": [
      {"type": "whatsapp", "value": "79001234567", "label": "WhatsApp", "device": "all"},
      {"type": "telegram", "value": "mycompany", "label": "Telegram", "device": "all"}
    ],
    "triggers": {
      "delay": 3,
      "scrollPercentage": 50,
      "exitIntent": true
    },
    "eventsCount": 1234,
    "createdAt": "2024-01-01T00:00:00.000Z",
    "updatedAt": "2024-01-15T12:00:00.000Z"
  }
}
PUT/api/v1/widgets/:id

Обновить настройки виджета. Передавайте только изменяемые поля.

curl -X PUT "https://writesapp.ru/api/v1/widgets/clx123abc456" \
  -H "Authorization: Bearer wa_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Новое название",
    "isActive": false,
    "config": {"color": "#FF4B3A"}
  }'
DELETE/api/v1/widgets/:id

Удалить виджет и всю связанную аналитику

curl -X DELETE "https://writesapp.ru/api/v1/widgets/clx123abc456" \
  -H "Authorization: Bearer wa_your_api_key"

Структура данных виджета

channels — Каналы связи

ПолеТипОписание
typestringwhatsapp, telegram, viber, vk, max, phone, email, callback, livechat, custom
valuestringНомер/username/ссылка
labelstringНазвание кнопки
devicestringall, desktop, mobile

config — Внешний вид и поведение

ПолеТипОписание
positionstringbottom-right, bottom-left, top-right, top-left
sizestringsmall, medium, large
stylestringclassic, horizontal, bubble, minimal, glass, premium
shapestringcircle, rounded, square
colorstringHEX акцентный цвет (#25D366)
animationstringnone, bounce, pulse, shake, glow
titlestringЗаголовок панели
greetingstringПодзаголовок/приветствие
themeModestringauto, light, dark
showCopyrightbooleanКопирайт «Работает на WritesApp» (Pro+)
qrEnabledbooleanQR-коды для десктопных пользователей (Pro+)
showOnMobile / showOnDesktopbooleanВидимость на устройствах
offsetX / offsetYnumberОтступы от краёв экрана (px)
Поля Делового стиля (premium)
managerImagestringURL аватара менеджера
managerNamestringИмя менеджера
managerTitlestringДолжность менеджера
showOnlineStatusbooleanЗелёный индикатор «Онлайн»

triggers — Условия показа

ПолеТипОписание
delaynumberЗадержка показа (сек)
scrollPercentagenumberПоказ при прокрутке (%)
exitIntentbooleanПоказ при попытке уйти
workingHoursEnabledbooleanОграничение по рабочим часам
urlModestringall, include, exclude
repeatIntervalstringsession, daily, weekly, once

Аналитика

Получение статистики и событий виджетов.

GET/api/v1/analytics

Параметры запроса

ПараметрТипОписание
widget_idstringID виджета (опц.)
periodstring1d, 7d, 30d, 90d
eventstringview, click, channel_click
channelstringwhatsapp, telegram, viber...
curl -X GET "https://writesapp.ru/api/v1/analytics?period=30d&event=channel_click" \
  -H "Authorization: Bearer wa_your_api_key"
Пример ответа
{
  "data": [
    {
      "id": "evt_abc123",
      "widgetId": "clx123abc456",
      "event": "channel_click",
      "channel": "whatsapp",
      "timestamp": "2024-01-15T14:30:00.000Z"
    }
  ],
  "summary": {
    "views": 1500,
    "clicks": 320,
    "channelClicks": 180
  },
  "pagination": {
    "page": 1,
    "limit": 100,
    "total": 180,
    "totalPages": 2
  }
}

Типы событий

viewВиджет показан на странице
clickПользователь открыл виджет
channel_clickПереход в мессенджер

Webhooks

Получайте уведомления о событиях виджета в реальном времени.

Настройка

Укажите URL вебхука в настройках виджета. WritesApp отправит POST-запрос при каждом событии.

Формат запроса

POST https://your-server.com/webhook
Content-Type: application/json
X-Webhook-Signature: hmac-sha256-hex (если задан секретный ключ)

{
  "event": "channel_click",
  "timestamp": "2024-01-01T12:00:00.000Z",
  "widgetId": "clx123abc456",
  "channel": "whatsapp",
  "visitorId": "wa_v_abc123",
  "metadata": {
    "url": "https://example.com/product",
    "referrer": "https://google.com",
    "userAgent": "Mozilla/5.0...",
    "device": "desktop"
  }
}

Типы событий

СобытиеОписание
viewВиджет показан на странице
clickВиджет открыт (кнопка нажата)
channel_clickКлик по каналу связи
callback_leadОтправлена заявка на обратный звонок

Лимиты запросов

API имеет ограничения на количество запросов для защиты от злоупотреблений.

ТарифЛимитОкно
Pro100 запр.1 мин
Business1000 запр.1 мин

Заголовки ответа

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1704067200

Коды ошибок

API возвращает стандартные HTTP коды ответа.

КодОписаниеРешение
200Успешный запрос
400Неверный запросПроверьте параметры
401Не авторизованПроверьте API ключ
403ЗапрещёнНедостаточно прав
404Не найденоРесурс не существует
429Rate limitДождитесь сброса
500Ошибка сервераПовторите позже

Формат ошибки

{
  "error": {
    "code": "INVALID_API_KEY",
    "message": "API ключ недействителен или отозван",
    "details": null
  }
}

Нужна помощь с интеграцией?

Свяжитесь с нами — поможем с настройкой API