# Контур.Фокус API: Отслеживать изменения у контрагентов

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

NEW Наблюдение: ставишь компании на наблюдение, один раз берёшь полное состояние, потом читаешь ленту изменений в формате RFC 6902 (`path`, `operation`, `oldValue`, `newValue`).

1. Добавь компании в список: POST /api3/monitoringList?method=req, тело — массив объектов с `inn` и/или `ogrn`.
2. Получи полные состояния: GET /api3/monitoringGetStates?method=req&ogrn=... — запомни минимальный `changeId`.
3. Читай изменения: GET /api3/monitoringGetChanges?method=req&changeId=... и сохраняй последний полученный `changeId`.
4. При `isNewCompany` запроси полное состояние компании заново. Изменения хранятся 90 дней.

```bash
curl -X POST "https://focus-api.kontur.ru/api3/monitoringList?key=$FOCUS_KEY&method=req" \
  -H "Content-Type: application/json" \
  -d '[{"inn": "6663003127"}, {"ogrn": "1027700070518"}]'

curl "https://focus-api.kontur.ru/api3/monitoringGetStates?key=$FOCUS_KEY&method=req&ogrn=1027700070518"

curl "https://focus-api.kontur.ru/api3/monitoringGetChanges?key=$FOCUS_KEY&method=req&changeId=$CHANGE_ID"
```

## Базовые URL

- Боевой: `https://focus-api.kontur.ru`

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

Тип: API-ключ

Ключ доступа передаётся параметром `key` в строке запроса. Тестовый ключ выдают по заявке: `https://focus.kontur.ru/site/api/order-api`. Для ключей с лимитом больше 100 000 компаний или запросов обязателен второй фактор: ограничение по IP-диапазонам или подпись каждого запроса сертификатом (настраивает техподдержка, focus-api@kontur.ru).

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

### POST /api3/monitoringList — Добавление компаний на наблюдение

Тело — JSON-массив объектов с `inn` и/или `ogrn`. В ответе: `countOfCompaniesInList`, `listSize`, `spentInTotalLimit`, `totalLimit`, `listOfCompaniesInQuery`, `listOfInvalid`. Есть также GET (просмотр списка, `skip`/`take`) и DELETE (удаление).

Документация: https://developer.kontur.ru/doc/focus-v2/method?type=post&path=%2Fapi3%2FmonitoringList

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `key` | query | string | да | Ключ доступа |
| `method` | query | string | да | Схема наблюдения: req или egrDetails |
| `[].inn` | body | string | нет | ИНН |
| `[].ogrn` | body | string | нет | ОГРН |

### GET /api3/monitoringGetStates — Полные состояния по списку

В ответе: `changeId`, `inn`, `ogrn`, `isDissolvedMoreThanTTL`, `responseFromApiMethod` (полный ответ по схеме метода).

Документация: https://developer.kontur.ru/doc/focus-v2/method?type=get&path=%2Fapi3%2FmonitoringGetStates

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `key` | query | string | да | Ключ доступа |
| `method` | query | string | да | req или egrDetails |
| `ogrn` | query | string | да | ОГРН, до 100 через запятую |

### GET /api3/monitoringGetChanges — Лента изменений

В ответе: `changeId`, `inn`, `ogrn`, `changes[]` (`path`, `operation` — `add`/`remove`/`replace`, `oldValue`, `newValue`), `isNewCompany`, `timestamp`.

Документация: https://developer.kontur.ru/doc/focus-v2/method?type=get&path=%2Fapi3%2FmonitoringGetChanges

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `key` | query | string | да | Ключ доступа |
| `method` | query | string | да | req или egrDetails |
| `changeId` | query | integer | нет | С какого изменения читать (для старта — минимальный из monitoringGetStates) |
| `getFirstChangesFromTTL` | query | boolean | нет | Все известные изменения за последние 90 дней |
| `withoutDetails` | query | boolean | нет | Без подробностей изменений |

## Нюансы

- Большинство методов принимают ИНН или ОГРН и до 100 значений через запятую; ответ — массив по каждой компании.
- Формат по умолчанию JSON; `xml=true` переключает на XML (методы наблюдения — только JSON).
- `focusHref` ведёт в веб-карточку Фокуса — для неё нужна подписка на сервис.
- Методы `/api3/analytics` и `/api3/buh` устарели: используйте группу новых аналитических методов и `/api3/accountingReports`.
- Старое наблюдение (`/api3/monList`, `/api3/req/mon`, `/api3/egrDetails/mon`) поддерживается, но рекомендуется NEW Наблюдение (`monitoringList`, `monitoringGetStates`, `monitoringGetChanges`).
- Изменения в NEW Наблюдении хранятся 90 дней; `changeId` растёт, но не обязательно подряд.
- Самозанятые: лимит считается по уникальным ИНН в сутки (сброс в 00:00 UTC); с 21:00 до 00:00 МСК возможны техработы.
- Есть игровой стенд с формами методов (например, `https://focus-api.kontur.ru/api3/req/userform`).

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

- [Заполнить реквизиты контрагента по ИНН](https://mcp-everything.ru/integrations/kontur-focus/scenarios/zapolnit-rekvizity-kontragenta-po-inn.md)
- [Найти компанию по названию](https://mcp-everything.ru/integrations/kontur-focus/scenarios/nayti-kompaniyu-po-nazvaniyu.md)
- [Проверить надёжность контрагента перед сделкой](https://mcp-everything.ru/integrations/kontur-focus/scenarios/proverit-nadezhnost-kontragenta-pered.md)
- [Проверить пакет контрагентов](https://mcp-everything.ru/integrations/kontur-focus/scenarios/proverit-paket-kontragentov.md)
- [Проверить статус самозанятого](https://mcp-everything.ru/integrations/kontur-focus/scenarios/proverit-status-samozanyatogo.md)

---

Если этого недостаточно — официальная документация: https://developer.kontur.ru/doc/focus-v2
Вся интеграция одним документом: https://mcp-everything.ru/integrations/kontur-focus.md
