МойСклад JSON API 1.2: Выгрузить каталог с остатками

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

Синхронизация товаров и остатков с сайтом или маркетплейсом. Новый эндпоинт ассортимента не считает остатки — их берут из краткого отчёта и связывают по id.

  1. Получи ассортимент: GET /api/remap/1.2/entity/assortment с заголовком X-Lognex-Remap-Beta-Feature: assortmentWithoutStock; листай по limit (до 1000) и offset.
  2. Запроси остатки: GET /api/remap/1.2/report/stock/all/current с нужным stockType (stock, freeStock, quantity, reserve, inTransit).
  3. Свяжи id из ассортимента с assortmentId из отчёта.
  4. Для частых обновлений передавай changedSince (не дальше 24 часов назад) и раз в сутки делай полную синхронизацию.
curl --compressed -X GET \
  "https://api.moysklad.ru/api/remap/1.2/entity/assortment" \
  -H "Authorization: Basic <Credentials>" \
  -H "Accept-Encoding: gzip" \
  -H "X-Lognex-Remap-Beta-Feature: assortmentWithoutStock"

Базовые URL

Авторизация

Тип: Bearer-токен

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

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

GET /api/remap/1.2/entity/assortment — Ассортимент

Все товары, услуги, комплекты, модификации и партии. Без заголовка assortmentWithoutStock запрос уходит в старый эндпоинт, который планируется удалить.

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

Параметр Где Тип Обяз. Описание
X-Lognex-Remap-Beta-Feature header string да assortmentWithoutStock
limit query integer нет До 1000 (по умолчанию 1000)
offset query integer нет Отступ, по умолчанию 0
search query string нет Контекстный поиск
filter query string нет Фильтр, например filter=archived=false

GET /api/remap/1.2/report/stock/all/current — Краткий отчёт об остатках

Только ID позиции и остаток, все данные одним ответом без листания. Для частого обновления (каждые 5–15 минут). Доступен администратору или сотруднику с правом на остатки.

Документация: https://dev.moysklad.ru/doc/api/remap/1.2/#/reports/report-stock#3-kratkij-otchet-ob-ostatkah

Параметр Где Тип Обяз. Описание
stockType query string нет stock (по умолчанию), freeStock, quantity, reserve, inTransit
changedSince query string нет Остатки, изменившиеся с момента гггг-мм-дд чч:мм:сс (не больше 24 часов назад)
include query string нет zeroLines — включить нулевые остатки
filter query string нет assortmentId=... и/или storeId=..., несколько через запятую

Нюансы

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


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