API MTP Fulfillment працює на двох базових URL: основний (замовлення, склад, товари) і v2 (заявки на приймання). Всі запити — POST, body у JSON, автентифікація через поле ApiKey в тілі запиту.
1
Отримайте ApiKey
Напишіть вашому менеджеру або використайте метод GetToken з обліковими даними. Ключ діє до відкликання.
Викличте AddOrder з тестовими даними. Ми повернемо ID замовлення та статус. В пісочниці нижче можна спробувати без коду.
4
Налаштуйте webhook статусів
Підпишіться на ReportStatusOrder, щоб отримувати зміни статусів (новий → зібраний → відправлений → доставлений).
02
Автентифікація
API використовує простий ApiKey у тілі кожного запиту. Не у заголовку — саме у JSON body як поле ApiKey. Такий дизайн історично склався під 1С-інтеграції і зберігається для сумісності.
Безпека: зберігайте ApiKey у серверному середовищі — ніколи у JS браузера. Ротуйте ключі раз на 90 днів. Для тестів попросіть менеджера окремий stage-ключ.
03
Групи ендпоінтів
API згруповано за доменними моделями. Нижче — огляд; повний список параметрів і відповідей у OpenAPI специфікації.
Auth 1 метод
GetToken — отримати ApiKey по логіну/паролю
Orders 6 методів
AddOrder — створити замовлення клієнту
EditOrder — редагувати до моменту збору
CancelOrder — скасувати замовлення
ReportStatusOrder — список змін статусів за період
getStatusOrder — поточний статус одного замовлення
ListOrder — реєстр замовлень
Products 1 метод
AddProduct — додати SKU у каталог
Inventory 2 методи
ReportSklad — залишки на складі
ReportMoveProduct — рухи товарів за період
Delivery 3 методи (v2)
ListDeliveryRequest — список заявок на приймання
AddDeliveryRequest — нова заявка на приймання
ReportDeliveryRequest — звіт по заявках
Returns 1 метод
ListReturnOrder — реєстр повернень
Reference 4 методи
getCities — довідник міст Нової Пошти
getWarehouses — відділення у місті
getStreet — вулиці для адресної доставки
senderDetails — реквізити відправника
04
Приклади коду
Нижче — готові сніпети створення замовлення. Підставте свій ApiKey, адаптуйте поля під ваш магазин.
import os, requests
r = requests.post(
'https://fulfillment.in.ua:34443/MTPGroupFulfillment/hs/api/AddOrder',
json={
'ApiKey': os.environ['MTP_API_KEY'],
'OrderNumber': order['id'],
'Recipient': {'Name': order['name'], 'Phone': order['phone']},
'Delivery': {'Carrier': 'NovaPoshta', 'City': order['city'], 'Warehouse': order['branch']},
'Items': [{'SKU': i['sku'], 'Qty': i['qty'], 'Price': i['price']} for i in order['items']]
}
)
r.raise_for_status()
05
Інтерактивна пісочниця
Swagger UI нижче зчитує наш OpenAPI 3.1 файл і дозволяє викликати будь-який метод прямо зі сторінки. Для бойових викликів — підставте свій ApiKey у тіло запиту. Без ключа працюють тільки довідкові методи (getCities, getWarehouses).
06
Помилки та обмеження
API повертає HTTP 200 навіть для бізнес-помилок — статус операції передається у полі Result тіла відповіді. Мережеві помилки (400/401/500) означають проблему з форматом запиту або авторизацією.
Код Result
Значення
Дія
0
OK
Операція успішна
1
Auth failed
Перевірте ApiKey
2
Validation error
Подивіться поле Message
3
Not found
Ресурс (замовлення, SKU) не існує
9
Internal
Напишіть у підтримку з ID запиту
Rate limits: 60 запитів/хвилина на ApiKey. Для вивантажень звітів (ReportSklad, ReportMoveProduct) — не частіше ніж 1 раз на хвилину. Перевищення ліміту дає HTTP 429.
07
FAQ для розробників
Чи є sandbox-середовище?
Так. Менеджер видає окремий stage-ApiKey, дані з нього не потрапляють на виробничий склад. Той самий URL, інший ключ.
Як підписатися на webhook зміни статусу?
Напишіть URL у карточку вашої інтеграції — наш сервер буде POST-ити JSON на нього при кожній зміні статусу. Ретраї 3 рази з експоненційним бекофом.
Чи підтримуєте GraphQL?
Ні, тільки REST. GraphQL не в roadmap — 18 методів не виправдовують накладні витрати.
Чи є офіційний SDK?
Поки ні. Бібліотеки для Node.js і PHP — у roadmap на 2026 Q3. Поточний обхід — ваш власний HTTP-клієнт.
Як інтегрувати з Prom.ua / Rozetka / Horoshop?
Horoshop має готовий модуль — запитайте менеджера. Для Prom/Rozetka — пишіть свій connector поверх нашого API; типово тиждень роботи одного розробника.
Чи підтримуєте масові операції (batch)?
Частково — AddOrder приймає масив замовлень в одному запиті до 100 шт. Для більших обсягів — черга на вашій стороні з rate-limit контролем.