На главную

Справочник API

74 адресов, JSON и один заголовок с токеном доступа.

curl
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
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
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
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
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
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
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
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
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 пишет гостям), задаче агенту со сроком, прогону правил по куче и разбору архива. После трёх последних агент может написать людям сам.

Справочник API · Nitrino