API Plano

Читайте и меняйте карточки из своих скриптов и сервисов, получайте события вебхуками и подключайте задачи к календарю.

Доступ

Создайте токен в «Настройки → Интеграции» и передавайте его в заголовке Authorization. Ответы — JSON.

curl https://api.plano.team/users/me \
  -H "Authorization: Bearer <token>"

Быстрый старт

Найти проект, колонку и создать карточку:

# 1. список проектов
curl https://api.plano.team/projects -H "Authorization: Bearer <token>"

# 2. доска проекта: колонки и карточки
curl https://api.plano.team/projects/<projectId>/board -H "Authorization: Bearer <token>"

# 3. новая карточка в первой колонке
curl -X POST https://api.plano.team/cards \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{"columnId": "<columnId>", "title": "Hello from the API", "priority": "HIGH", "dueDate": "2026-11-10"}'

Основные методы

Адрес API: https://api.plano.team. Даты — ISO 8601. Этот набор стабилен; остальные методы интерфейса могут меняться.

GET/users/meВы: имя, роль, права
GET/usersСотрудники пространства
GET/projectsСписок проектов
POST/projectsСоздать проект (title, необязательные templateId, startDate, deadline)
GET/projects/{id}/boardДоска проекта: колонки с карточками
GET/cards/search?q=Поиск карточек по названию, описанию или ключу
GET/cards/{id}Карточка целиком: подзадачи, комментарии, история
POST/cardsСоздать карточку (columnId и title обязательны)
PATCH/cards/{id}Изменить поля карточки
POST/cards/{id}/moveПереместить в колонку (columnId, необязательно position)
DELETE/cards/{id}Удалить карточку (нужно право на удаление)
POST/cards/{id}/commentsДобавить комментарий
POST/cards/{id}/checklistДобавить подзадачу (text)
GET/labelsСписок меток
POST/labelsСоздать метку (name, color)

Поля создания и изменения карточки: title, description, priority (LOW, MEDIUM, HIGH), startDate, dueDate, estimateHours, assigneeIds, labelIds. Комментарий: text и необязательные mentionIds.

Вебхуки

Добавьте адрес в «Настройки → Интеграции», и Plano будет присылать на него POST с JSON при событиях. Адрес должен быть публичным и начинаться с https://. Выбранных событий может быть несколько, без выбора приходят все.

Пример тела запроса:

{
  "event": "card.moved",
  "createdAt": "2026-11-03T09:15:00.000Z",
  "actor": { "id": "clx1…", "name": "Anna" },
  "card": {
    "id": "clx2…",
    "key": "TSK-12",
    "title": "Prepare the brief",
    "priority": "HIGH",
    "dueDate": "2026-11-10T00:00:00.000Z",
    "project": { "id": "clx3…", "title": "Website" },
    "column": { "id": "clx4…", "title": "In progress" },
    "assignees": [{ "id": "clx1…", "name": "Anna" }],
    "labels": [{ "id": "clx5…", "name": "Feature", "color": "blue" }],
    "url": "https://app.example.com/projects/clx3…?card=clx2…"
  },
  "from": "Backlog",
  "to": "In progress"
}

Заголовки:

import { createHmac, timingSafeEqual } from "crypto";

function isValid(rawBody, headers, secret) {
  const expected = createHmac("sha256", secret)
    .update(headers["x-plano-timestamp"] + "." + rawBody)
    .digest("hex");
  const got = headers["x-plano-signature"].replace("sha256=", "");
  return got.length === expected.length && timingSafeEqual(Buffer.from(got), Buffer.from(expected));
}

Ответьте кодом 2xx в течение 8 секунд. Иначе Plano повторит отправку ещё два раза (через 5 и 30 секунд). Журнал последних отправок виден в настройках, там же можно отправить тестовое событие и сменить секрет.

Календарь задач

В профиле можно получить личную ссылку на календарь в формате iCal. Добавьте её в Google Календарь, Apple Календарь или Outlook как подписку: в нём будут незавершённые карточки, где вы исполнитель и указан срок. Ссылка секретная, её можно заменить в любой момент.