Справочник API
API Meliora v1 отдает данные кабинета в JSON. Все маршруты используют метод GET и только читают данные. Справочник собран из спецификации openapi.json.
#Базовый адрес
Все пути в справочнике указаны от адреса https://api.melioralab.io. Запросы выполняются по HTTPS с вашего сервера.
#Аутентификация
Передавайте ключ организации в заголовке Authorization: Bearer mel_live_.... Права и охват ключа описаны в руководстве Аутентификация и ключи.
#Формат данных
- JSON в UTF-8, имена полей в
snake_case. - Идентификаторы в формате UUID. Идентификатор сообщения и курсоры непрозрачные строки.
- Время в ISO 8601 по UTC с миллисекундами и суффиксом
Z:2026-10-26T07:30:00.000Z. - У каждого объекта есть поле
objectс его типом. - Неизвестное значение передается как
unknownилиnull, а не пропуском поля.
#Маршруты
| Маршрут | Что возвращает | Право |
|---|---|---|
GET /v1/me | Получить сведения о ключе | любое |
GET /v1/workspaces | Список пространств | любое |
GET /v1/campaigns | Список кампаний | campaigns:read |
GET /v1/campaigns/{id} | Получить кампанию | campaigns:read |
GET /v1/leads | Список лидов | leads:read |
GET /v1/leads/{id} | Получить лида | leads:read |
GET /v1/leads/{id}/messages | Переписка с лидом | messages:read |
GET /v1/events | Лента событий | events:read |
#Заголовки ответа
| Заголовок | Описание |
|---|---|
Request-Id | UUID запроса. Есть в каждом ответе, включая ошибки. |
Cache-Control | Всегда no-store: ответы не кешируются. |
RateLimit-Policy, RateLimit | Окна лимитов и остатки. См. Лимиты и повторы. |
RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset | Лимит, остаток и время до сброса ближайшего к исчерпанию окна. |
Retry-After | Секунд до повтора. Только у ответов 429 и 503. |
#Списки и ошибки
Списки возвращаются страницами по курсору, см. Пагинация. Ошибки приходят в формате application/problem+json, объект описан ниже, коды в руководстве Ошибки.
Первый запрос
curl https://api.melioralab.io/v1/me \
-H "Authorization: Bearer $MELIORA_API_KEY"const res = await fetch('https://api.melioralab.io/v1/me', {
headers: { Authorization: `Bearer ${process.env.MELIORA_API_KEY}` },
});
if (!res.ok) throw new Error(`Meliora API: ${res.status}`);
const body = await res.json();import os
import requests
resp = requests.get(
"https://api.melioralab.io/v1/me",
headers={"Authorization": f"Bearer {os.environ['MELIORA_API_KEY']}"},
timeout=15,
)
resp.raise_for_status()
body = resp.json()Базовый адрес
https://api.melioralab.io/v1
#Объект Problem
Ошибка в формате RFC 9457 (application/problem+json).
Поля
typestringURI типа ошибки:urn:meliora:problem:<code>.titlestringКороткое название ошибки на английском.statusintegerHTTP-статус.detailstringПояснение на русском или английском, по заголовкуAccept-Language. Не разбирайте этот текст в коде.instancestringURI запроса:urn:request:<request_id>.codestringМашинный код ошибки. Обрабатывайте ошибки поstatusиcode.paramstring или nullПараметр, к которому относится ошибка, илиnull.request_idstring (uuid)Идентификатор запроса, тот же, что в заголовкеRequest-Id.
Ответ с ошибкой
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json; charset=utf-8
Request-Id: 0f3c7a95-2e8b-4d16-b9a4-6c5e1d8f7b20
Cache-Control: no-store
{
"type": "urn:meliora:problem:invalid_parameter",
"title": "Invalid parameter",
"status": 400,
"detail": "Проверьте значение параметра",
"instance": "urn:request:0f3c7a95-2e8b-4d16-b9a4-6c5e1d8f7b20",
"code": "invalid_parameter",
"param": "limit",
"request_id": "0f3c7a95-2e8b-4d16-b9a4-6c5e1d8f7b20"
}