◆ Sapport для разработчиков Справочник API Каталог ошибок OpenAPI
Разделы

Лиды

Методов в разделе: 2. Все методы

МетодПутьОписаниеОбластиСтатус
GET/leadsСписок лидовleads:readДоступно ПДн
GET/leads/{id}Получить лидleads:readДоступно ПДн
GET /leads Доступно ПДн

#Список лидов

Лиды арендатора по возрастанию updated_at, постранично по курсору. По умолчанию архивные лиды не возвращаются. include_deleted=true пока даёт 422 not_supported: удалённые лиды (tombstones) не хранятся. Ответ содержит персональные данные контакта: каждая выдача записывается в журнал выдач, на RU нужны разрешённые адреса и страна получателя RU (иначе 403 pii_transfer_not_allowed).

Области
leads:read
Предел частоты
чтение
Идемпотентность
не требуется
Успешный ответ
200 Страница лидов.

Параметры

ПолеТипОписание
limitinteger
необязательное
Где: query. Размер страницы: от 1 до 100, по умолчанию 25.
cursorstring
необязательное
Где: query. Значение next_cursor из предыдущего ответа. Живёт 24 часа; при смене фильтров начинайте заново.
statusstring
необязательное
Где: query. Канонический статус.
archivedboolean
необязательное
Где: query. true — только архивные; по умолчанию false — только неархивные.
updated_sincestring
необязательное
Где: query. Лиды, изменённые не раньше этого момента (включительно). ISO 8601: дата или дата-время с поясом.
updated_afterstring
необязательное
Где: query. То же, но строго позже момента (для обхода «с последнего увиденного»). Нельзя вместе с updated_since.
sourcestring
необязательное
Где: query. Точное значение источника лида.
include_deletedboolean
необязательное
Где: query. true — вернуть также «надгробия» удалённых записей {id, deleted_at} (хранятся 30 суток).

Тело ответа

ПолеТипОписание
dataarray<Lead>
обязательное
next_cursorstring
обязательное, может быть null
Курсор следующей страницы; null — список закончился. Живёт 24 часа.

Примеры

Запрос
curl -X GET 'https://formula-cream.pro/api/public/v1/leads' \
  -H 'Authorization: Bearer '"$SAPPORT_API_KEY"
Ответ 200
{
  "data": [
    {
      "id": "EXAMPLE_ID",
      "external_id": null,
      "external_url": null,
      "version": null,
      "etag": "string",
      "status": "new",
      "archived": false,
      "archived_reason": null,
      "owner": "internal",
      "title": null,
      "source": null,
      "assigned_to": null,
      "value": null,
      "product_id": null,
      "course_slug": null,
      "contact": null,
      "conversation_id": null,
      "attribution": null,
      "score": null,
      "flags": null,
      "intent": null,
      "ai_summary": null,
      "next_action": null,
      "next_action_at": null,
      "lost_reason": null,
      "qualified_at": null,
      "won_at": null,
      "lost_at": null,
      "last_activity_at": null,
      "created_at": "2026-10-11T09:00:00Z",
      "updated_at": "2026-10-11T09:00:00Z"
    }
  ],
  "next_cursor": "EXAMPLE_CURSOR"
}
Пример ошибки
{
  "type": "https://formula-cream.pro/developers/errors#scope_missing",
  "title": "Scope is missing",
  "status": 403,
  "code": "scope_missing",
  "detail": "EXAMPLE",
  "request_id": "req_EXAMPLE"
}

Примеры иллюстративны: ключ в них условный (EXAMPLE), значения полей выдуманы.

Возможные ошибки

invalid_api_key wrong_cell integration_inactive tenant_inactive ip_not_allowed feature_not_in_plan rate_limited wallet_suspended service_unavailable internal_error scope_missing pii_transfer_not_allowed validation_failed

GET /leads/{id} Доступно ПДн

#Получить лид

Карточка лида: контакт, атрибуция, оценка (балл, класс A–D, причина, флаги), версия. Заголовок ETag равен полю etag. Ответ содержит персональные данные контакта: каждая выдача записывается в журнал выдач, на RU нужны разрешённые адреса и страна получателя RU (иначе 403 pii_transfer_not_allowed).

Области
leads:read
Предел частоты
чтение
Идемпотентность
не требуется
Успешный ответ
200 Лид.

Параметры

ПолеТипОписание
idstring
обязательное
Где: path. Идентификатор лида (uuid).

Тело ответа

ПолеТипОписание
idstring
обязательное
Идентификатор лида.
external_idstring
обязательное, может быть null
Идентификатор во внешней CRM; null, пока внешняя CRM не подключена.
external_urlstring
обязательное, может быть null
versioninteger
обязательное, может быть null
Версия для If-Match; null, пока в базе нет колонки версии — используйте etag.
etagstring
обязательное
Метка версии (совпадает с заголовком ETag карточки).
statusstring
обязательное
Один из шести канонических статусов. Архив — флаг archived, не статус.
Значения: new qualified proposal negotiation won lost
archivedboolean
обязательное
Лид в архиве.
archived_reasonstring
обязательное, может быть null
Причина архива, например ai_not_client.
ownerstring
обязательное
Где живёт лид: internal — в нашей CRM.
Значения: internal external
titlestring
обязательное, может быть null
sourcestring
обязательное, может быть null
assigned_tostring
обязательное, может быть null
Идентификатор ответственного сотрудника.
valueMoney
обязательное, может быть null
product_idstring
обязательное, может быть null
course_slugstring
обязательное, может быть null
contactLeadContact
обязательное, может быть null
conversation_idstring
обязательное, может быть null
attributionLeadAttribution
обязательное, может быть null
scoreLeadScore
обязательное, может быть null
flagsLeadFlags
обязательное, может быть null
intentstring
обязательное, может быть null
ai_summarystring
обязательное, может быть null
next_actionstring
обязательное, может быть null
next_action_atstring
обязательное, может быть null
ISO 8601 UTC.
lost_reasonstring
обязательное, может быть null
qualified_atstring
обязательное, может быть null
ISO 8601 UTC.
won_atstring
обязательное, может быть null
ISO 8601 UTC.
lost_atstring
обязательное, может быть null
ISO 8601 UTC.
last_activity_atstring
обязательное, может быть null
ISO 8601 UTC.
created_atstring
обязательное
Создан. ISO 8601 UTC.
updated_atstring
обязательное
Изменён. ISO 8601 UTC.

Примеры

Запрос
curl -X GET 'https://formula-cream.pro/api/public/v1/leads/EXAMPLE_ID' \
  -H 'Authorization: Bearer '"$SAPPORT_API_KEY"
Ответ 200
{
  "id": "EXAMPLE_ID",
  "external_id": "EXAMPLE_ID",
  "external_url": "https://example.com/hooks/sapport",
  "version": 0,
  "etag": "string",
  "status": "new",
  "archived": false,
  "archived_reason": "string",
  "owner": "internal",
  "title": "string",
  "source": "string",
  "assigned_to": "string",
  "value": {
    "amount": "123.45",
    "currency": "RUB"
  },
  "product_id": "EXAMPLE_ID",
  "course_slug": "string",
  "contact": {
    "id": "EXAMPLE_ID",
    "first_name": null,
    "last_name": null,
    "email": null,
    "phone": null,
    "tags": [
      null
    ],
    "geo_country": null,
    "geo_city": null
  },
  "conversation_id": "EXAMPLE_ID",
  "attribution": {
    "utm_source": null,
    "utm_medium": null,
    "utm_campaign": null,
    "first_page": null,
    "referrer": null
  },
  "score": {
    "score": 0,
    "grade": "A",
    "reason": null,
    "flags": null,
    "source": null,
    "model": null,
    "scored_at": null
  },
  "flags": {
    "buy_intent": null,
    "support": null,
    "supplier": null
  },
  "intent": "string",
  "ai_summary": "string",
  "next_action": "string",
  "next_action_at": "2026-10-11T09:00:00Z",
  "lost_reason": "string",
  "qualified_at": "2026-10-11T09:00:00Z",
  "won_at": "2026-10-11T09:00:00Z",
  "lost_at": "2026-10-11T09:00:00Z",
  "last_activity_at": "2026-10-11T09:00:00Z",
  "created_at": "2026-10-11T09:00:00Z",
  "updated_at": "2026-10-11T09:00:00Z"
}
Пример ошибки
{
  "type": "https://formula-cream.pro/developers/errors#scope_missing",
  "title": "Scope is missing",
  "status": 403,
  "code": "scope_missing",
  "detail": "EXAMPLE",
  "request_id": "req_EXAMPLE"
}

Примеры иллюстративны: ключ в них условный (EXAMPLE), значения полей выдуманы.

Возможные ошибки

invalid_api_key wrong_cell integration_inactive tenant_inactive ip_not_allowed feature_not_in_plan rate_limited wallet_suspended service_unavailable internal_error scope_missing pii_transfer_not_allowed not_found