DropMerch

Developers

Partner API

Создавайте заказы на печать из своего магазина или CRM. Ключ выпускается в кабинете партнёра — один активный ключ на аккаунт.

Базовый URL живой. Аутентификация — Bearer-ключ из кабинета партнёра.

Базовый URL

https://dropmerch.ru/api/v1

JSON, UTF-8. Деньги — в копейках (integer).

Аутентификация

Передавайте ключ в заголовке Authorization.

Пример заголовка

Authorization: Bearer dm_live_…

Ключ выпускается в кабинете партнёра на странице «API».

Ошибки

HTTPcodeКогда
401unauthorizedнет или невалидный токен
403partner_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Профиль и баланс

Возвращает данные партнёра и текущий баланс.

Пример запроса

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Список заказов

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}Детали заказа

Карточка заказа со всеми позициями.

Пример запроса

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Создать заказ

Создаёт заказ (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"
  }
}

Ошибки

HTTPcodeКогда
400product_not_readyтовар ещё не одобрен или без цены
400variant_mismatchцвет/размер не подходят к товару
409insufficient_stockнет нужного размера на складе
402insufficient_balanceне хватает денег на балансе
POST
/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"
  }
}

Ошибки

HTTPcodeКогда
404not_foundзаказ не найден или чужой
409cancel_not_allowedпечать уже началась