---
title: "Массово изменить лиды"
method: POST
path: "/api/v1/crm/leads/bulk"
tags: ["CRM leads"]
---

# Массово изменить лиды

`POST /api/v1/crm/leads/bulk`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/crm/leads/bulk`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://erp.akeda.ru/oauth2/authorize`, token URL `https://erp.akeda.ru/oauth2/token`, scopes: `akeda:delegate`)

Одно действие над выбранными лидами списка: assign — сменить ответственного (owner_id), move — перенести на этап доски лидов (stage_id), archive — убрать в архив, restore — вернуть из архива. Каждый лид меняется отдельно и проходит те же проверки, что правка по одной: доступ к записи и правила этапа — на итоговый этап лид переходит только решением (crm.lead_stage_decision_required). Лид, к которому действие не применилось, не мешает остальным и попадает в skipped с кодом и причиной. Весь запрос отклоняется 400 только при ошибке самого запроса: crm.bulk_invalid, crm.bulk_size, crm.bulk_action, crm.bulk_owner_required, crm.bulk_stage_required.

## Headers

- `X-Tenant` string, required

## Request body

- CRMBulkLeadsInput: Одно действие над выбранными лидами
  - `ids` UUID[], required: Выбранные лиды: от 1 до 200, повторы отбрасываются
  - `action` 'assign' | 'move' | 'archive' | 'restore', required: Действие: assign — сменить ответственного, move — перенести на этап, archive — убрать в архив, restore — вернуть из архива
  - `owner_id` integer: Новый ответственный; обязателен для assign
  - `stage_id` string, uuid

## Response `200`

Изменённые лиды и пропущенные с причиной

- CRMBulkResult: Итог массового действия: подходящие записи изменены, неподходящие пропущены с причиной
  - `updated` UUID[], required: Изменённые записи
  - `skipped` CRMBulkSkip[], required: Пропущенные записи с причиной
    - `id` string, uuid, required
    - `code` string: Тот же код отказа, что вернула бы правка этой записи по одной, например crm.record_forbidden или crm.stage_fields_required
    - `detail` string, required: Причина на языке запроса

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права

---

[API](https://skmtc.dev/akeda/apis/akeda-erp-client-api.md) · [All operations](https://skmtc.dev/akeda/apis/akeda-erp-client-api/llms.txt) · [OpenAPI document](https://skmtc.dev/akeda/apis/akeda-erp-client-api/revisions/3c60ded179f2?raw)
