Перейти к содержимому
AISARAISAR
REST API

Воронки

Воронки продаж и их стадии — структура канбан-доски, по которой перемещаются сделки. Через API вы читаете список воронок, создаёте и обновляете воронку вместе со стадиями одним запросом, удаляете воронку и получаете Kanban-доску со сделками, сгруппированными по стадиям.

Поля воронки

У воронки есть поля name (до 255 символов), description (до 2000 символов, может быть null) и status (draft, active, paused или archived).

Стадии

Стадии создаются и обновляются вместе с воронкой одним запросом; каждая стадия несёт name, type (new, in_progress, success или failed), color (до 16 символов) и order.

Доска воронки

Доска воронки (/board) отдаёт до 50 карточек-сделок по каждой стадии вместе с агрегатами стадии (deals_count, total_amount); для дозагрузки конкретной колонки используйте постраничный эндпоинт стадии (perPage по умолчанию 50).

Эндпоинты

МетодПуть
GET/v1/funnels

Список воронок компании

POST/v1/funnels

Создание воронки (со стадиями)

POST/v1/funnels/{funnel}

Обновление воронки

DELETE/v1/funnels/{funnel}

Удаление воронки

GET/v1/funnels/{funnel}/board

Kanban-доска воронки со сделками по стадиям

GET/v1/funnels/{funnel}/stages/{stage}/deals

Постраничная загрузка сделок конкретной стадии

Примеры

Создание воронки со стадиями

Запрос

bash
curl -X POST https://api.aisar.app/v1/funnels \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sales",
    "description": "Primary sales pipeline",
    "status": "active",
    "stages": [
      { "name": "Lead", "type": "new", "color": "#3B82F6", "order": 1 },
      { "name": "Negotiation", "type": "in_progress", "color": "#F59E0B", "order": 2 },
      { "name": "Won", "type": "success", "color": "#22C55E", "order": 3 }
    ]
  }'

Ответ

json
{
  "data": {
    "message": "Funnel created.",
    "funnel": {
      "id": 1,
      "company_id": 1,
      "name": "Sales",
      "slug": "sales",
      "description": "Primary sales pipeline",
      "steps": 3,
      "updated_at": "2026-03-15T10:00:00.000000Z",
      "stages": [
        { "id": 1, "funnel_id": 1, "name": "Lead", "type": "new", "order": 1, "color": "#3B82F6", "stale_after_days": null, "wip_limit": null },
        { "id": 2, "funnel_id": 1, "name": "Negotiation", "type": "in_progress", "order": 2, "color": "#F59E0B", "stale_after_days": null, "wip_limit": null },
        { "id": 3, "funnel_id": 1, "name": "Won", "type": "success", "order": 3, "color": "#22C55E", "stale_after_days": null, "wip_limit": null }
      ]
    }
  }
}

Kanban-доска воронки

Запрос

bash
curl https://api.aisar.app/v1/funnels/1/board \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Ответ

json
{
  "data": {
    "funnel": { "id": 1, "name": "Sales" },
    "stages": [
      {
        "id": 1,
        "name": "Lead",
        "type": "new",
        "order": 1,
        "color": "#3B82F6",
        "stale_after_days": null,
        "wip_limit": null,
        "deals_count": 1,
        "total_amount": "5000.00",
        "deals": [
          {
            "id": 501,
            "title": "Office renovation",
            "amount": "5000.00",
            "currency": "KZT",
            "status": "open",
            "expected_close_date": null,
            "stage_changed_at": "2026-03-15T10:00:00.000000Z",
            "age_days": 3,
            "is_stale": false,
            "channel": "whatsapp",
            "contact_name": "Aigerim Bekova",
            "contact_avatar": null,
            "responsible_user_name": "Aidos",
            "last_message_preview": "Hello, can we schedule a call?",
            "last_message_at": "2026-03-15T09:40:00.000000Z",
            "conversations_count": 2
          }
        ]
      }
    ]
  }
}

Постраничная загрузка сделок стадии

Запрос

bash
curl "https://api.aisar.app/v1/funnels/1/stages/1/deals?page=2&perPage=50" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Ответ

json
{
  "data": {
    "items": [
      {
        "id": 542,
        "title": "Warehouse lease",
        "amount": "12000.00",
        "currency": "KZT",
        "status": "open",
        "expected_close_date": "2026-04-01",
        "stage_changed_at": "2026-03-14T08:00:00.000000Z",
        "age_days": 4,
        "is_stale": false,
        "channel": "telegram",
        "contact_name": "Marat Ospanov",
        "contact_avatar": null,
        "responsible_user_name": "Aidos",
        "last_message_preview": null,
        "last_message_at": null,
        "conversations_count": 1
      }
    ],
    "pagination": { "page": 2, "perPage": 50, "total": 120, "lastPage": 3 }
  }
}