# Roistat REST API: Сверить сделки с выручкой

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

Проверить, какие сделки Roistat видит оплаченными и откуда они пришли.

1. Запроси сделки: POST /project/integration/order/list с filters (например, статус 1 — оплачен), limit и offset.
2. С extend = ["visit"] в каждой сделке будут полные данные визита — но такой запрос ограничен по частоте (при limit больше 100 — 5 в минуту), поэтому бери небольшие страницы.
3. Сравни revenue и status с данными своей учётной системы и при расхождении перевыгрузи сделку через POST /project/add-orders.

```bash
curl -X POST "https://cloud.roistat.com/api/v1/project/integration/order/list?project=12345" \
  -H "Api-key: $ROISTAT_KEY" -H 'Content-Type: application/json' \
  -d '{"filters": {"and": [["status", "=", "1"]]}, "limit": 100, "offset": 0}'
```

## Базовые 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/integration/order/list — Список сделок

В ответе `data[]` (`id`, `source_type`, `creation_date`, `revenue`, `cost`, `visit_id`, `client_id`, `custom_fields`, `status`), `total`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `project` | query | string | да | Номер проекта |
| `filters` | body | object | нет | Фильтры (and); статус: 0 в работе, 1 оплачен, 2 отменён |
| `extend` | body | array | нет | visit — вернуть полные данные визита |
| `limit` | body | integer | нет | Число сделок |
| `offset` | body | integer | нет | Смещение |

### 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; 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)
- [Передать сделки из своей CRM](https://mcp-everything.ru/integrations/roistat/scenarios/peredat-sdelki-iz-svoey-crm.md)
- [Забирать заявки и звонки с источниками](https://mcp-everything.ru/integrations/roistat/scenarios/zabirat-zayavki-i-zvonki-s-istochnikami.md)

---

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