API EN
Ранний доступ. Ключи выдаются по запросу. Как получить ключ

Документация подготовлена для ИИ-помощников: у каждой страницы есть Markdown, вся документация собрана в один файл, а готовый промпт задает агенту правила интеграции.

Промпт для ИИ-помощника

Вставьте этот текст в чат Claude, ChatGPT, Cursor или другого помощника. Он прочитает документацию API и будет следовать нашим правилам интеграции. Ключа в тексте нет.

Открыть как текст

Посмотреть текст промпта
# Промпт для ИИ-агента: интеграция с API Meliora

Ты помогаешь разработчику подключиться к публичному API Meliora. Meliora: сервис автоматических рассылок и переписки в Telegram для B2B-аутрича. В нем есть кабинет (организация), пространства, кампании (цепочки сообщений), лиды (участие контакта в кампании), сохраненная переписка и лента событий.

## Сначала прочитай документацию

Прежде чем писать код или отвечать, прочитай эти файлы. Они точнее твоей памяти:

1. https://docs.melioralab.io/llms.txt: оглавление документации со ссылками на Markdown каждой страницы.
2. https://docs.melioralab.io/llms-full.txt: вся документация одним файлом.
3. https://docs.melioralab.io/openapi.json: спецификация OpenAPI 3.1, единственный источник маршрутов, параметров и полей.

Если у тебя нет доступа к сети, попроси пользователя прислать содержимое этих файлов.

## Что умеет API

- Версия v1, только чтение. Записи нет: добавить контакты, запустить или остановить цепочку через API нельзя, это делается в кабинете.
- Базовый адрес: https://api.melioralab.io/v1
- Маршруты, все GET: /me, /workspaces, /campaigns, /campaigns/{id}, /leads, /leads/{id}, /leads/{id}/messages, /events.
- Ответы в JSON, время в UTC ISO 8601 с миллисекундами. Ошибки в формате application/problem+json с полями status, code, param и request_id. Обрабатывай ошибки по status и code, а не по тексту.

## Ключ и безопасность

- Ключ передается только в заголовке Authorization: Bearer <ключ>. Никогда не передавай ключ в адресе запроса.
- Бери ключ из переменной окружения MELIORA_API_KEY. Не проси пользователя вставить ключ в чат, не выводи ключ в ответах, коде, журналах и коммитах.
- Вызывай API только с сервера, не из браузера.
- Первый шаг всегда GET /v1/me: он показывает права (scopes), охват (scope) и лимиты ключа. Проверь, что прав хватает для задачи, прежде чем писать остальной код.

## Правила интеграции

- Списки листаются курсором: повторяй запрос с cursor=next_cursor и теми же фильтрами, пока has_more равен true. limit до 100, у /events до 200. Курсор списка живет 15 минут.
- Лента /events содержит два типа событий: lead.first_message_sent и lead.replied. Сохраняй next_cursor из каждого ответа, даже пустого. Применяй события страницы и сохраняй новый курсор в одной транзакции. Дедуплицируй события по event.id. Если has_more равен false, подожди перед следующим опросом, от минуты до часа.
- Первый запуск ленты: GET /v1/events?start=now дает курсор, затем сверь лидов через /v1/leads, затем читай ленту от этого курсора.
- Ответ 410 cursor_expired или 400 cursor_mismatch у ленты: отметь разрыв, получи новый курсор через start=now, сверь кампании и лидов, продолжи опрос.
- Ответы 429 и 503: повтори тот же запрос через Retry-After секунд со случайным разбросом, при повторных 503 увеличивай паузу. Ошибка не сдвигает курсор. Не повторяй в цикле запросы, получившие 401.
- Связь с CRM: ключ связи fields.record_id в карточке лида (/v1/leads, /v1/leads/{id}), только если record_id_status равен valid. В событиях record_id пока не передается: связывай событие с лидом по data.lead.id. Ник Telegram не уникален, не используй его как ключ.
- Статусы в CRM обновляй только вперед: ответ лида не должен откатываться в статус «в работе».
- Тексты сообщений доступны, только если у ключа есть право messages:read и включен «Текст сообщений».
- Пока не приходят: delivery_state со значениями failed и waiting_queue, automation_state со значением completed, reason_code со значениями schedule_window и service_unavailable. В событии ответа automation_stopped всегда null. Архив переписки и лента могут быть неполными: смотри meta.completeness и meta.coverage. Значение unknown нормально, это не ошибка.

## Чего не делать

- Не выдумывай маршруты, параметры, поля и значения, которых нет в openapi.json. Если нужного нет, так и скажи и предложи решение на существующих маршрутах.
- Не обещай запись через API: в v1 ее нет.
- Спорные места сверяй с документацией и давай ссылку на нужную страницу.

Документация: https://docs.melioralab.io
Поддержка: https://t.me/meliora_support

#Файлы для агентов

ФайлЧто внутри
llms.txtОглавление: ссылки на Markdown каждой страницы с кратким описанием.
llms-full.txtВся документация одним Markdown-файлом: руководства и справочник.
openapi.jsonСпецификация OpenAPI 3.1: маршруты, параметры, схемы ответов и примеры.
/md/<страница>.mdMarkdown отдельной страницы, например /md/events-polling.md или /md/reference/leads.md.
agent-prompt.txtПромпт для ИИ-агента текстом.

На каждой странице руководства и справочника справа от заголовка есть меню «Копировать страницу»: скопировать Markdown страницы, открыть его отдельно или открыть страницу в ChatGPT или Claude с готовым вопросом.

#Как подключить документацию

#Claude, ChatGPT и другие чаты

Вставьте в чат промпт кнопкой «Скопировать промпт». Если у помощника есть доступ в интернет, он сам прочитает llms-full.txt и openapi.json. Если доступа нет, приложите файл llms-full.txt к сообщению.

Для вопроса по одной странице откройте меню «Копировать страницу» и выберите «Открыть в ChatGPT» или «Открыть в Claude».

#Cursor

Добавьте документацию как источник: в настройках документации Cursor укажите адрес https://docs.melioralab.io/llms-full.txt, затем ссылайтесь на нее в чате через @. Промпт можно сохранить в правилах проекта, в папке .cursor/rules.

#Claude Code и другие агенты в терминале

Сохраните промпт в файл инструкций проекта, например CLAUDE.md или AGENTS.md, или передайте его в начале сессии. Агент с доступом к сети прочитает документацию по ссылкам из промпта. Без сети скачайте файлы в проект:

curl
curl -o docs/meliora-llms-full.txt https://docs.melioralab.io/llms-full.txt
curl -o docs/meliora-openapi.json https://docs.melioralab.io/openapi.json

#Ключ и агент

Агенту нужен ключ, только если он сам выполняет запросы к API. Чтобы прочитать документацию и написать код, ключ не нужен.

Если агент должен выполнять запросы:

  1. Выпустите для него отдельный ключ, не тот, что работает в вашей интеграции.
  2. Дайте минимальные права: обычно хватает «Кампании» и «Лиды». Текст сообщений включайте, только если он действительно нужен.
  3. Ограничьте охват одной тестовой кампанией.
  4. Задайте срок действия, например на неделю, и при возможности список разрешенных IP.
  5. Передайте ключ через переменную окружения MELIORA_API_KEY в среде, где агент запускает код. Промпт требует от агента брать ключ оттуда и не выводить его.
  6. После работы отзовите ключ.

Подробнее о правах, охвате и отзыве в руководстве Аутентификация и ключи.

#Сервер MCP

Собственного сервера MCP у Meliora пока нет: он есть в планах на странице Что дальше. Агенты с поддержкой MCP могут работать с документацией через свой инструмент чтения веб-страниц или файлов: дайте им ссылки на llms-full.txt и openapi.json или промпт.

Сторонние серверы MCP, которые выдают себя за сервер Meliora, к нам отношения не имеют. Не передавайте им ключи.