Отрасль: CRM и продажи. Актуально на 2026-10-24.
REST API системы управления задачами, проектами и сделками Мегаплан: задачи, проекты, сделки и схемы сделок, клиенты (компании и люди), сотрудники, комментарии, файлы. Запросы выполняются к адресу конкретного аккаунта с префиксом /api/v3/. Все сущности — JSON-объекты с полем contentType, а ссылки на другие сущности передаются «ссылочными» объектами из contentType и id.
Создавать задачи в Мегаплане из своей системы: заявка с сайта, обращение в поддержку, напоминание.
TOKEN=$(curl -s -X POST https://<аккаунт>.megaplan.ru/api/v3/auth/access_token \
-F username=<логин> -F password=<пароль> -F grant_type=password | jq -r .access_token)
curl -X POST https://<аккаунт>.megaplan.ru/api/v3/task \
-H "AUTHORIZATION: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"contentType": "Task",
"name": "Перезвонить клиенту по заявке с сайта",
"responsible": {"contentType": "Employee", "id": 1000003},
"subject": "Иван Петров, +7 999 000-11-22, интересуется доставкой",
"isUrgent": true
}'
Заявка превращается в клиента-компанию и сделку по нужной схеме.
curl -X POST https://<аккаунт>.megaplan.ru/api/v3/contractorCompany \
-H "AUTHORIZATION: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"contentType": "ContractorCompany", "name": "ООО \"Ромашка\"",
"contactInfo": [{"contentType": "ContactInfo", "isMain": true, "type": "email", "value": "info@romashka.ru"}]}'
curl -X POST https://<аккаунт>.megaplan.ru/api/v3/deal \
-H "AUTHORIZATION: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"contentType": "Deal",
"program": {"contentType": "Program", "id": 8},
"manager": {"contentType": "Employee", "id": 1000003},
"contractor": {"contentType": "ContractorCompany", "id": 1000666},
"description": "Заявка с сайта: поставка оборудования"}'
Забрать задачи в отчёт или BI: открытые, по ответственному, с нужными полями.
Q='{"fields": ["name", "status", "deadline", "responsible"], "onlyRequestedFields": true, "limit": 100}'
curl -G "https://<аккаунт>.megaplan.ru/api/v3/task" \
-H "AUTHORIZATION: Bearer $TOKEN" \
--data-urlencode "$Q"
# Следующая страница — после последней задачи из предыдущего ответа
Q='{"limit": 100, "pageAfter": {"contentType": "Task", "id": 1000245}}'
curl -G "https://<аккаунт>.megaplan.ru/api/v3/task" -H "AUTHORIZATION: Bearer $TOKEN" --data-urlencode "$Q"
https://<ваш-аккаунт>.megaplan.ru/api/v3/https://demo.megaplan.ru/api/v3/Тип: Bearer-токен
Токен передаётся в каждом запросе в заголовке AUTHORIZATION: Bearer <token>. Для авторизации по логину и паролю токен получают запросом POST /api/v3/auth/access_token с grant_type=password; он живёт 48 часов (expires_in 172800). Приложения Мегаплана получают токен в data->token событий приложения.
curl --request POST \
--url https://demo.megaplan.ru/api/v3/auth/access_token \
--header 'content-type: multipart/form-data;' \
--form username=dev-null@megoplan.ru \
--form password=123 \
--form grant_type=password
В ответе: access_token, expires_in, token_type, scope, refresh_token.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
username |
body | string | да | Логин пользователя |
password |
body | string | да | Пароль |
grant_type |
body | string | да | password |
Параметры передаются JSON-объектом в GET-параметрах.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
filter |
query | object | нет | Фильтр с contentType: "TaskFilter" и config.termGroup.terms — условия по полям (userCreated, responsible, status и др.) |
onlyRequestedFields |
query | boolean | нет | Отдавать только запрошенные поля |
fields |
query | array | нет | Список запрашиваемых полей |
limit |
query | integer | нет | Размер страницы, по умолчанию 100 |
pageAfter |
query | object | нет | Ссылочная сущность, после которой начать страницу |
pageBefore |
query | object | нет | Ссылочная сущность, до которой выдать страницу |
Коллекции возвращают только базовые поля; полный набор — в карточке.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
id |
path | integer | да | ID задачи |
onlyRequestedFields |
query | boolean | нет | Отдавать только запрошенные поля |
fields |
query | array | нет | Поля, например name, status, deadline, responsible |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
contentType |
body | string | да | Task |
name |
body | string | да | Название задачи |
responsible |
body | object | да | Ответственный: {"contentType": "Employee", "id": ...} |
subject |
body | string | нет | Описание |
isUrgent |
body | boolean | нет | Срочная |
isTemplate |
body | boolean | нет | Шаблон |
Category...CustomField... |
body | any | нет | Расширенные (пользовательские) поля |
Пример запроса:
{
"contentType": "Task",
"name": "Название задачи",
"responsible": {
"contentType": "Employee",
"id": 1000003
},
"subject": "Описание задачи",
"isUrgent": false,
"isTemplate": false
}
Изменение выполняется POST-запросом на адрес задачи с изменяемыми полями.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
id |
path | integer | да | ID задачи |
name |
body | string | нет | Новое название |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
id |
path | integer | да | ID задачи |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
contentType |
body | string | да | Deal |
program |
body | object | да | Схема сделки: {"contentType": "Program", "id": ...} |
manager |
body | object | нет | Менеджер: {"contentType": "Employee", "id": ...} |
contractor |
body | object | нет | Клиент: {"contentType": "ContractorCompany", "id": ...} |
description |
body | string | нет | Описание |
Пример запроса:
{
"contentType": "Deal",
"program": {
"contentType": "Program",
"id": 8
},
"manager": {
"contentType": "Employee",
"id": 1000003
},
"contractor": {
"contentType": "ContractorCompany",
"id": 1000666
},
"description": "Описание"
}
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
filter |
query | object | нет | Фильтр с contentType: "TradeFilter"; условия по manager, state и др.; для расширенных полей — program |
limit |
query | integer | нет | Размер страницы |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
contentType |
body | string | да | ContractorCompany |
name |
body | string | да | Название |
contactInfo |
body | array | нет | Контакты: contentType: "ContactInfo", type (например email), value, isMain |
Пример запроса:
{
"contentType": "ContractorCompany",
"name": "ООО \"Ромашка\"",
"contactInfo": [{
"contentType": "ContactInfo",
"isMain": true,
"type": "email",
"value": "romashka45986521@gmail.com"
}]
}
Список сотрудников аккаунта; карточка — GET /api/v3/employee/{id}.
Список схем сделок; карточка — GET /api/v3/program/{id}.
Загрузка файла multipart-формой (поле files[]). В ответе — id файла, который затем указывают в создаваемой сущности вместе с contentType.
Пример запроса:
curl 'https://demo.megaplan.ru/api/file'
-H 'content-type: multipart/form-data;'
-F 'files[]=@/path/to/file'
meta + data: в meta — status, ошибки и pagination (count, limit).GET /api/v3/currency?{"limit": "3"}.pageAfter/pageBefore принимают ссылочную сущность (contentType + id), а не номер страницы.id или передайте fields.POST на её адрес (/api/v3/task/{id}), а не PUT или PATCH.Category130CustomField...; для фильтра по расширенным полям сделок нужно указать схему program./api/v3/docs; RAML-описание — /api/v3.| Код | Описание |
|---|---|
200 |
Успешно |
403 |
Ошибка доступа |
422 |
Ошибка в запросе |
Если этого недостаточно — официальная документация: https://dev.megaplan.ru/apiv3/index.html JSON: https://mcp-everything.ru/api/integrations/megaplan. MCP: https://mcp-everything.ru/mcp