Справочник API
74 адресов, JSON и один заголовок с токеном доступа.
curl -X POST https://nitrino.ai/api/v1/conversations/<id>/notes \
-H "Authorization: Bearer <access token>" \
-H "Idempotency-Key: 4f9c-2a" \
-H "Content-Type: application/json" \
-d '{"text":"asked for a call on Tuesday"}'Адреса
GET/api/v1
Воркспейс, участник и области токена
200 {
"workspace": "9f1c…",
"member": "4a2b…",
"client": { "id": "d342…", "name": "Astra" },
"scopes": ["inbox:read", "inbox:write", "send"]
}GET/api/v1/conversations
Беседы, от свежих
- cursorstring
- Откуда продолжить: next из прошлого ответа
- limitinteger
- Сколько строк вернуть: 50 по умолчанию, 200 предел
200 {
"conversations": [
{
"id": "c81f…",
"person": "77a0…",
"kind": "email",
"lastMessageAt": "2026-09-20T09:41:02.000Z",
"waitingSince": "2026-09-20T09:41:02.000Z",
"importance": "high",
"intent": "quote",
"owner": null
}
],
"next": "MjAyNi0wOS0yMFQwOTo0MTowMi4wMDBafGM4MWY"
}GET/api/v1/conversations/{id}
Одна беседа
PATCH/api/v1/conversations/{id}
Отложить, разбудить, закрыть, открыть, отдать, отметить встречу
- snoozeUntilstring | null
- До какого момента отложить; null — разбудить
- whystring
- Почему отложено — это прочитает команда
- closedboolean
- true — закрыть беседу, false — открыть заново
- reasonstring
- Повод закрытия: meeting_booked, not_interested, no_response, wrong_person, spam, personal, other
- ownerstring | null
- Кому отдать беседу; null — снять владельца
- metboolean
- Встреча назначена мимо переписки
GET/api/v1/conversations/{id}/messages
Письма беседы, от свежих
- cursorstring
- Откуда продолжить: next из прошлого ответа
- limitinteger
- Сколько строк вернуть: 50 по умолчанию, 200 предел
200 {
"messages": [
{
"id": "m4c1…",
"conversation": "c81f…",
"direction": "inbound",
"sender": { "name": "Pete", "handle": "pete@acme.example" },
"subject": "Slabs",
"text": "will you send the report?",
"at": "2026-09-20T09:41:02.000Z",
"automated": false,
"agent": null,
"voice": null
}
],
"next": null
}POST/api/v1/conversations/{id}/messages
Письмо клиенту — в очередь отправки
- textstringrequired
- Что отправить
- tostring
- Контакт клиента, если их несколько
- viastring
- Наш ящик, если подходящих несколько
- sendAtstring
- Момент отправки; без него — как только дойдёт очередь
200 {
"message": {
"id": "o7d2…",
"state": "queued",
"sendAt": null,
"to": "pete@acme.example"
}
}POST/api/v1/conversations/{id}/notes
Заметка внутри беседы: клиент её не увидит
- textstringrequired
- Текст заметки
POST/api/v1/conversations/{id}/labels
Метка на беседу, по имени
- namestringrequired
- Имя метки; незнакомая заводится
DELETE/api/v1/conversations/{id}/labels/{label}
Снять метку
GET/api/v1/messages/{id}/files
Файлы при письме
GET/api/v1/files/{id}
Сам файл, байтами
GET/api/v1/people
Клиенты, по имени
- cursorstring
- Откуда продолжить: next из прошлого ответа
- limitinteger
- Сколько строк вернуть: 50 по умолчанию, 200 предел
GET/api/v1/people/{id}
Один клиент
PATCH/api/v1/people/{id}
Правка карточки клиента
- namestring
- Как звать клиента; пусто стирает имя
- citystring
- Город
- jobTitlestring
- Должность
- companystring
- Компания клиента
POST/api/v1/people/{id}/tags
Отметить продукт у человека: клиент или партнёр
- labelstringrequired
- Тег продукта
- sidestringrequired
- Роль: buyer — клиент, seller — партнёр
DELETE/api/v1/people/{id}/tags
Снять пару; она записывается снятой, а не удаляется
GET/api/v1/agents
Агенты воркспейса — все разом, без страниц
GET/api/v1/agents/{id}
Один агент, вместе со словами, которыми он работает
PATCH/api/v1/agents/{id}
Правка агента: присылайте только то, что меняется
- goalstring
- К чему агент ведёт разговор
- rulesstring
- Как ему себя вести
- knowledgestring
- Что он знает о вашем деле
- enabledboolean
- Работает ли агент вообще
- labelsstring[]
- Теги продуктов, которые он ведёт; пусто — ведёт всех
- channelsstring[]
- Подключения, которыми он пишет; пусто — все каналы своих людей
- hoursobject
- Часы агента: пояс, с какого по какой и выходные
GET/api/v1/products
Продукты воркспейса — все разом
GET/api/v1/products/{id}
Один продукт с условиями и рынками
PATCH/api/v1/products/{id}
Правка продукта; завести его дверью нельзя
- descriptionstring
- Что это за продукт, вашими словами
- sidestring
- Продаём, покупаем или обе стороны
- goalstring
- К чему ведёт разговор о нём: demo, sale или partnership
- conditionsobject[]
- Условия парами «ключ: значение», каждое со своей стороной
GET/api/v1/workspace
Настройки воркспейса: пояс и разметка машиной
PATCH/api/v1/workspace
Правка настроек; имя и люди правятся на экране
- timezonestring
- Часовой пояс, которым считается день
- taggingboolean
- Размечает ли машина переписку сама
GET/api/v1/labels
Метки воркспейса: продукты и метки переписки
GET/api/v1/audit
Журнал: кто открывал дверь и что через неё правили
GET/api/v1/channels
Подключения: чем воркспейс говорит и живы ли каналы
GET/api/v1/members
Участники и то, что каждый рассказал о себе агенту
PATCH/api/v1/members/{id}
Правка карточки участника
- jobTitlestring
- Должность участника
- zonestring
- Чем он занимается — что делает вопрос его
- signaturestring
- Чем он подписывает письмо
GET/api/v1/house
Общие правила агентов — только чтение
GET/api/v1/deals
Сделки: клиент, партнёр и где встала
- statestring
- open или closed; без него — обе
GET/api/v1/deals/{id}
Одна сделка
POST/api/v1/deals
Завести сделку
- labelstringrequired
- Продукт сделки
- sellerstringrequired
- Партнёр, если он есть
- buyerstringrequired
- Клиент
- agentstringrequired
- Агент, который поведёт обе стороны
PATCH/api/v1/deals/{id}
Передвинуть сделку по пути или закрыть — одно за раз
- stagestring
- Стадия пути
- closedboolean
- Закрыть сделку
GET/api/v1/companies
Компании воркспейса — от чьего имени пишут агенты
GET/api/v1/companies/{id}
Одна компания с фактами и рынками
PATCH/api/v1/companies/{id}
Правка карточки компании
- pitchstring
- Что компания предлагает — ради чего агент пишет
- policystring
- На что она не соглашается и о чём молчит
- factsobject[]
- Факты парами «подпись: значение»
GET/api/v1/segments
Сохранённые сегменты и число людей в каждом
200 {
"segments": [
{
"id": "5e0b…",
"name": "Heads of marketing, SaaS in Germany",
"query": "heads of marketing at SaaS companies in Germany",
"rules": [{ "kind": "except", "text": "agencies" }],
"refill": true,
"saved": true,
"createdAt": "2026-09-27T08:12:40.000Z",
"updatedAt": "2026-09-28T10:02:11.000Z",
"members": 412
}
]
}POST/api/v1/segments
Описать сегмент словами и рассудить людей; остаток — тем же вызовом
- querystringrequired
- Кто входит в сегмент — словами
- rulesobject[]
- Уточнения: only или except и слова
- refillboolean
- Пополнять ли сегмент самому
- segmentstring
- Сегмент, который судить дальше
- namestring
- Имя нового сегмента; без него имя идёт за запросом
GET/api/v1/segments/proposals
Сегменты, которые Nitrino предлагает сам по продуктам и тем, кто уже ответил: создаются через POST /segments их словами и именем
200 {
"proposals": [
{
"product": { "id": "9c1d…", "name": "Website redesign" },
"name": "Marketing heads, Berlin SaaS",
"why": "They answered the last outreach with interest and own the site budget.",
"query": "heads of marketing at SaaS companies in Berlin, 20–200 employees",
"channels": ["linkedin", "email", "telegram"],
"channel": "linkedin",
"size": { "contacts": 312, "reach": { "linkedin": 280, "email": 190, "telegram": 41 }, "fresh": 18400, "at": "2026-09-29T21:05:00Z" }
}
]
}GET/api/v1/segments/{id}
Сегмент: слова, состав и кампании
PATCH/api/v1/segments/{id}
Сохранить черновик, заменить им сегмент или переключить пополнение
- savedboolean
- true — сохранить черновик
- refillboolean
- Пополнять ли сегмент самому
- replacesstring
- Сохранённый сегмент, который заменяет этот черновик
DELETE/api/v1/segments/{id}
Удалить сегмент; люди остаются в контактах
GET/api/v1/segments/{id}/people
Люди сегмента
- cursorstring
- Откуда продолжить: next из прошлого ответа
- limitinteger
- Сколько строк вернуть: 50 по умолчанию, 200 предел
POST/api/v1/segments/{id}/people
Вписать своих контактов в сегмент
- peoplestring[]required
- Ключи контактов
POST/api/v1/segments/{id}/find
Найти новых людей: фильтры и число найденного
- wordsstring
- Кого искать — словами
- channelstring
- linkedin или email
- filtersobject
- Фильтры поиска, как их вернул find
POST/api/v1/segments/{id}/find/add
Добавить найденных в контакты и в сегмент
- channelstring
- linkedin или email
- filtersobject
- Фильтры поиска, как их вернул find
- wantinteger
- Сколько людей добавить
- runstring
- Запуск, который дотянуть
GET/api/v1/campaigns
Кампании воркспейса
POST/api/v1/campaigns
Завести черновик кампании
- namestring
- Имя в списке
- goalstring
- Зачем кампания — словами
- segmentstring
- Сохранённый сегмент
- agentstring
- Агент, который пишет
GET/api/v1/campaigns/{id}
Кампания целиком: письма, срок и воронка
200 {
"campaign": {
"id": "a7c3…",
"name": "Webinar on 14 October",
"goal": "invite heads of marketing to the webinar",
"kind": "outreach",
"state": "running",
"segment": "5e0b…",
"agent": "2f91…",
"senders": ["c0d4…"],
"people": 412,
"missing": [],
"term": { "weeks": 5, "ends": "2026-11-02", "approx": false },
"progress": { "people": 412, "written": 96, "replied": 14, "declined": 3, "interested": 6, "meetings": 2 }
}
}PATCH/api/v1/campaigns/{id}
Правка кампании; каждая — строкой в журнале
- goalstring
- Зачем кампания — словами
- segmentstring
- Сохранённый сегмент
- agentstring
- Агент, который пишет
- sendersstring[]
- Подключения, которыми писать
- addRulesstring[]
- Указания каждому письму
- materialsobject[]
- Тексты, на которые опираются письма
DELETE/api/v1/campaigns/{id}
Удалить черновик
POST/api/v1/campaigns/{id}/state
Запустить, поставить на паузу или завершить
- tostringrequired
- running — запуск, нужна область send; paused или done
POST/api/v1/campaigns/{id}/letters
Написать письма-примеры или согласиться с ними
- writeinteger[]
- Места писем, которые написать: 1, 2, 3
- agreeinteger[]
- Места прочитанных писем, с которыми согласиться
GET/api/v1/campaigns/{id}/touches
Касания кампании: очередь и журнал
- statestring
- queued, sending, sent, failed или review (письмо написано и ждёт проверки)
- cursorstring
- Откуда продолжить: next из прошлого ответа
- limitinteger
- Сколько строк вернуть: 50 по умолчанию, 200 предел
POST/api/v1/conversations/{id}/tasks
Задача агенту: что написать и когда
- textstringrequired
- Что написать — словами для агента
- duestring | null
- Когда; со сроком нужна область send
GET/api/v1/notifications
Свои уведомления, от свежих
POST/api/v1/notifications/read
Прочитать уведомления
- idsstring[]
- Какие; без списка — все непрочитанные
GET/api/v1/calendar
Календари и встречи окна
- fromstring
- Встречи, кончающиеся позже этого момента
- tostring
- Встречи, начинающиеся раньше этого момента
POST/api/v1/calendar/meetings
Назначить встречу; нужна область send
- titlestringrequired
- Название встречи
- daystringrequired
- День YYYY-MM-DD в поясе воркспейса
- startstringrequired
- Начало HH:MM в поясе воркспейса
- minutesintegerrequired
- Длина: 15, 30, 45, 60, 90 или 120
- guestsstring[]
- Адреса гостей, до двадцати
- agendastring
- Повестка — описанием встречи
- calendarstring
- Календарь; без него — свой
- checkboolean
- true — только показать, что будет
DELETE/api/v1/calendar/meetings/{id}
Отменить встречу, заведённую продуктом; нужна область send
GET/api/v1/senders/health
Здоровье аккаунтов: уровень, лимиты и почему
200 {
"checked": true,
"accounts": [
{
"connection": "c0d4…",
"channel": "linkedin",
"account": "anna@acme.example",
"health": {
"level": "normal",
"limits": { "day": 15, "week": 70 },
"weakest": ["acceptance"],
"signals": [{ "key": "acceptance", "level": "caution", "score": 48, "facts": { "rate": 0.21 } }]
},
"used": { "day": 6, "week": 31 }
}
]
}POST/api/v1/senders/health/check
Проверить аккаунты заново
- connectionstring
- Одно подключение; без него — все
GET/api/v1/senders/voices
Голоса отправителей
GET/api/v1/channels/telegram-folders
Папки телеграма со счётом бесед
GET/api/v1/routing
Правила маршрутизации и выключатель
POST/api/v1/routing
Правка правил
- dostringrequired
- add, drop, up, down, order или switch
- fieldstring
- label, side, product, sender, company или agent
- valuestring
- Ключ метки, продукта, отправителя, компании, агента или сторона
- memberstring
- Кому отдавать беседу
- rulestring
- Одно правило
- rulesstring[]
- Все правила в новом порядке
- enabledboolean
- Включить или выключить
POST/api/v1/routing/apply
Раздать ничьи беседы по правилам; нужна область send
- rulestring
- Одно правило
- depthstring
- all, quarter, month или week
- cursorstring
- Из прошлого ответа, чтобы продолжить
- floorstring
- Из прошлого ответа, чтобы продолжить
POST/api/v1/people
Завести человека в контакты
- namestring
- Имя
- emailstring
- Почта, номер или LinkedIn — хоть что-то одно
- phonestring
- Почта, номер или LinkedIn — хоть что-то одно
- linkedinstring
- Почта, номер или LinkedIn — хоть что-то одно
- companystring
- Компания
- intostring
- Дописать к этому человеку, а не заводить
POST/api/v1/people/import
Файл контактов: план или запись
- fileobject
- name и content в base64, до трёх мегабайт
- columnsobject[]
- Колонки плана, поправленные вами
- commitboolean
- true — записать
GET/api/v1/archive
Где стоит разбор архива
POST/api/v1/archive
Разобрать архив: выгрузка с даты, а за ней разбор — нужна область send; или не разбирать
- dostringrequired
- start — разобрать архив, decline — не разбирать, пока идёт выгрузка
- sincestring
- С какого дня выгружать, ГГГГ-ММ-ДД
- channelsstring[]
- Какие каналы выгружать; без поля — все, что хранят историю
- groupsboolean
- Брать группы телеграма
- freshboolean
- Заодно разобрать переписку под новые продукты
GET/api/v1/dashboard
Числа дашборда
- daysinteger
- Сколько суток графика; 14 по умолчанию
GET/api/v1/billing
Подписка и аккаунты — только читать
Страницы
Списки листаются курсором. Возьмите next из ответа и пришлите его обратно как есть. Пустой next — дальше ничего нет.
Повторы
Всё, что меняет, требует заголовок Idempotency-Key. Повтор с тем же ключом вернёт прежний ответ и не сделает работу второй раз.
Кампании пишут только после запуска
Черновик кампании не пишет никому. Запуск и возобновление требуют области send вместе с campaigns:write. Письма уходят в будни, по одному человеку, в пределах здоровья аккаунтов: дневной лимит ставит здоровье, а не программа.
Что ещё требует send
Кроме письма и запуска кампании, send нужен ещё пяти действиям: встрече и её отмене (Google пишет гостям), задаче агенту со сроком, прогону правил по куче и разбору архива. После трёх последних агент может написать людям сам.