Авторизация
2 эндпоинтов/api/access/meGet current API user
Профиль текущего пользователя: id, email, имя, права доступа. Стандартный способ проверить сессию и подгрузить данные для UI.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/access/meОтвет 200
{
"email": "string",
"telegramId": 0,
"telegramUsername": "string",
"bybitUid": "string",
"firstName": "string",
"lastName": "string",
"isActive": false,
"isSuper": false,
"isMfaEnabled": false,
"wholesaleTier": "tier_1",
"wholesaleTierTrialExpiresAt": "2026-05-14T10:30:00Z",
"referralCode": "string",
"referralPercentage": "string"
}/api/access/me/balances/Get current API user balances
Балансы текущего пользователя в разных валютах (RUB, USD, USDT). Нужен для дашборда и проверки доступности оплаты с баланса перед созданием заказа.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/access/me/balances/Ответ 200
[
{
"currency": "rub",
"available": "string",
"reserved": "string",
"pending": "string"
}
]Каталог
8 эндпоинтов/api/categories/List categories
Полный список товарных категорий: игры, подписки, eSIM, виртуальные карты и т.д. Используйте для построения главной страницы каталога или категорийного меню.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
parentId | query | string | null | нет |
withStockOnly | query | boolean | нет |
tag | query | string | null | нет |
limit | query | integer | нет |
cursor | query | string | null | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/categories/?parentId=<parentId?>&withStockOnly=<withStockOnly?>&tag=<tag?>&limit=<limit?>&cursor=<cursor?>Ответ 200
{
"items": [
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"name": "name",
"slug": "slug",
"description": "string",
"bestOfferPrice": "string",
"attributes": {},
"attributeDefinitions": [
{
"name": null,
"type": null,
"description": null,
"values": null
}
],
"tags": [
"string"
],
"parentId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"hasProducts": false,
"inStockCount": 0,
"updatedAt": "2026-05-14T10:30:00Z"
}
],
"limit": 0,
"nextCursor": "string"
}/api/categories/treeGet category tree
Returns visible categories nested under `parentId` (or the root categories when omitted), `depth` levels down: `depth=1` is the direct children (the roots) with empty `children`, `depth=2` adds their children, and so on. Nodes are compact — name, image paths, stock and best price, no descriptions or attributes — and ordered by name at every level. A tree larger than the configured node cap is rejected: lower `depth` or pick a narrower parent.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
parentId | query | string | null | нет |
depth | query | integer | нет |
withStockOnly | query | boolean | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/categories/tree?parentId=<parentId?>&depth=<depth?>&withStockOnly=<withStockOnly?>Ответ 200
{
"items": [
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"slug": "slug",
"name": "name",
"parentId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"hasProducts": false,
"inStockCount": 0,
"tags": [
"string"
],
"bestOfferPrice": "string",
"updatedAt": "2026-05-14T10:30:00Z",
"imagePath": "string",
"thumbnailPath": "string",
"children": [
{
"id": null,
"slug": null,
"name": null,
"parentId": null,
"hasProducts": null,
"inStockCount": null,
"tags": null,
"bestOfferPrice": null,
"updatedAt": null,
"imagePath": null,
"thumbnailPath": null,
"children": null
}
]
}
]
}/api/categories/{category_id_or_slug}Get category
Детальная информация о категории: название, описание, атрибуты, ссылки на родителя, теги. Поддерживает как UUID, так и человекочитаемый slug.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
category_id_or_slug | path | string | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/categories/:category_id_or_slugОтвет 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"name": "name",
"slug": "slug",
"description": "string",
"bestOfferPrice": "string",
"attributes": {},
"attributeDefinitions": [
{
"name": "name",
"type": "bool",
"description": "description",
"values": [
{
"value": null,
"description": null
}
]
}
],
"tags": [
"string"
],
"parentId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"hasProducts": false,
"inStockCount": 0,
"updatedAt": "2026-05-14T10:30:00Z",
"faqs": [
{
"question": "question",
"answer": "answer"
}
]
}/api/products/List products
Листинг товаров с фильтрами по категории, цене и наличию. Основной эндпоинт для каталожной выдачи с пагинацией и сортировкой.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
categoryId | query | string | null | нет |
includeDescendants | query | boolean | нет |
cursor | query | string | null | нет |
withStockOnly | query | boolean | нет |
paymentProvider | query | PaymentProvider | null | нет |
limit | query | integer | нет |
offset | query | integer | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/products/?categoryId=<categoryId?>&includeDescendants=<includeDescendants?>&cursor=<cursor?>&withStockOnly=<withStockOnly?>&paymentProvider=<paymentProvider?>&limit=<limit?>&offset=<offset?>Ответ 200
{
"items": [
{
"id": "id",
"slug": "slug",
"categoryId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"price": "string",
"storefrontPrice": "string",
"currency": "rub",
"quantity": 0,
"orderMinQuantity": 0,
"orderMaxQuantity": 0,
"updatedAt": "2026-05-14T10:30:00Z",
"stockChangedAt": "2026-05-14T10:30:00Z",
"name": "name",
"description": "string",
"attributes": {},
"isService": false,
"deliveryType": "code",
"requiredNoteFields": [
"string"
],
"noteFieldOptions": {},
"noteFieldTypes": {},
"userGuide": "string"
}
],
"total": 0,
"limit": 0,
"offset": 0,
"nextCursor": "string"
}/api/products/changesProduct stock and price changes
Products whose stock, price, category or visibility changed after `since` (or the previous `nextCursor`), oldest first; a product that went hidden comes back once with `quantity` 0. Overlap `since` by a minute.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
since | query | string (date-time) | null | нет |
paymentProvider | query | PaymentProvider | null | нет |
limit | query | integer | нет |
cursor | query | string | null | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/products/changes?since=<since?>&paymentProvider=<paymentProvider?>&limit=<limit?>&cursor=<cursor?>Ответ 200
{
"items": [
{
"id": "id",
"slug": "slug",
"categoryId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"price": "string",
"storefrontPrice": "string",
"currency": "rub",
"quantity": 0,
"orderMinQuantity": 0,
"orderMaxQuantity": 0,
"updatedAt": "2026-05-14T10:30:00Z",
"stockChangedAt": "2026-05-14T10:30:00Z"
}
],
"limit": 0,
"nextCursor": "string"
}/api/products/stockWalk product stock and prices
Stock and price of every visible product, catalog-wide or under `categoryId`; follow `nextCursor`. Prices and stock change every few minutes at most.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
categoryId | query | string | null | нет |
withStockOnly | query | boolean | нет |
paymentProvider | query | PaymentProvider | null | нет |
limit | query | integer | нет |
cursor | query | string | null | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/products/stock?categoryId=<categoryId?>&withStockOnly=<withStockOnly?>&paymentProvider=<paymentProvider?>&limit=<limit?>&cursor=<cursor?>Ответ 200
{
"items": [
{
"id": "id",
"slug": "slug",
"categoryId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"price": "string",
"storefrontPrice": "string",
"currency": "rub",
"quantity": 0,
"orderMinQuantity": 0,
"orderMaxQuantity": 0,
"updatedAt": "2026-05-14T10:30:00Z",
"stockChangedAt": "2026-05-14T10:30:00Z"
}
],
"limit": 0,
"nextCursor": "string"
}/api/products/searchSearch products
Поиск товаров по подстроке в названии и описании. Возвращает ранжированный список — удобно для строки поиска в шапке или подсказок при наборе.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
query | query | string | да |
categoryId | query | string | null | нет |
withStockOnly | query | boolean | нет |
paymentProvider | query | PaymentProvider | null | нет |
limit | query | integer | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/products/search?query=<query>&categoryId=<categoryId?>&withStockOnly=<withStockOnly?>&paymentProvider=<paymentProvider?>&limit=<limit?>Ответ 200
[
{
"id": "id",
"slug": "slug",
"categoryId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"price": "string",
"storefrontPrice": "string",
"currency": "rub",
"quantity": 0,
"orderMinQuantity": 0,
"orderMaxQuantity": 0,
"updatedAt": "2026-05-14T10:30:00Z",
"stockChangedAt": "2026-05-14T10:30:00Z",
"name": "name",
"description": "string",
"attributes": {},
"isService": false,
"deliveryType": "code",
"requiredNoteFields": [
"string"
],
"noteFieldOptions": {},
"noteFieldTypes": {},
"userGuide": "string"
}
]/api/products/{product_id_or_slug}Get product
Детальная карточка товара: характеристики, варианты офферов (номиналы, регионы), цены, остатки на складе. Запросите перед открытием формы заказа.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
product_id_or_slug | path | string | да |
paymentProvider | query | PaymentProvider | null | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/products/:product_id_or_slug?paymentProvider=<paymentProvider?>Ответ 200
{
"id": "id",
"slug": "slug",
"categoryId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"price": "string",
"storefrontPrice": "string",
"currency": "rub",
"quantity": 0,
"orderMinQuantity": 0,
"orderMaxQuantity": 0,
"updatedAt": "2026-05-14T10:30:00Z",
"stockChangedAt": "2026-05-14T10:30:00Z",
"name": "name",
"description": "string",
"attributes": {},
"isService": false,
"deliveryType": "code",
"requiredNoteFields": [
"string"
],
"noteFieldOptions": {},
"noteFieldTypes": {},
"userGuide": "string"
}topups
9 эндпоинтов/api/topups/rates/{to}Get topup exchange rates
Returns exchange rates for supported topup currencies expressed in the requested currency.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
to | path | Currency | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/topups/rates/:toОтвет 200
{
"to": "rub",
"rates": [
{
"from": "rub",
"to": "rub",
"rate": "string",
"source": "source"
}
]
}/api/topups/infoGet topup methods info
Returns the available topup methods with the amount limits (per balance currency) enforced when creating a topup, so clients can validate amounts against the backend configuration instead of hardcoding it.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/topups/infoОтвет 200
{
"crypto": {
"enabled": false,
"limits": {}
},
"fiat": {
"enabled": false,
"limits": {},
"providers": [
"yookassa"
]
}
}/api/topups/crypto/chains/List crypto chains & assets
Lists the crypto chains and assets currently enabled for top-ups (e.g. TON, TRON, USDT). Use the returned `chain`/`asset` ids when creating a crypto top-up.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/topups/crypto/chains/Ответ 200
{
"chains": [
{
"id": "id",
"enabled": false,
"assets": [
{
"id": null,
"symbol": null,
"decimals": null,
"isStablecoin": null,
"tokenAddress": null
}
],
"minConfirmations": 0
}
]
}/api/topups/crypto/List crypto top-ups
Lists the latest crypto top-ups owned by the authenticated user.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
limit | query | integer | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/topups/crypto/?limit=<limit?>Ответ 200
[
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"paymentId": "string",
"status": "pending",
"balanceCurrency": "rub",
"quoteAmount": "string",
"rate": "string",
"chain": "bitcoin",
"asset": "asset",
"address": "address",
"tokenAddress": "string",
"amountToSend": "string",
"expiresAt": "2026-05-14T10:30:00Z",
"txPayload": {
"kind": "kind",
"uri": null,
"evmCall": null
}
}
]/api/topups/crypto/Create crypto top-up
Creates a crypto top-up of `quote_amount` in the balance currency (RUB/USD), paid on-chain with the chosen `chain`+`asset`. The exchange rate is **locked at creation**; the response returns a deposit `address` and the exact `amount_to_send` (and an optional wallet `tx_payload`). After the user sends the funds, the crypto-payments service confirms the transfer and the balance is credited with `quote_amount` automatically. The quote expires at `expires_at`.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
Тело запроса
cURL
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
-H "Content-Type: application/json" \
https://api.marix.cc/api/topups/crypto/ \
-d '{
"chain": "bitcoin",
"asset": "btc",
"balanceCurrency": "rub",
"quoteAmount": 0,
"withTxPayload": false
}'Ответ 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"paymentId": "string",
"status": "pending",
"balanceCurrency": "rub",
"quoteAmount": "string",
"rate": "string",
"chain": "bitcoin",
"asset": "asset",
"address": "address",
"tokenAddress": "string",
"amountToSend": "string",
"expiresAt": "2026-05-14T10:30:00Z",
"txPayload": {
"kind": "kind",
"uri": "string",
"evmCall": {
"chainId": null,
"to": null,
"value": null,
"data": null
}
}
}/api/topups/crypto/{topup_id}Get crypto top-up
Returns one crypto top-up owned by the authenticated user.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
topup_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/topups/crypto/:topup_idОтвет 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"paymentId": "string",
"status": "pending",
"balanceCurrency": "rub",
"quoteAmount": "string",
"rate": "string",
"chain": "bitcoin",
"asset": "asset",
"address": "address",
"tokenAddress": "string",
"amountToSend": "string",
"expiresAt": "2026-05-14T10:30:00Z",
"txPayload": {
"kind": "kind",
"uri": "string",
"evmCall": {
"chainId": null,
"to": null,
"value": null,
"data": null
}
}
}/api/topups/fiat/List fiat top-ups
Lists the latest fiat (Pally/TBank/Enot) top-ups owned by the authenticated user.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
limit | query | integer | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/topups/fiat/?limit=<limit?>Ответ 200
[
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"paymentId": "string",
"status": "pending",
"balanceCurrency": "rub",
"quoteAmount": "string",
"rate": "string",
"provider": "yookassa",
"paymentCurrency": "rub",
"paymentAmount": "string",
"confirmationUrl": "string",
"expiresAt": "2026-05-14T10:30:00Z"
}
]/api/topups/fiat/Create fiat top-up (Pally / TBank / Enot)
Creates a balance top-up paid through a regular fiat provider (Pally, TBank or Enot). `quote_amount` is the amount to credit in the balance currency (RUB/USD). The user is charged in `payment_currency` (defaults to the balance currency; otherwise converted via the rate service) with the configured fiat top-up markup included in `payment_amount`. The response returns a `confirmation_url` (payment page); the balance is credited with `quote_amount` once the provider confirms the payment.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
Тело запроса
cURL
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
-H "Content-Type: application/json" \
https://api.marix.cc/api/topups/fiat/ \
-d '{
"paymentProvider": "yookassa",
"balanceCurrency": "rub",
"quoteAmount": 0,
"paymentCurrency": "rub",
"returnUrl": "https://marix.cc"
}'Ответ 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"paymentId": "string",
"status": "pending",
"balanceCurrency": "rub",
"quoteAmount": "string",
"rate": "string",
"provider": "yookassa",
"paymentCurrency": "rub",
"paymentAmount": "string",
"confirmationUrl": "string",
"expiresAt": "2026-05-14T10:30:00Z"
}/api/topups/fiat/{topup_id}Get fiat top-up
Returns one fiat (Pally/TBank/Enot) top-up owned by the authenticated user.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
topup_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/topups/fiat/:topup_idОтвет 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"paymentId": "string",
"status": "pending",
"balanceCurrency": "rub",
"quoteAmount": "string",
"rate": "string",
"provider": "yookassa",
"paymentCurrency": "rub",
"paymentAmount": "string",
"confirmationUrl": "string",
"expiresAt": "2026-05-14T10:30:00Z"
}orders
8 эндпоинтов/api/orders/List Orders
Список заказов текущего пользователя или партнёра. Поддерживает фильтры по статусу, периоду, способу оплаты, методу выдачи.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
statuses | query | CommaSeparatedValue_OrderStatus_ | null | нет |
itemId | query | string | null | нет |
idempotencyKey | query | string | null | нет |
createdAfter | query | UtcDatetime | null | нет |
createdBefore | query | UtcDatetime | null | нет |
limit | query | integer | нет |
offset | query | integer | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/orders/?statuses=<statuses?>&itemId=<itemId?>&idempotencyKey=<idempotencyKey?>&createdAfter=<createdAfter?>&createdBefore=<createdBefore?>&limit=<limit?>&offset=<offset?>Ответ 200
{
"items": [
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"idempotencyKey": "string",
"price": "string",
"currency": "rub",
"refundedAmount": "string",
"isMock": false,
"status": "active",
"cancelReason": "payment_failure",
"createdAt": "2026-05-14T10:30:00Z",
"items": [
{
"id": null,
"index": null,
"product": null,
"quantity": null,
"note": null,
"externalId": null,
"error": null,
"fulfillmentStatus": null
}
],
"paymentExpiresAt": "2026-05-14T10:30:00Z"
}
],
"limit": 0,
"offset": 0,
"total": 0
}/api/orders/Create an Order
Создание нового заказа. Принимает productId, offerId и параметры выдачи (email, никнейм игрока, регион). Возвращает orderId для последующей оплаты или активации.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
Тело запроса
cURL
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
-H "Content-Type: application/json" \
https://api.marix.cc/api/orders/ \
-d '{
"items": [
{
"note": {},
"quantity": 0,
"itemId": "itemid",
"totalPrice": null
}
],
"idempotencyKey": "string",
"isMock": false,
"contactEmail": "partner@example.com",
"paymentProvider": "yookassa"
}'Ответ 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"idempotencyKey": "string",
"price": "string",
"currency": "rub",
"refundedAmount": "string",
"isMock": false,
"status": "active",
"cancelReason": "payment_failure",
"createdAt": "2026-05-14T10:30:00Z",
"items": [
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"index": 0,
"product": {
"id": "id",
"name": "name",
"attributes": {},
"isService": false,
"deliveryType": "code",
"categoryId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"userGuide": null
},
"quantity": 0,
"note": {},
"fulfillmentStatus": "active",
"externalData": [
"string"
],
"externalId": "string",
"error": "string"
}
],
"referralUserId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"discountAmount": "string",
"paymentProvider": "yookassa",
"paymentPayload": "string",
"contactEmail": "string",
"paymentExpiresAt": "2026-05-14T10:30:00Z"
}/api/orders/{order_id}/payPay for the Order
Запуск повторной оплаты ранее созданного, но неоплаченного заказа. Возвращает свежую ссылку на платёжную страницу — полезно, если первая попытка провалилась.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
order_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
Тело запроса
cURL
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
-H "Content-Type: application/json" \
https://api.marix.cc/api/orders/:order_id/pay \
-d '{
"paymentReturnUrl": "https://marix.cc",
"chain": "bitcoin",
"asset": "btc",
"withTxPayload": false
}'Ответ 200
{
"id": "id",
"confirmationToken": "string",
"confirmationUrl": "string",
"returnUrl": "string",
"paymentPayload": "string",
"crypto": {
"chain": "bitcoin",
"asset": "asset",
"address": "address",
"tokenAddress": "string",
"amountToSend": "string",
"expiresAt": "2026-05-14T10:30:00Z",
"txPayload": {
"kind": null,
"uri": null,
"evmCall": null
}
}
}/api/orders/{order_id}/client-codeSubmit a confirmation code
Relays the confirmation code the buyer received to the supplier of an item parked in `action_required`.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
order_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
Тело запроса
cURL
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
-H "Content-Type: application/json" \
https://api.marix.cc/api/orders/:order_id/client-code \
-d '{
"itemId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"index": 0,
"clientCode": "clientcode"
}'Ответ 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"idempotencyKey": "string",
"price": "string",
"currency": "rub",
"refundedAmount": "string",
"isMock": false,
"status": "active",
"cancelReason": "payment_failure",
"createdAt": "2026-05-14T10:30:00Z",
"items": [
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"index": 0,
"product": {
"id": "id",
"name": "name",
"attributes": {},
"isService": false,
"deliveryType": "code",
"categoryId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"userGuide": null
},
"quantity": 0,
"note": {},
"fulfillmentStatus": "active",
"externalData": [
"string"
],
"externalId": "string",
"error": "string"
}
],
"referralUserId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"discountAmount": "string",
"paymentProvider": "yookassa",
"paymentPayload": "string",
"contactEmail": "string",
"paymentExpiresAt": "2026-05-14T10:30:00Z"
}/api/orders/{order_id}/cancelCancel Order
Отмена заказа до момента фулфилмента. После выдачи товара отмена невозможна — потребуется оформление возврата.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
order_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/orders/:order_id/cancelОтвет 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"idempotencyKey": "string",
"price": "string",
"currency": "rub",
"refundedAmount": "string",
"isMock": false,
"status": "active",
"cancelReason": "payment_failure",
"createdAt": "2026-05-14T10:30:00Z",
"items": [
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"index": 0,
"product": {
"id": "id",
"name": "name",
"attributes": {},
"isService": false,
"deliveryType": "code",
"categoryId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"userGuide": null
},
"quantity": 0,
"note": {},
"fulfillmentStatus": "active",
"externalData": [
"string"
],
"externalId": "string",
"error": "string"
}
],
"referralUserId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"discountAmount": "string",
"paymentProvider": "yookassa",
"paymentPayload": "string",
"contactEmail": "string",
"paymentExpiresAt": "2026-05-14T10:30:00Z"
}/api/orders/{order_id}Get the Order
Детальная информация о заказе: статус, payload (коды активации, инструкции), история событий, ссылка на чек.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
order_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/orders/:order_idОтвет 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"idempotencyKey": "string",
"price": "string",
"currency": "rub",
"refundedAmount": "string",
"isMock": false,
"status": "active",
"cancelReason": "payment_failure",
"createdAt": "2026-05-14T10:30:00Z",
"items": [
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"index": 0,
"product": {
"id": "id",
"name": "name",
"attributes": {},
"isService": false,
"deliveryType": "code",
"categoryId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"userGuide": null
},
"quantity": 0,
"note": {},
"fulfillmentStatus": "active",
"externalData": [
"string"
],
"externalId": "string",
"error": "string"
}
],
"referralUserId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"discountAmount": "string",
"paymentProvider": "yookassa",
"paymentPayload": "string",
"contactEmail": "string",
"paymentExpiresAt": "2026-05-14T10:30:00Z"
}/api/steam/check-loginCheck a Steam login
Tells whether a Steam wallet top-up can be ordered for the login: the account exists and the supplier can top it up.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
login | query | string | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/steam/check-login?login=<login>Ответ 200
{
"login": "login",
"isValid": false,
"checkedAt": "2026-05-14T10:30:00Z"
}/api/telegram/check-loginCheck a Telegram username
Tells whether Telegram Stars or Premium can be ordered for the username. Limited to one check a second per caller, so ask once per submitted username, not on every keystroke.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
username | query | string | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/telegram/check-login?username=<username>Ответ 200
{
"username": "username",
"isValid": false,
"checkedAt": "2026-05-14T10:30:00Z"
}banking-cards
8 эндпоинтов/api/banking-cards/List banking cards
Returns the current user's issued banking cards, newest first; pick a card id for top-up orders. Pass `status` to narrow the list (e.g. only `active` cards can be topped up). Cards issued by mock orders are left out unless `isMock` asks for them, and then they are all the list holds.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
status | query | BankingCardStatus | null | нет |
isMock | query | boolean | нет |
limit | query | integer | нет |
offset | query | integer | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/banking-cards/?status=<status?>&isMock=<isMock?>&limit=<limit?>&offset=<offset?>Ответ 200
{
"items": [
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"provider": "caas_2328",
"currency": "usd",
"status": "issuing",
"blockedReason": "fee_unpaid",
"maskedNumber": "string",
"last4": "string",
"expMonth": 0,
"expYear": 0,
"nameOnCard": "string",
"isMock": false,
"createdAt": "2026-05-14T10:30:00Z"
}
],
"limit": 0,
"offset": 0,
"total": 0
}/api/banking-cards/3ds-codes/List live 3-D Secure codes
Returns the one-time confirmation codes issuers sent for any of the current user's cards that have not expired yet, newest first. A code appears here the moment the issuer sends it and disappears at `expiresAt`; pass `cardId` to keep only one card's codes. The response must not be cached. Subscribe a webhook to `banking_card.three_ds_code` to be pushed the same data instead of polling.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
cardId | query | string (uuid) | null | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/banking-cards/3ds-codes/?cardId=<cardId?>Ответ 200
[
{
"id": "id",
"cardId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"last4": "string",
"code": "code",
"merchant": "string",
"amount": "string",
"currency": "string",
"createdAt": "2026-05-14T10:30:00Z",
"expiresAt": "2026-05-14T10:30:00Z"
}
]/api/banking-cards/transactions/List banking card transactions of the account
Returns the operation history of all the current user's cards in one list, newest first
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
from | query | string (date-time) | null | нет |
to | query | string (date-time) | null | нет |
isMock | query | boolean | нет |
limit | query | integer | нет |
offset | query | integer | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/banking-cards/transactions/?from=<from?>&to=<to?>&isMock=<isMock?>&limit=<limit?>&offset=<offset?>Ответ 200
{
"items": [
{
"id": "id",
"cardId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"type": "authorization",
"status": "pending",
"currency": "currency",
"amount": "amount",
"fee": "fee",
"feeCollected": "string",
"description": "string",
"merchantName": "string",
"merchantCountry": "string",
"mcc": "string",
"mccDescription": "string",
"declineReason": "insufficient_funds",
"feeType": "cross_border",
"authorizationCode": "string",
"relatedAuthorizationCode": "string",
"occurredAt": "2026-05-14T10:30:00Z"
}
],
"limit": 0,
"offset": 0,
"total": 0
}/api/banking-cards/{banking_card_id}Get banking card
Returns one of the current user's banking cards.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
banking_card_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/banking-cards/:banking_card_idОтвет 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"provider": "caas_2328",
"currency": "usd",
"status": "issuing",
"blockedReason": "fee_unpaid",
"maskedNumber": "string",
"last4": "string",
"expMonth": 0,
"expYear": 0,
"nameOnCard": "string",
"isMock": false,
"createdAt": "2026-05-14T10:30:00Z"
}/api/banking-cards/{banking_card_id}/credentialsGet banking card credentials
Returns the full card credentials (PAN, CVV, expiry) of the current user's card, fetched live from the issuing provider. Credentials are never stored or logged server-side and the response must not be cached — treat them as shown-once secrets.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
banking_card_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/banking-cards/:banking_card_id/credentialsОтвет 200
{
"cardId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"pan": "pan",
"cvv": "cvv",
"expMonth": 0,
"expYear": 0,
"pinCode": "string",
"threeDsPassword": "string"
}/api/banking-cards/{banking_card_id}/balanceGet banking card balance
Returns the live card balance from the issuing provider.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
banking_card_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/banking-cards/:banking_card_id/balanceОтвет 200
{
"cardId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"currency": "currency",
"available": "available",
"total": "total",
"negative": false
}/api/banking-cards/{banking_card_id}/transactions/Get banking card transactions
Returns the card's operation history from the issuing provider, newest first.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
banking_card_id | path | string (uuid) | да |
from | query | string (date-time) | null | нет |
to | query | string (date-time) | null | нет |
limit | query | integer | нет |
offset | query | integer | нет |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/banking-cards/:banking_card_id/transactions/?from=<from?>&to=<to?>&limit=<limit?>&offset=<offset?>Ответ 200
{
"items": [
{
"id": "id",
"cardId": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"type": "authorization",
"status": "pending",
"currency": "currency",
"amount": "amount",
"fee": "fee",
"feeCollected": "string",
"description": "string",
"merchantName": "string",
"merchantCountry": "string",
"mcc": "string",
"mccDescription": "string",
"declineReason": "insufficient_funds",
"feeType": "cross_border",
"authorizationCode": "string",
"relatedAuthorizationCode": "string",
"occurredAt": "2026-05-14T10:30:00Z"
}
],
"limit": 0,
"offset": 0,
"total": 0
}/api/banking-cards/{banking_card_id}/blockBlock banking card
Permanently blocks one of the current user's cards at the issuing provider. The card cannot be unblocked or topped up afterwards and its remaining balance is not refunded. Only an `active` or `frozen` card can be blocked.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
banking_card_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/banking-cards/:banking_card_id/blockОтвет 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"provider": "caas_2328",
"currency": "usd",
"status": "issuing",
"blockedReason": "fee_unpaid",
"maskedNumber": "string",
"last4": "string",
"expMonth": 0,
"expYear": 0,
"nameOnCard": "string",
"isMock": false,
"createdAt": "2026-05-14T10:30:00Z"
}webhooks
6 эндпоинтов/api/webhooks/List webhooks
Returns the current user's webhook endpoints with the outcome of their latest deliveries.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/webhooks/Ответ 200
[
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"name": "string",
"url": "url",
"events": [
"order.completed"
],
"isActive": false,
"lastDeliveredAt": "2026-05-14T10:30:00Z",
"lastFailedAt": "2026-05-14T10:30:00Z",
"lastError": "string",
"createdAt": "2026-05-14T10:30:00Z"
}
]/api/webhooks/Create webhook
Registers a public https endpoint for the chosen events. The response is the only time the signing secret is shown; rotate it if it is lost. An account holds a limited number of webhooks.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
Тело запроса
cURL
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
-H "Content-Type: application/json" \
https://api.marix.cc/api/webhooks/ \
-d '{
"name": "string",
"url": "url",
"events": [
"order.completed"
]
}'Ответ 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"name": "string",
"url": "url",
"events": [
"order.completed"
],
"isActive": false,
"lastDeliveredAt": "2026-05-14T10:30:00Z",
"lastFailedAt": "2026-05-14T10:30:00Z",
"lastError": "string",
"createdAt": "2026-05-14T10:30:00Z",
"secret": "secret"
}/api/webhooks/{webhook_id}Get webhook
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
webhook_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X GET \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/webhooks/:webhook_idОтвет 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"name": "string",
"url": "url",
"events": [
"order.completed"
],
"isActive": false,
"lastDeliveredAt": "2026-05-14T10:30:00Z",
"lastFailedAt": "2026-05-14T10:30:00Z",
"lastError": "string",
"createdAt": "2026-05-14T10:30:00Z"
}/api/webhooks/{webhook_id}Update webhook
Changes the endpoint, its events or pauses it; omitted fields are left as they are.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
webhook_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
Тело запроса
cURL
curl -X PATCH \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
-H "Content-Type: application/json" \
https://api.marix.cc/api/webhooks/:webhook_id \
-d '{
"name": "string",
"url": "string",
"events": [
"order.completed"
],
"isActive": false
}'Ответ 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"name": "string",
"url": "url",
"events": [
"order.completed"
],
"isActive": false,
"lastDeliveredAt": "2026-05-14T10:30:00Z",
"lastFailedAt": "2026-05-14T10:30:00Z",
"lastError": "string",
"createdAt": "2026-05-14T10:30:00Z"
}/api/webhooks/{webhook_id}Delete webhook
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
webhook_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X DELETE \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/webhooks/:webhook_id/api/webhooks/{webhook_id}/rotate-secretRotate webhook secret
Replaces the signing secret; every delivery from now on is signed with the new one.
Параметры
| Имя | Где | Тип | Обяз. |
|---|---|---|---|
webhook_id | path | string (uuid) | да |
x-language | header | Language | null | нет |
x-currency | header | enum: "rub", "usd" | null | нет |
cURL
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-language: <x-language>" \
-H "x-currency: <x-currency>" \
https://api.marix.cc/api/webhooks/:webhook_id/rotate-secretОтвет 200
{
"id": "019ad428-e9cd-7982-a6fa-0ec0eebce25d",
"secret": "secret"
}Партнёрские интеграции
2 сценарияКак мы интегрируемся с партнёрами
Когда мы подключаем нового партнёра, оплата остаётся на его стороне — клиент платит партнёру, а мы отвечаем только за фулфилмент цифрового товара. Партнёр шлёт нам HTTP-нотификацию с идентификатором продукта и заказом, мы возвращаем товар или отправляем его сами на почту клиента, а затем подтверждаем партнёру, что заказ выполнен.
Под каждого партнёра выделяется индивидуальный slug в URL, общий signing-secret для проверки подписи запроса и согласованный whitelist productId. Ниже — два типовых сценария интеграции; конкретные URL и расширенная спецификация выдаются по запросу.
- Клиент оплачивает заказ у партнёра
- Партнёр шлёт нам POST с
productIdи данными заказа - Мы фулфилим товар: либо сразу в ответе, либо отправкой клиенту по email
- Партнёрполучает ответ «готово» и закрывает у себя заказ
/api/orders/webhooks/{partner}/notificationСценарий 1 — синхронная выдача в ответе
Партнёр шлёт нам нотификацию о новом оплаченном заказе с указанием productId. Мы выдаём товар прямо в HTTP-ответе — код активации, ссылка или payload. Партнёр получает товар внутри своего бэкенда и сам передаёт его покупателю. Подходит, когда у партнёра уже есть свой механизм доставки клиенту.
Запрос
POST https://public-api.foxreload.com/api/orders/webhooks/{partner}/notification
X-Signature: HMAC-SHA256(body, secret)
X-Event-Id: 019ad428-e9cd-7982-a6fa-0ec0eebce25d
Content-Type: application/json
{
"event": "order.paid",
"externalOrderId": "PARTNER-12345",
"productId": "019dbf72-70af-7bd1-b60e-a35d4dbba588",
"qty": 1,
"amount": 4990,
"currency": "RUB"
}Ответ 200
{
"status": "fulfilled",
"orderId": "019dc625-6cc8-7d81-a15c-da225e61b1e0",
"externalOrderId": "PARTNER-12345",
"payload": {
"type": "code",
"value": "ABCD-EFGH-IJKL-MNOP"
},
"fulfilledAt": "2026-05-14T10:30:00Z"
}Когда использовать
- У партнёра есть собственный канал доставки клиенту (письмо, личный кабинет, чат-бот)
- Нужен мгновенный фулфилмент в одном HTTP-цикле — синхронные платежи и кассы
- Партнёр хочет показать товар в своём интерфейсе без редиректа на наш сайт
/api/orders/webhooks/{partner}/notificationСценарий 2 — асинхронная выдача на email клиента
Партнёр присылает нам productId вместе с customerEmail покупателя. Мы сами формируем письмо с товаром (код активации, инструкция, ссылка на скачивание) и отправляем его клиенту. После успешной отправки уведомляем партнёра, что заказ выполнен. Подходит, когда у партнёра нет своего фулфилмента и он хочет переложить выдачу полностью на нашу сторону.
Запрос
POST https://public-api.foxreload.com/api/orders/webhooks/{partner}/notification
X-Signature: HMAC-SHA256(body, secret)
X-Event-Id: 019ad428-e9cd-7982-a6fa-0ec0eebce25d
Content-Type: application/json
{
"event": "order.paid",
"externalOrderId": "PARTNER-67890",
"productId": "019dbf72-70af-7bd1-b60e-a35d4dbba588",
"qty": 1,
"amount": 4990,
"currency": "RUB",
"deliveryMode": "email",
"customerEmail": "buyer@example.com",
"callbackUrl": "https://partner.example.com/orders/PARTNER-67890/callback"
}Немедленный ответ 202
{
"status": "accepted",
"orderId": "019dc625-6cc8-7d81-a15c-da225e61b1e0",
"externalOrderId": "PARTNER-67890",
"estimatedDeliverySeconds": 30
}Callback партнёру после доставки клиенту
POST https://partner.example.com/orders/PARTNER-67890/callback
X-Signature: HMAC-SHA256(body, secret)
Content-Type: application/json
{
"status": "fulfilled",
"orderId": "019dc625-6cc8-7d81-a15c-da225e61b1e0",
"externalOrderId": "PARTNER-67890",
"deliveredTo": "buyer@example.com",
"deliveryMethod": "email",
"fulfilledAt": "2026-05-14T10:30:25Z"
}Когда использовать
- У партнёра нет своей системы доставки цифровых товаров клиенту
- Партнёр продаёт через формы, лендинги, чаты — где есть только email клиента
- Нужна согласованная брендированная коммуникация: письма уходят от нашего домена и с нашим оформлением
- Допустима асинхронность — между оплатой и доставкой могут пройти секунды или минуты
Готовы интегрироваться? Напишите @vany661 — подберём подходящий сценарий, выдадим выделенный URL и signing-secret, поможем настроить тестовые заказы.