Импорт цен и остатков
Цены и остатки загружаются батчами — массивом до 1000 элементов за запрос.
Обработка асинхронная: запрос сразу принимается, в ответе возвращается task_id,
а сама загрузка выполняется в фоне.
Товары и склады сопоставляются по внешним идентификаторам
(product_external_id, store_external_id) — тем, что заданы на стороне вашей
учётной системы. Передавать внутренние id магазина не нужно.
Импорт цен
POST /api/merchant-service/import/prices
Тело — массив элементов:
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
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. |
Ответ
Оба метода отвечают одинаково — задача принята в обработку:
{
"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 первого элемента массива. Подробнее — в разделе
Ошибки, лимиты и пагинация.
Связанные разделы
- Заказы
- Ошибки, лимиты и пагинация
- OpenAPI документация — схемы
PriceImportItemиStockImportItem.