# Roistat REST API: Передать сделки из своей CRM

Сценарий из mcp-everything. Актуально на 2026-10-24.

Если CRM не подключена штатно — выгружать сделки и статусы через API, чтобы Roistat считал выручку по каналам.

1. Один раз передай справочник статусов: POST /project/set-statuses — массив всех статусов с id, name и type (unused, in progress, paid, canceled). Передавай полный список: существующий id с новым именем переименует статус.
2. Выгружай сделки: POST /project/add-orders — массив сделок с id, name, date_create, status, price, cost и roistat — номером визита (его кладёт на сайт скрипт Roistat в куку roistat_visit).
3. В ответе uploaded, processed, saved и счётчики пропущенных — по ним видно, что не загрузилось.
4. Сменить статус одной сделки, созданной через API или цели, можно методом POST /project/integration/order/{orderId}/status/update.

```bash
curl -X POST "https://cloud.roistat.com/api/v1/project/add-orders?project=12345" \
  -H "Api-key: $ROISTAT_KEY" -H 'Content-Type: application/json' \
  -d '[{"id": "1042", "name": "Заказ №1042", "date_create": "2026-10-23 14:05", "status": "2", "price": "15000", "cost": "9000", "roistat": "345678"}]'
```

## Базовые URL

- Боевой: `https://cloud.roistat.com/api/v1`

## Авторизация

Тип: API-ключ

Ключ API (один на пользователя, действует для всех его проектов) берётся в профиле: `https://cloud.roistat.com/user/profile/api`. Передаётся в заголовке `Api-key` (рекомендуется; параметр `key` в URL небезопасен). Номер проекта — в параметре `project` строки запроса; без него работают только `/user/projects` и `/account/project/create`.

```
curl 'https://cloud.roistat.com/api/v1/project/proxy-leads?project=12345&period=2021-07-07-2021-09-24' \
    --request GET \
    --header 'Content-type: application/json' \
    --header 'Api-key: {KEY}'
```

## Методы сценария

### POST /project/add-orders — Выгрузка сделок из CRM

Тело — массив сделок.

В ответе: `uploaded`, `processed`, `saved`, счётчики пропущенных (`skipped_by_status`, `skipped_because_not_changed` и др.).

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `project` | query | string | да | Номер проекта |
| `[].id` | body | string | нет | ID сделки в CRM |
| `[].name` | body | string | нет | Название сделки |
| `[].date_create` | body | string | нет | UNIX time или YYYY-MM-DD HH:MM |
| `[].status` | body | string | нет | ID статуса из set-statuses |
| `[].roistat` | body | string | нет | Номер визита Roistat |
| `[].price` | body | string | нет | Сумма (для выручки) |
| `[].cost` | body | string | нет | Себестоимость |
| `[].fields` | body | object | нет | Доп. поля, до 1000 символов каждое |

### POST /project/set-statuses — Выгрузка статусов сделок

Передавайте все статусы (существующие и новые) одним массивом; существующий ID с новым именем переименовывает статус.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `project` | query | string | да | Номер проекта |
| `[].id` | body | string | нет | ID статуса |
| `[].name` | body | string | нет | Название |
| `[].type` | body | string | нет | unused, in progress, paid, canceled |

### POST /project/integration/order/{orderId}/status/update — Смена статуса сделки

Только для интеграции через цели или API.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `orderId` | path | string | да | ID сделки |
| `project` | query | string | да | Номер проекта |
| `status_id` | body | string | нет | ID статуса в Roistat |

## Нюансы

- По умолчанию все методы — POST; GET допускается для методов, оканчивающихся на `/list`, и для отдельных ресурсов (проекты, прокси-лиды, детали сделки).
- Тело — JSON или XML; поддерживается CORS; время по умолчанию — UTC+0.
- По умолчанию все ответы, включая ошибки, приходят с HTTP 200; заголовок `Use-Http-Code: 1` включает реальные HTTP-коды.
- Ответы содержат `data`, `total`, `status`.
- Список сделок с `extend: visit`: при `limit` больше 1000 — 1 запрос в минуту, больше 100 — 5, меньше 100 — 10; без `extend` — 20 в минуту.

## Другие сценарии

- [Выгрузить отчёт сквозной аналитики](https://mcp-everything.ru/integrations/roistat/scenarios/vygruzit-otchet-skvoznoy-analitiki.md)
- [Забирать заявки и звонки с источниками](https://mcp-everything.ru/integrations/roistat/scenarios/zabirat-zayavki-i-zvonki-s-istochnikami.md)
- [Сверить сделки с выручкой](https://mcp-everything.ru/integrations/roistat/scenarios/sverit-sdelki-s-vyruchkoy.md)

---

Если этого недостаточно — официальная документация: https://help-en.roistat.com/API/methods/about/
Вся интеграция одним документом: https://mcp-everything.ru/integrations/roistat.md
