Импорт цен и остатков

Цены и остатки загружаются батчами — массивом до 1000 элементов за запрос. Обработка асинхронная: запрос сразу принимается, в ответе возвращается task_id, а сама загрузка выполняется в фоне.

Товары и склады сопоставляются по внешним идентификаторам (product_external_id, store_external_id) — тем, что заданы на стороне вашей учётной системы. Передавать внутренние id магазина не нужно.

Импорт цен

POST /api/merchant-service/import/prices

Тело — массив элементов:

BASH
curl -X POST https://admin.mobiusapp.ru/api/merchant-service/import/prices \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '[ { "product_external_id": "SKU-100", "store_external_id": "MSK-1", "price": 1990, "currency": "RUB" }, { "product_external_id": "SKU-101", "store_external_id": "MSK-1", "price": 2490, "currency": "RUB", "discount_price": 1990, "discount_from_date": "2026-06-01T00:00:00Z", "discount_to_date": "2026-06-30T23:59:59Z" } ]'

Поля элемента цены

Поле Тип Обяз. Описание
product_external_id string да Внешний id товара (до 255 символов).
store_external_id string да Внешний id склада (до 255 символов).
price number да Цена, не меньше 0.
currency string да Код валюты (см. Валюты).
discount_price number | null нет Цена со скидкой, не меньше 0.
discount_from_date datetime | null нет Начало действия скидки (ISO-8601).
discount_to_date datetime | null нет Конец действия скидки (ISO-8601).

Импорт остатков

POST /api/merchant-service/import/stocks

BASH
curl -X POST https://admin.mobiusapp.ru/api/merchant-service/import/stocks \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '[ { "product_external_id": "SKU-100", "store_external_id": "MSK-1", "amount": 12 }, { "product_external_id": "SKU-101", "store_external_id": "MSK-1", "amount": 0 } ]'

Поля элемента остатка

Поле Тип Обяз. Описание
product_external_id string да Внешний id товара (до 255 символов).
store_external_id string да Внешний id склада (до 255 символов).
amount number да Остаток, не меньше 0.

Ответ

Оба метода отвечают одинаково — задача принята в обработку:

JSON
{ "task_id": "imp_7f3a9c12", "status": "queued", "items_count": 2, "processed_at": "2026-06-21T10:15:00Z" }
Поле Описание
task_id Идентификатор задачи импорта (для ваших логов и поддержки).
status Состояние постановки — queued.
items_count Сколько элементов принято в обработку.
processed_at Момент приёма запроса.

Ответ означает, что батч принят, а не что он уже применён. Результаты появляются в магазине по мере фоновой обработки.

Валюты

Допустимые значения currency:

RUB, USD, EUR, BYN, KZT, UAH, AMD, AZN, KGS, MDL, TJS, TMT, UZS, AED.

Ограничения и рекомендации

  • Не больше 1000 элементов в одном запросе. Большие выгрузки разбивайте на батчи.
  • Один товар на разных складах — это разные элементы (отличаются store_external_id).
  • Перед первой загрузкой убедитесь, что товары и склады заведены в магазине с теми же внешними id, что вы передаёте.

Ошибки

Статус Когда
403 Нет валидного токена.
422 Ошибка валидации (формат) или бизнес-ошибка (нет активного магазина).

При ошибке валидации поле messages указывает на проблемный элемент по индексу: ключ 0.price — поле price первого элемента массива. Подробнее — в разделе Ошибки, лимиты и пагинация.

Связанные разделы

Обновлено 10.07.2026 09:36
Помогла ли статья?