Magic Склад
Тарифы Услуги Оборудование Нейроблог Маркетплейсы Маркировка Производство Розница Облачная касса
Техническое руководство

API МойСклад: авторизация, лимиты и надежная синхронизация данных

JSON API МойСклад позволяет работать почти со всеми основными сущностями: товарами, контрагентами, заказами, документами и отчетами. Главная сложность интеграции не в первом успешном запросе, а в надежной синхронизации без дублей, пропусков и превышения лимитов.

Архитектура интеграции через API МойСклад
Для разработчиков: храните токен только на сервере, читайте коллекции постранично, отслеживайте updated, уважайте заголовки rate limit, повторяйте только безопасные операции и сохраняйте соответствие внешних ID.

Авторизация: токен вместо пароля

Официальная документация поддерживает Basic Auth и токен доступа. Для рабочей интеграции безопаснее использовать Bearer-токен, хранить его только в серверном секрет-хранилище и не передавать в браузер, логи или сообщения об ошибках.

GET https://api.moysklad.ru/api/remap/1.2/entity/product
Authorization: Bearer <access-token>
Accept-Encoding: gzip

При выпуске нового токена ранее созданные токены пользователя отзываются. Поэтому ротацию нужно проводить как управляемую операцию: обновить секрет, проверить запрос и только затем перезапускать фоновые задачи.

Как читать большие объемы данных

Pagination

Коллекции возвращаются с метаданными size, limit и offset. Максимальный размер стандартной выборки — 1000 элементов. Надежный клиент должен переходить по nextHref или увеличивать offset до окончания выдачи.

Фильтрация

Не выгружайте весь аккаунт при каждом запуске. Для инкрементальной синхронизации используйте поддерживаемые фильтры, в том числе дату обновления, и сохраняйте безопасное перекрытие временного окна. Даты API возвращаются в московском часовом поясе.

Expand и fields

expand заменяет ссылки связанными объектами, но разрешен только при размере выборки не более 100 и имеет максимальную глубину 3. Параметр fields также имеет ограничения; например, остатки в позициях документов можно запросить через fields=stock.

Лимиты и ошибка 429

Клиент должен читать служебные заголовки X-RateLimit-Limit, X-RateLimit-Remaining, X-Lognex-Reset и X-Lognex-Retry-After. При превышении лимита API возвращает HTTP 429. Ограничение параллельных запросов может вернуть код ошибки 1073.

Правильная реакция: остановить новые запросы, выдержать Retry-After, добавить случайную задержку и повторить операцию ограниченное число раз. Бесконечный немедленный retry только усиливает перегрузку.

Для массового создания, обновления или удаления допускаются массивы до 1000 объектов. Если операция приближается к таймауту, размер пакета нужно уменьшить.

Архитектура надежной синхронизации

  1. Первичная загрузка. Постранично получить нужные сущности и сохранить их ID.
  2. Инкрементальный цикл. Запрашивать изменения после последней подтвержденной контрольной точки.
  3. Вебхуки. Использовать как быстрый сигнал, но не как единственный журнал истины.
  4. Периодическая сверка. Повторно проверять измененные диапазоны, чтобы закрыть потерянные события.
  5. Очередь обработки. Отделить получение события от медленных обращений во внешние системы.

Храните таблицу соответствий moysklad_id ↔ external_id. Поиск только по названию ненадежен: наименования меняются и могут повторяться.

Как не создавать дубли при записи

Безопасность и эксплуатация

Если интеграция влияет на остатки, заказы или платежные документы, проектирование важнее скорости первого прототипа. Мы выполняем разработку интеграций МойСклад по API с очередями, защитой от дублей и наблюдаемостью.

Вывод

Устойчивая интеграция — это контролируемый поток данных, а не набор вызовов API. Она знает, где остановилась, умеет безопасно повторить запрос, соблюдает лимиты и позволяет объяснить происхождение каждого документа.

Частые вопросы

Какой максимальный limit у коллекций API МойСклад?

Для стандартных списков документация указывает максимальный limit 1000. Для expand и некоторых fields действуют более строгие ограничения, обычно limit не более 100.

Что делать при HTTP 429?

Прочитать заголовки Retry-After и rate limit, приостановить поток, применить экспоненциальную задержку с jitter и повторить ограниченное число раз.

Можно ли хранить токен API в JavaScript сайта?

Нет. Токен дает доступ к данным аккаунта и должен храниться только на сервере или в защищенном хранилище секретов.

Источники и дата проверки

Фактическая часть проверена 09.08.2026 по официальным материалам МойСклад.

Нужно настроить этот сценарий в вашем МойСклад?

Разберем текущие процессы, найдем риск ошибок и предложим понятный план внедрения.

разработка интеграций МойСклад по API · интеграции МойСклад