# МойСклад JSON API 1.2: Выгрузить большой отчёт асинхронно

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

Для больших коллекций (остатки, контрагенты, ассортимент, отчёты) без листания.

1. Добавь `async=true` к запросу (без `limit` и `offset`) — ответ `202` с заголовками `Location` (результат) и `Content-Location` (статус).
2. Опрашивай статус: GET /api/remap/1.2/async/{id}.
3. Когда задача готова, скачай результат по адресу из `Location`. Результат хранится 1 час.

```shell
curl --compressed -X GET \
  "https://api.moysklad.ru/api/remap/1.2/report/stock/bystore?async=true" \
  -H "Authorization: Bearer <Access-Token>" \
  -H "Accept-Encoding: gzip"
```

## Базовые URL

- Боевой: `https://api.moysklad.ru`
- Все пути начинаются с .: `/api/remap/1.2`

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

Тип: Bearer-токен

Два способа: Basic Auth (заголовок `Authorization: Basic` с `логин:пароль` в Base64) или токен доступа (`Authorization: Bearer <AccessToken>`). Токен пользователя выдаёт POST /api/remap/1.2/security/token; для решений из маркетплейса используется токен решения. Лимит запросов зависит от способа: токены решений расходуют лимит медленнее, чем логин/пароль и токен пользователя.

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

### GET /api/remap/1.2/async/{id} — Статус асинхронной задачи

Документация: https://dev.moysklad.ru/doc/api/remap/1.2/#/async#2-asinhronnyj-obmen

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `id` | path | string | да | ID задачи из заголовка Content-Location |

## Нюансы

- Обязательно сжатие: заголовок `Accept-Encoding: gzip`, иначе `415` без тела.
- Ссылки на объекты передаются в формате `meta` (`href`, `type`, `mediaType`).
- Списки возвращают `meta` (`size`, `limit`, `offset`, `nextHref`, `previousHref`) и `rows`; `limit` — до 1000.
- Массив `positions` в запросе на обновление полностью заменяет позиции документа: непереданные удаляются.
- Цены и суммы — в копейках.
- Функции под заголовком `X-Lognex-Remap-Beta-Feature` не подпадают под гарантию неизменности структуры.
- Остаток по заголовкам: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-Lognex-Retry-TimeInterval`, `X-Lognex-Reset`, `X-Lognex-Retry-After`.
- Вебхуки работают только на платных тарифах и в пробный период; при бесплатном тарифе их нельзя создать.
- Есть MCP-сервер документации JSON API (раздел MCP-dev) — он ищет по документации и не выполняет запросы к аккаунту.

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

- [Получить токен и начать работу](https://mcp-everything.ru/integrations/moysklad/scenarios/poluchit-token-i-nachat-rabotu.md)
- [Выгрузить каталог с остатками](https://mcp-everything.ru/integrations/moysklad/scenarios/vygruzit-katalog-s-ostatkami.md)
- [Создать покупателя и заказ](https://mcp-everything.ru/integrations/moysklad/scenarios/sozdat-pokupatelya-i-zakaz.md)
- [Отгрузить заказ](https://mcp-everything.ru/integrations/moysklad/scenarios/otgruzit-zakaz.md)
- [Получать уведомления об изменениях](https://mcp-everything.ru/integrations/moysklad/scenarios/poluchat-uvedomleniya-ob-izmeneniyah.md)

---

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