Developers
Partner API
Создавайте заказы на печать из своего магазина или CRM. Ключ выпускается в кабинете партнёра — один активный ключ на аккаунт.
Базовый URL
https://dropmerch.ru/api/v1JSON, UTF-8. Деньги — в копейках (integer).
Аутентификация
Передавайте ключ в заголовке Authorization.
Пример заголовка
Authorization: Bearer dm_live_…Ключ выпускается в кабинете партнёра на странице «API».
Ошибки
| HTTP | code | Когда |
|---|---|---|
401 | unauthorized | нет или невалидный токен |
403 | partner_inactive | партнёр отключён |
Формат ответов
Успех
{
"data": { }
}Список
{
"data": [],
"meta": { "page": 1, "pageSize": 20, "total": 0 }
}Ошибка
{
"error": {
"code": "validation_error",
"message": "Описание",
"details": [{ "field": "items.0.quantity", "message": "min 1" }]
}
}Статусы заказа
Через API заказ сразу оплачивается с баланса и уходит в печать.
| Статус | Что значит |
|---|---|
SUBMITTED | оплачен, ждёт печати |
IN_PRODUCTION | печатаем |
SHIPPED | отправлен покупателю |
DELIVERED | доставлен |
CANCELLED | отменён |
Доставка: 350 ₽ (35000 копеек) на весь заказ.
GET/meПрофиль и баланс
/meПрофиль и балансВозвращает данные партнёра и текущий баланс.
Пример запроса
GET https://dropmerch.ru/api/v1/me
Authorization: Bearer dm_live_…Пример ответа · 200
{
"data": {
"id": "clx…",
"name": "Media Wave",
"slug": "media-wave",
"contactEmail": "partner@mediawave.ru",
"balance": 250000,
"isActive": true
}
}GET/ordersСписок заказов
/ordersСписок заказовQuery-параметры: status, page, pageSize.
Пример запроса
GET https://dropmerch.ru/api/v1/orders?status=SUBMITTED&page=1&pageSize=20
Authorization: Bearer dm_live_…Пример ответа · 200
{
"data": [
{
"id": "ord_…",
"orderNumber": "DM-260720-AB12",
"status": "SUBMITTED",
"itemsCount": 2,
"unitsCount": 5,
"goodsAmount": 945000,
"shippingAmount": 35000,
"totalAmount": 980000,
"isCharged": true,
"buyerName": "Иван Иванов",
"shippingCity": "Москва",
"trackingNumber": null,
"createdAt": "2026-07-20T12:00:00.000Z",
"submittedAt": "2026-07-20T12:00:00.000Z"
}
],
"meta": { "page": 1, "pageSize": 20, "total": 1 }
}GET/orders/{id}Детали заказа
/orders/{id}Детали заказаКарточка заказа со всеми позициями.
Пример запроса
GET https://dropmerch.ru/api/v1/orders/ord_…
Authorization: Bearer dm_live_…Пример ответа · 200
{
"data": {
"id": "ord_…",
"orderNumber": "DM-260720-AB12",
"status": "SUBMITTED",
"buyerName": "Иван Иванов",
"buyerEmail": "ivan@example.com",
"buyerPhone": "+79001234567",
"shippingAddress": "ул. Пример, 1",
"shippingCity": "Москва",
"shippingRegion": "Москва",
"shippingZip": "101000",
"shippingCountry": "RU",
"notes": null,
"trackingNumber": null,
"goodsAmount": 945000,
"shippingAmount": 35000,
"totalAmount": 980000,
"isCharged": true,
"items": [
{
"id": "oi_…",
"partnerProductId": "pp_…",
"productVariantId": "var_…",
"customName": "Худи Summer",
"color": "Чёрный",
"size": "L",
"quantity": 3,
"unitPrice": 189000,
"lineTotal": 567000
},
{
"id": "oi_…",
"partnerProductId": "pp_…",
"productVariantId": "var_…",
"customName": "Футболка Logo",
"color": "Белый",
"size": "M",
"quantity": 2,
"unitPrice": 189000,
"lineTotal": 378000
}
],
"createdAt": "2026-07-20T12:00:00.000Z",
"submittedAt": "2026-07-20T12:00:00.000Z"
}
}POST/neworderСоздать заказ
/neworderСоздать заказСоздаёт заказ (1–20 позиций): сразу списывает сумму с баланса и отправляет в печать. Цвет и размер — в каждой позиции.
Пример запроса
POST https://dropmerch.ru/api/v1/neworder
Authorization: Bearer dm_live_…
Content-Type: application/json
{
"buyerName": "Иван Иванов",
"buyerEmail": "ivan@example.com",
"buyerPhone": "+79001234567",
"shippingAddress": "ул. Пример, 1",
"shippingCity": "Москва",
"shippingRegion": "Москва",
"shippingZip": "101000",
"shippingCountry": "RU",
"notes": "Позвонить за час",
"items": [
{
"partnerProductId": "pp_hoodie",
"productVariantId": "var_black_l",
"quantity": 3
},
{
"partnerProductId": "pp_tee",
"productVariantId": "var_white_m",
"quantity": 2
}
]
}Поля
| Поле | Описание |
|---|---|
items[].partnerProductId | ваш одобренный товар |
items[].productVariantId | цвет и размер |
items[].quantity | количество, 1–500 |
buyerName / shipping* | получатель и адрес доставки |
Пример ответа · 201
{
"data": {
"id": "ord_…",
"orderNumber": "DM-260720-AB12",
"status": "SUBMITTED",
"buyerName": "Иван Иванов",
"buyerEmail": "ivan@example.com",
"buyerPhone": "+79001234567",
"shippingAddress": "ул. Пример, 1",
"shippingCity": "Москва",
"shippingRegion": "Москва",
"shippingZip": "101000",
"shippingCountry": "RU",
"notes": null,
"trackingNumber": null,
"goodsAmount": 945000,
"shippingAmount": 35000,
"totalAmount": 980000,
"isCharged": true,
"items": [
{
"id": "oi_…",
"partnerProductId": "pp_…",
"productVariantId": "var_…",
"customName": "Худи Summer",
"color": "Чёрный",
"size": "L",
"quantity": 3,
"unitPrice": 189000,
"lineTotal": 567000
},
{
"id": "oi_…",
"partnerProductId": "pp_…",
"productVariantId": "var_…",
"customName": "Футболка Logo",
"color": "Белый",
"size": "M",
"quantity": 2,
"unitPrice": 189000,
"lineTotal": 378000
}
],
"createdAt": "2026-07-20T12:00:00.000Z",
"submittedAt": "2026-07-20T12:00:00.000Z"
}
}Ошибки
| HTTP | code | Когда |
|---|---|---|
400 | product_not_ready | товар ещё не одобрен или без цены |
400 | variant_mismatch | цвет/размер не подходят к товару |
409 | insufficient_stock | нет нужного размера на складе |
402 | insufficient_balance | не хватает денег на балансе |
POST/orders/{id}/cancelОтменить заказ
/orders/{id}/cancelОтменить заказДоступно, пока заказ в очереди (SUBMITTED). После перевода в печать (IN_PRODUCTION) или дальше — отмена недоступна. Деньги вернутся на баланс.
Пример запроса
POST https://dropmerch.ru/api/v1/orders/ord_…/cancel
Authorization: Bearer dm_live_…Пример ответа · 200
{
"data": {
"id": "ord_…",
"orderNumber": "DM-260720-AB12",
"status": "CANCELLED",
"totalAmount": 980000,
"isCharged": false,
"cancelledAt": "2026-07-20T12:30:00.000Z"
}
}Ошибки
| HTTP | code | Когда |
|---|---|---|
404 | not_found | заказ не найден или чужой |
409 | cancel_not_allowed | печать уже началась |