# Контур.Диадок API: Войти и найти свой ящик

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

Без авторизационного токена и идентификатора ящика (`BoxId`) не работает ни один метод.

1. Получи токен: POST /V3/Authenticate?type=password с JSON `{"login": ..., "password": ...}` и заголовком `Authorization: DiadocAuth ddauth_api_client_id={ключ разработчика}`.
2. Дальше в каждом запросе передавай `Authorization: DiadocAuth ddauth_api_client_id={ключ}, ddauth_token={токен}`.
3. Получи организации пользователя: GET /GetMyOrganizations.
4. Возьми `Organizations[].Boxes[].BoxIdGuid` — его передают в методы как `boxId`.

```bash
curl -X POST "https://diadoc-api.kontur.ru/V3/Authenticate?type=password" \
  -H "Authorization: DiadocAuth ddauth_api_client_id=$CLIENT_ID" \
  -H "Content-Type: application/json" \
  -d '{"login": "user@example.com", "password": "secret"}'

curl "https://diadoc-api.kontur.ru/GetMyOrganizations" \
  -H "Authorization: DiadocAuth ddauth_api_client_id=$CLIENT_ID, ddauth_token=$TOKEN"
```

## Базовые URL

- Боевой: `https://diadoc-api.kontur.ru`
- Тестовый: `https://diadoc-api.testkontur.ru`

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

Тип: Другое

Нужны ключ разработчика (выдаётся по заявке на `https://www.diadoc.ru/integrations/api`) и авторизационный токен пользователя. Оба передаются в заголовке по схеме DiadocAuth:

Токен выдаёт POST /V3/Authenticate: по логину и паролю (`type=password`, JSON с `login` и `password`), по сертификату (`type=certificate`, ответ расшифровывается закрытым ключом и подтверждается через /V3/AuthenticateConfirm) или по `auth.sid` (`type=sid`).

```
Authorization: DiadocAuth ddauth_api_client_id={{client_id}}, ddauth_token={{auth_token}}
```

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

### POST /V3/Authenticate — Аутентификация

В ответе — авторизационный токен (для `password`) или зашифрованная строка (для `certificate`).

Документация: https://developer.kontur.ru/doc/diadoc.api/method?type=post&path=%2FV3%2FAuthenticate

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `type` | query | string | да | password, certificate или sid |
| `Authorization` | header | string | да | DiadocAuth ddauth_api_client_id={ключ разработчика} |
| `login` | body | string | нет | Логин (при type=password) |
| `password` | body | string | нет | Пароль (при type=password) |

### GET /GetMyOrganizations — Организации пользователя

`Organizations[]`: `OrgId`, `Inn`, `Kpp`, `FullName`, `ShortName`, `Ogrn`, `FnsParticipantId`, `Boxes[]` (`BoxId`, `BoxIdGuid`, `Title`), `Departments`, `IsRoaming`, `IsTest`, `Sociability`.

Документация: https://developer.kontur.ru/doc/diadoc.api/method?type=get&path=%2FGetMyOrganizations

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `Authorization` | header | string | да | Ключ разработчика и токен |
| `autoRegister` | query | boolean | нет | Регистрировать в организацию из сертификата (по умолчанию true) |

## Нюансы

- В методы передавайте `BoxIdGuid` из `GetMyOrganizations` (GUID).
- Электронная подпись (CMS SignedData в DER) формируется на стороне клиента; для работы с сертификатами и подписью Контур рекомендует SDK.
- Время в API — тики (100-наносекундные интервалы от 00:00:00 01.01.0001).
- Асинхронные методы (AcquireCounteragent, генерация печатных форм) отвечают `204` или пустым телом с `Retry-After`.
- `operationId` защищает от повторной отправки: при успешном вызове с тем же ID все следующие вернут тот же результат.
- Документы с тестовыми ящиками помечаются `IsTest` и не имеют юридической силы.
- Устаревшие поля сообщения (`Invoices`, `Torg12Documents`, `UniversalTransferDocumentSellerTitles` и др.) заменены универсальными `DocumentAttachments` и `RecipientTitles`.

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

- [Пригласить контрагента к обмену](https://mcp-everything.ru/integrations/diadoc/scenarios/priglasit-kontragenta-k-obmenu.md)
- [Отправить УПД или другой формализованный документ](https://mcp-everything.ru/integrations/diadoc/scenarios/otpravit-upd-ili-drugoy-formalizovannyy.md)
- [Забирать входящие документы](https://mcp-everything.ru/integrations/diadoc/scenarios/zabirat-vhodyaschie-dokumenty.md)
- [Подписать входящий документ](https://mcp-everything.ru/integrations/diadoc/scenarios/podpisat-vhodyaschiy-dokument.md)
- [Получить печатную форму PDF](https://mcp-everything.ru/integrations/diadoc/scenarios/poluchit-pechatnuyu-formu-pdf.md)

---

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