Полное руководство по API для разработчиков
Этот документ является официальным и исчерпывающим справочником по API для всей платформы Chirps AI. Мы наметили все безопасные для разработчиков конечные точки в системе. Вы можете программно реплицировать 100% функциональности информационной панели без головы.
1. Аутентификация и основные принципы
Базовый URL: https://chirps.cc
Для всех конечных точек API требуется ключ API Chirps в заголовке Authorization. Вы можете сгенерировать ключ API в диспетчере API в [разделе «Разработчики» на панели управления] (https://chirps.cc/dashboard/developers).
Authorization: Bearer <YOUR_CHIRPS_API_KEY>
Пример запроса:
curl -X GET https://chirps.cc/api/billing/usage \ -H "Authorization: Bearer <YOUR_CHIRPS_API_KEY>" \ -H "Content-Type: application/json"
Стандартная обработка ошибок
| Код состояния | Описание |
|---|---|
200 ОК | Запрос был успешным. |
400 неверных запросов | Полезная нагрузка JSON не прошла проверку. Включает массив деталей. |
401 Несанкционированный | Токен отсутствует или срок действия которого истек. |
402 Требуется оплата | В рабочей области превышен лимит выставления счетов. |
403 Запрещено | У пользователя нет необходимых разрешений RBAC. |
404 не найден | Запрошенный ресурс не существует. |
500 Ошибка сервера | Неожиданная ошибка платформы. |
2. Жизненный цикл помощника (создание)
GET /api/assistants
Список помощников
Получает список всех помощников, связанных с рабочей областью ключа API.
Создать помощника
POST /api/assistants
Создает нового помощника со всеми базовыми конфигурациями.
{
"businessName": "Acme Corp",
"businessUrl": "https://acme.com",
"knowledgeBaseType": "both",
"knowledgeBaseUrl": "https://acme.com/help",
"knowledgeBaseText": "Raw text content of a document...",
"knowledgeBaseFileName": "company_handbook.pdf",
"language": "en",
"isMultiLanguage": false,
"tonePersonality": "professional",
"isCustomPersonality": false,
"supportEmail": "[email protected]",
"maxPages": 5,
"maxDepth": 2,
"welcomeMessageDelay": 2
}| Параметр | Тип | Необходимый | Описание |
|---|---|---|---|
businessName | Нить | Да | Название компании (2-100 символов). |
businessUrl | Нить | Да | Действительный URL-адрес бизнес-сайта (максимум 500 символов). |
knowledgeBaseType | Перечисление | Да | Один из: `"url", "document", "both", "none". |
knowledgeBaseUrl | Нить | Нет | Должен быть указан, если тип — «url» или «both». |
knowledgeBaseText | Нить | Нет | Необработанный текст, если тип — «документ» или «оба». |
имя_базы_файла_знаний | Нить | Нет | Имя загруженного файла при предоставлении текста. |
язык | Нить | Да | Код языка (например, "en", "es"). |
isMultiLanguage | логическое значение | Нет | Включите автоматический перевод. По умолчанию «ложь». |
тон Личность | Нить | Да | Например, «профессиональный», «дружелюбный». Макс. 100 символов. |
isCustomPersonality | логическое значение | Нет | Включить собственный тон. По умолчанию «ложь». |
customPersonalityDescription | Нить | Нет | Пользовательские инструкции по тону, если они включены (максимум 2000 символов). |
дополнительные инструкции | Нить | Нет | Основные подсказки (максимум 10 000 символов). |
поддержка по электронной почте | Нить | Да | Действительный адрес электронной почты для эскалации. |
maxPages | Число | Нет | Страницы для сканирования. Мин. 1, макс. 100. По умолчанию «5». |
maxDepth | Число | Нет | Глубина сканирования. Мин. 1, макс. 20. По умолчанию «2». |
welcomeMessageDelay | Число | Нет | Задержка в секундах перед приветствием. Мин. 0, Макс. 6. По умолчанию «2». |
Удалить помощника
DELETE /api/assistants/:id
Безвозвратно удаляет помощника и каскадно удаляет все его узлы знаний и историю. Полезная нагрузка не требуется.
3. Помощник по аналитике и статистике
Сразу после создания и использования вы можете программно получить показатели производительности помощника.
GET /api/analytics/overview?assistantId=uuid&range=30
Получите статистику использования, общее количество сообщений, привлеченных потенциальных клиентов и общие показатели вовлеченности для указанного помощника. Параметр range является необязательным (количество дней, минимум 7, максимум 365, по умолчанию 30).
Ожидаемый ответ
{
"totalConversations": 1245,
"totalMessages": 8420,
"totalLeads": 156,
"totalBookings": 42,
"satisfactionRate": 94,
"avgMessagesPerSession": 6.7,
"avgSessionsPerDay": 41.5,
"liveNow": 3,
"onlineNow": 12,
"dailySeries": [
{
"date": "2026-07-15",
"conversations": 45,
"messages": 310,
"leads": 5,
"bookings": 2
}
],
"agentStats": [
{
"name": "Jane Doe",
"messagesSent": 120,
"csat": 98
}
]
}| Свойство | Тип | Описание |
|---|---|---|
totalConversations | Число | Общее количество сеансов чата, обработанных помощником. |
totalMessages | Число | Общее количество сообщений (пользователь + ИИ), отправленных во всех разговорах. |
totalLeads | Число | Общее количество извлеченных уникальных потенциальных клиентов (имя, адрес электронной почты, телефон). |
totalBookings | Число | Общее количество успешно забронированных встреч в календаре. |
satisfactionRate | Число | Процент (0–100) положительных отзывов от общего числа оценок. |
avgMessagesPerSession | Число | Среднее количество сообщений, которыми обмениваются за разговор. |
avgSessionsPerDay | Число | Среднее количество разговоров в день в запрошенном диапазоне. |
liveNow | Число | Количество активных разговоров, которые в данный момент ведет агент-человек. |
онлайнсейчас | Число | Количество пользователей, активно общавшихся с ИИ за последние 2 минуты. |
dailySeries | Множество | Массив ежедневных объектов, содержащий количество разговоров, сообщений, потенциальных клиентов и заказов на дату. |
агентстатс | Множество | Показатели производительности для агентов-людей, включая messagesSent и csat (оценка удовлетворенности клиентов). |
4. Знания и обучение
После создания помощника вы управляете его мозгом через «Узлы знаний». Каждый узел представляет собой фрагмент данных (просканированный URL-адрес, загруженный документ или фрагмент текста, введенный вручную).
Управление узлами знаний
GET /api/assistants/:id/nodes — список всех узлов знаний для этого помощника.
POST /api/assistants/:id/nodes – вручную добавить новый блок знаний.
{
"title": "Return Policy",
"refined_content": "We offer a 30-day return policy for all unused items...",
"type": "text",
"metadata": {}
}PATCH /api/assistants/:id/nodes/:nodeId — изменение содержимого существующего узла или переключение его активного состояния.
{
"title": "Updated Return Policy",
"refined_content": "We offer a 60-day return policy now...",
"is_active": true
}DELETE /api/assistants/:id/nodes/:nodeId — полностью удалить блок знаний.
POST /api/assistants/:id/nodes/:nodeId/re-crawl — заставить парсер повторно сканировать URL-адрес, связанный с этим узлом, и обновить его содержимое. Полезная нагрузка: {}.
Обучение искусственному интеллекту
POST /api/assistants/:id/train — скомпилируйте все узлы знаний is_active и используйте оркестратор ИИ для динамического синтеза нового приглашения главной системы. Полезная нагрузка: {}.
5. Внешний вид и конфигурация виджета
Настройте внешний интерфейс всплывающего окна помощника и окна чата.
Обновить внешний вид виджета
ИСПРАВЛЕНИЕ /api/assistants/:id/widget-config
{
"primaryColor": "#000000",
"position": "bottom-right",
"language": "en",
"welcomeMessage": "Hi! How can I help you today?",
"title": "Acme Support",
"theme": "light",
"fontFamily": "default",
"bubbleStyle": "circle",
"bubbleText": "Chat with us",
"headerSubtitle": "We typically reply instantly",
"inputPlaceholder": "Type your message...",
"privacyPolicyUrl": "https://acme.com/privacy",
"voiceEnabled": true,
"voiceName": "Fenrir",
"welcomeMessageDelay": 2,
"fileUploadEnabled": true,
"dictationEnabled": true,
"copilotEnabled": true,
"welcomeSuggestions": ["Pricing plans", "Contact sales"],
"pageVisibility": {
"mode": "all",
"paths": []
}
}| Параметр | Тип | Необходимый | Описание |
|---|---|---|---|
primaryColor | Нить | Нет | Шестнадцатеричный код цвета (например, "#000000"). |
позиция | Перечисление | Нет | "внизу справа", "внизу слева", "вверху справа", "вверху слева"`. |
язык | Нить | Нет | Код языка виджета (например, "en", "fr"). |
приветственное сообщение | Нить | Нет | Начальное приветственное сообщение. |
титул | Нить | Нет | Заголовок в шапке виджета. |
тема | Перечисление | Нет | «светлый» или «темный». |
fontFamily | Перечисление | Нет | "default" (Inter) или "inherit". |
bubbleStyle | Перечисление | Нет | "круг", "бар", "ящик", "фирменный-круг", "фирменный-бар", "фирменный-ящик". |
bubbleText | Нить | Нет | Текст, отображаемый рядом с пузырьком (для стилей панели/ящика). |
headerSubtitle | Нить | Нет | Подзаголовок в шапке виджета. |
inputPlaceholder | Нить | Нет | Текст-заполнитель для ввода сообщения. |
privacyPolicyUrl | Нить | Нет | URL-адрес вашей политики конфиденциальности. |
avatarUrl | Нить | Нет | URL-адрес пользовательского изображения аватара. |
customLogoUrl | Нить | Нет | URL-адрес пользовательского изображения логотипа заголовка. |
voiceEnabled | логическое значение | Нет | Включите голосовые вызовы. |
имя голоса | Нить | Нет | Голосовая идентификация для аудиоответов. См. доступные голоса ниже. |
welcomeMessageDelay | Число | Нет | Задержка в секундах перед приветствием. |
fileUploadEnabled | логическое значение | Нет | Разрешить пользователям загружать вложения. |
диктовка включена | логическое значение | Нет | Включите голосовую диктовку (преобразование речи в текст). |
copilotEnabled | логическое значение | Нет | Включите чипы предложений второго пилота. |
добро пожаловатьПредложения | Множество | Нет | Массив строк для начальных фишек быстрого ответа. |
pageVisibility | Объект | Нет | Определяет, на каких страницах отображается виджет («режим», «пути»). |
rateLimitEnabled | логическое значение | Нет | Включите ограничение скорости чата. По умолчанию правда. |
rateLimitMaxMessages | Число | Нет | Максимальное количество сообщений в окне. По умолчанию 30. |
rateLimitTimeWindow | Число | Нет | Временное окно в минутах. По умолчанию 60. |
gdprDataMaskingEnabled | логическое значение | Нет | Замаскируйте PII перед сохранением. По умолчанию ложь. |
Доступные голосовые имена
- Самки: Зефир, Аоеде, Коре, Леда, Каллирро, Деспина, Эринома, Лаомедея, Ахернар, Пульчеррима, Гакрукс, Альгениб, Сульфат.
- Мужчины:
Пак,Харон,Фенрир,Орус,Энцелад,Япет,Умбриэль,Альгиеба,Аутоное,Расалгети,Альнилам
Пользовательский логотип
POST /api/assistants/:id/widget-logo
Формат: multipart/form-data с полем file.
6. Интеграция и развертывание
После того как ваш помощник настроен и обучен, у вас есть два основных способа его развертывания:
Вариант А: веб-встраивание (интерфейс)
Самый простой способ интегрировать помощника в стандартный сайт (WordPress, Shopify, React и т. д.). Код для внедрения является чисто детерминированным. Вам не нужна конечная точка для его получения. Просто добавьте это в <head> вашего сайта:
<script src="https://chirps.cc/widget.js" data-assistant-id="YOUR_ASSISTANT_ID_HERE"></script>
Вариант Б: Безголовая интеграция (бэкэнд/CRM/боты)
Если вы создаете собственный клиент (например, бот Discord, интеграцию Telegram или собственное приложение для iOS), вы НЕ будете использовать Web Embed. Вместо этого вы будете напрямую взаимодействовать с конечной точкой /api/chat.
POST /api/chat или /api/chat?stream=true
Примечание. Эта конечная точка является общедоступной и *не* требует заголовка API-ключа Authorization: Bearer. Аутентификация осуществляется неявно через assistantId.
{
"assistantId": "123e4567-e89b-12d3-a456-426614174000",
"sessionId": "unique-session-id-for-user",
"conversationId": "optional-uuid",
"message": "Hello, I need help with my billing."
}*(Также поддерживается multipart/form-data с полем file для вложений, если fileUploadEnabled имеет значение true).*
| Параметр | Тип | Необходимый | Описание |
|---|---|---|---|
assistantId | Нить | Да | UUID помощника. |
sessionId | Нить | Да | Вы создаете это. Уникальный идентификатор из вашей собственной системы для группировки истории чата (например, идентификатор пользователя Discord, идентификатор чата Telegram или случайный UUID). |
сообщение | Нить | Да | Текстовое содержание сообщения (максимум 5000 символов). |
conversationId | Нить | Нет | UUID разговора (возвращается в первом запросе). |
id | Нить | Нет | Необязательный идентификатор сообщения на стороне клиента для предотвращения дедупликации. |
Режим 1: стандартный ответ JSON (по умолчанию)
Отправляя запрос POST в /api/chat (без параметра потока), вы ожидаете полного ответа AI и получаете стандартный объект JSON.
{
"message": "Here is the information you requested...",
"conversationId": "uuid-of-conversation",
"messageId": "uuid-of-message"
}*(Если возвращается is_active_agent: true, управление чатом взял на себя человек, а message будет null.)*
Режим 2: потоковая передача событий, отправленных сервером (?stream=true)
Добавляя ?stream=true к URL-адресу, вы получаете поток событий, отправленных сервером (SSE) в реальном времени. Ваш код должен прослушивать следующие типы событий:
- `event: token`: Содержит
{"text": "chunk"}. Запускается для каждого фрагмента текста ответа ИИ. - `event: status`: Содержит
{"text": "Поиск в базе знаний..."}. Представляет состояния выполнения серверного инструмента. - `event: Done`: Содержит
{"messageId": "uuid", "conversationId": "uuid", "message": "full text"}. Запускается, когда генерация полностью завершена. - `event: error`: Содержит
{"error": "Сообщение об ошибке"}. Вызывается при возникновении ограничений скорости или ошибок.
Конечные точки оперативного поглощения
GET /api/chat/sessions
Получить исторические сеансы.
POST /api/chat/toggle-agent
Приостановите ИИ для захвата человеком. Полезная нагрузка: { "sessionId": "..." }
POST /api/chat/agent-message
Отправьте человеческое сообщение. Полезная нагрузка: { "sessionId": "...", "message": "..." }
7. Расширенные настройки помощника
ИСПРАВЛЕНИЕ /api/assistants/:id
Обновить базовую конфигурацию
Измените основные настройки, личность и границы очистки помощника.
{
"business_name": "Acme Corp",
"business_url": "acme.com",
"business_description": "We sell anvils.",
"system_prompt": "You are a helpful assistant.",
"language": "en",
"tone_personality": "Friendly",
"support_email": "[email protected]",
"additional_instructions": "Never mention the Roadrunner.",
"is_multi_language": true,
"is_dev_mode": false,
"is_active": true,
"max_pages": 15,
"max_depth": 2,
"widget_config_merge": {
"rateLimitEnabled": true
}
}*Примечание: Все поля являются необязательными. Отправляйте только те поля, которые хотите обновить.*
Удалить помощника
DELETE /api/assistants/:id
Безвозвратно удаляет помощника и каскадно удаляет все узлы знаний, беседы и сообщения. Если помощник так и не был настроен полностью, будет возмещена ежемесячная квота создания.
8. Телефония и голос
GET /api/phone-numbers — список доступных номеров.
POST /api/phone-numbers/:id/assign — укажите номер. Полезная нагрузка: {}
POST /api/assistants/:id/outbound – инициировать исходящий вызов. Полезная нагрузка: { "to": "+123...", "message": "..." }
9. Извлечение потенциальных клиентов
GET /api/leads?assistantId=uuid&page=1&limit=50&status=new – получение структурированных потенциальных клиентов с разбивкой по страницам, извлеченных ИИ во время разговоров.
GET /api/leads?id=leadId — получение подробной информации об одном интересе, включая полную стенограмму разговора.
10. Бронирование и календарь
GET /api/bookings?assistantId=uuid&start=ISO-8601&end=ISO-8601 – получение встреч в календаре, запланированных помощником, с возможностью фильтрации по дате.
GET /api/bookings?id=bookingId — получение сведений об одном бронировании, включая стенограмму разговора.
POST /api/bookings/cancel — Отменить активное бронирование. Полезная нагрузка: { "bookingId": "uuid" }
POST /api/bookings/reschedule — корректировка бронирования. Полезная нагрузка: { "bookingId": "uuid", "newTime": "ISO-8601" }
11. Использование учетной записи и выставления счетов
GET /api/billing/usage
Получите информацию об использовании платежного цикла рабочей области, ограничениях плана подписки и общем количестве помощников. Примечание. При использовании ключа API запрос автоматически ограничивается рабочей областью ключа API; вам не нужно указывать «teamId».
Ответ («200 ОК»):
{
"planName": "Pro",
"periodStr": "2023-10-01",
"assistantCount": 3,
"usage": {
"message_count": 1450,
"harvest_count": 12,
"recrawl_count": 5,
"train_count": 2,
"assistants_created_count": 1,
"voice_minutes_used": 0,
"sms_count": 0,
"email_count": 0,
"whatsapp_count": 0
},
"limits": {
"messages": 5000,
"assistants": 5,
"training": 50,
"recrawls": 20
},
"workspaceOwnerId": "uuid"
}Запустите своего помощника
через 10 минут.
Зарегистрируйтесь, тренируйтесь на своем сайте, настраивайте оповещения и встраивайте их на свой сайт.