Замовлення

Список всіх публично доступних методів для взаємодії з API.

POST

Створити замовлення

Нове/order/create
Замінює старіші методи v2

Цей метод API v3 замінює такі методи API v2 (вони ще працюють):

Створити замовлення (чернетку)

Формує ціну за обрані товари на сервері та зберігає її як чернетку протягом 30 хвилин. Гроші не перераховуються, і токен не потрібен.

{"action": "new", "product": "shared",
 "options": {"count": 10, "period": "1m", "traffic": 100, "countries": {"UA": 5, "DE": 5}},
 "client": {"total": "9.00", "currency": "USD"}}

Примітки

  • action: new — купівля продукту, topup — поповнення балансу (options: {amount, currency}).
  • options використовують ключі каталогу: count, period (1w, 2w, 1m, 1y), traffic (ГБ), countries, geo_service, ip_score, unlimited_ips.
  • Надішліть client.total із розрахованою вами ціною: client_check.matched вказує, чи дорівнює вона ціні на сервері.
  • Якщо значення параметра виходить за межі дозволеного діапазону, повертається код статусу 422 option_out_of_range із зазначенням допустимого діапазону.

Метод запита

POSThttps://api.stableproxy.com/v3/order/create

Параметри запиту

ІдентифікаторПравилаПриклад
actionrequiredstringnew
productНе обов'язковоnullablestringshared
optionsНе обов'язковоnullablearray[]
clientНе обов'язковоnullablearray[]
client.totalНе обов'язковоrequired_with:clientnumeric0
client.currencyНе обов'язковоnullablestringsize:3"USD"
client.catalog_versionНе обов'язковоnullablestring0

Приклади коду

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/order/create", {
3 method: "POST",
4 headers: {
5 "Content-Type": "application/json"
6 },
7 body: JSON.stringify({
8 "action": "new",
9 "product": "shared",
10 "options": "[]",
11 "client": "[]",
12 "client.total": "0",
13 "client.currency": "\"USD\"",
14 "client.catalog_version": 0
15 })
16});
17const data = await response.json();

Приклади відповідей

Draft201application/json
{
  "data": {
    "order": {
      "id": "990dd34a-0165-4641-ab9d-94bea1007fe0",
      "action": "new",
      "product": "shared",
      "status": "draft",
      "expires_at": "2026-10-06T15:46:32Z",
      "options": {
        "count": 10,
        "period": "1m",
        "traffic": 100,
        "countries": [],
        "geo_service": "overall",
        "ip_score": 0,
        "unlimited_ips": false
      },
      "price": {
        "currency": "USD",
        "total": "1.96",
        "total_usd": "1.96",
        "lines": [
          {
            "key": "ips",
            "amount_usd": "0.80"
          },
          {
            "key": "traffic",
            "amount_usd": "1.00"
          }
        ],
        "unit": {
          "ip": "0.08",
          "one_gb": null
        },
        "adjustments": [
          {
            "key": "sale",
            "amount": "0.00"
          }
        ]
      },
      "client_check": {
        "matched": false,
        "client_total": "1.20",
        "difference": "0.76",
        "catalog_stale": true
      }
    }
  },
  "meta": []
}
Option out of range422application/json
{
  "error": {
    "code": "option_out_of_range",
    "message": "An option is outside the allowed range.",
    "details": {
      "count": {
        "min": 1,
        "max": 2000
      }
    }
  }
}
POST

Підтвердити й оплатити замовлення

Нове/order/confirm/{id}
Замінює старіші методи v2

Цей метод API v3 замінює такі методи API v2 (вони ще працюють):

Підтвердити та оплатити

Оплачує платіж із залишку на рахунку або передає платіж до браузера користувача.

Примітки

  • Надішліть заголовок Idempotency-Key (один унікальний рядок на кожну покупку). Повторне надсилання повертає першу відповідь; використання його для іншого замовлення дає код 409.

  • 200 paid — оплачено з балансу; package_id — це новий пакет.

  • 202 awaiting_payment — на балансі недостатньо коштів: перенаправте користувача на checkout.url.

  • 202 awaiting_approval — покупка, здійснена через додаток (OAuth), очікує на підтвердження користувача: покажіть йому approval.url. Додатки, яким користувач дозволив здійснювати покупки, автоматично пропускають цей крок у межах свого щоденного ліміту.

  • Далі слід виконати дію Отримати замовлення або Очікувати на замовлення.

  • Потрібен токен із cart.purchase (topup.upload для поповнення рахунку).

"data": {

"id": "990dd34a-0165-4641-ab9d-94bea1007fe0",

"status": "paid",

"package_id": 14800

},

"meta": {}

}

"data": {

"id": "990dd34a-0165-4641-ab9d-94bea1007fe0",

"status": "awaiting_payment",

"checkout": {

"url": "https://app.stableproxy.com/pay/990dd34a-0165-4641-ab9d-94bea1007fe0",

"due": "7.80",

"currency": "USD",

"expires_at": "2026-10-06T16:16:32Z"

}

},

"meta": {}

}

"data": {

"id": "990dd34a-0165-4641-ab9d-94bea1007fe0",

"status": "awaiting_approval",

"approval": {

"url": "https://app.stableproxy.com/order/approve/990dd34a-0165-4641-ab9d-94bea1007fe0?t=Xk2…",

"reason": "confirmation_required",

"expires_at": "2026-10-06T16:16:32Z",

"limit": null,

"spent_today": "0.00",

"order_total": "9.00",

"currency": "USD"

}

},

"meta": {}

}

"error": {

"code": "idempotency_key_required",

"message": "Надішліть заголовок Idempotency-Key.",

"details": {}

}

}

Для цього метода - потрібна авторизація!
Ви можете використовувати власний API ключ, котрий можна отримати в панелі керування.

Метод запита

POSThttps://api.stableproxy.com/v3/order/confirm/{id}

Параметри запиту

ІдентифікаторПравилаПриклад
pay_withНе обов'язковоnullablestringbalance
id1requiredstring990dd34a-0165-4641-ab9d-94bea1007fe0

Приклади коду

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/order/confirm/{id}", {
3 method: "POST",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Idempotency-Key": "[A UNIQUE KEY PER PURCHASE]",
7 "Content-Type": "application/json"
8 },
9 body: JSON.stringify({
10 "pay_with": "balance"
11 })
12});
13const data = await response.json();

Приклади відповідей

Paid from balance200application/json
 {
Balance is short202application/json
 {
Waiting for the user — app purchase202application/json
 {
No Idempotency-Key422application/json
 {
GET

Отримати замовлення

Нове/order/view/{id}

Отримати замовлення

Статус замовлення: draft, awaiting_payment, awaiting_approval, paid, expired або failed.

Примітки

  • Поки замовлення перебуває в стані очікування, посилання на checkout або approval оновлюються.

  • payment.due — це сума, якої ще не вистачає для погашення заборгованості.

"data": {

"order": {

"id": "990dd34a-0165-4641-ab9d-94bea1007fe0",

"action": "new",

"product": "shared",

"status": "paid",

"expires_at": "2026-10-06T15:46:32Z",

"options": {

"count": 10,

"period": "1m",

"traffic": 100,

"countries": {},

"geo_service": "overall",

"ip_score": 0,

"unlimited_ips": false

},

"price": {

"currency": "USD",

"total": "1.96",

"total_usd": "1,96",

"lines": [

{

"key": "ips",

"amount_usd": "0,80"

},

{

"key": "traffic",

"amount_usd": "1.00"

}

],

"unit": {

"ip": "0.08",

"one_gb": null

},

"adjustments": [

{

"key": "sale",

"amount": "0.00"

}

]

},

"package_id": 14800,

"checkout": null,

"approval": null

},

"payment": {

"balance": "41.00",

"due": "0.00"

}

},

"meta": {}

}

Для цього метода - потрібна авторизація!
Ви можете використовувати власний API ключ, котрий можна отримати в панелі керування.

Метод запита

GEThttps://api.stableproxy.com/v3/order/view/{id}

Параметри запиту

ІдентифікаторПравилаПриклад
id1requiredstring990dd34a-0165-4641-ab9d-94bea1007fe0

Приклади коду

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/order/view/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();

Приклади відповідей

Paid order200application/json
 {
GET

Очікувати зміни статусу замовлення

Нове/order/wait/{id}

Очікування замовлення

Та сама відповідь, що й у розділі Отримання замовлення, плюс retry_after (у секундах). Здійснюйте запити з цією затримкою, доки статус не стане остаточним — тоді retry_after дорівнюватиме null.

"data": {

"order": {

"id": "990dd34a-0165-4641-ab9d-94bea1007fe0",

"status": "awaiting_payment",

"package_id": null

},

"retry_after": 2

},

"meta": {}

}

Для цього метода - потрібна авторизація!
Ви можете використовувати власний API ключ, котрий можна отримати в панелі керування.

Метод запита

GEThttps://api.stableproxy.com/v3/order/wait/{id}

Параметри запиту

ІдентифікаторПравилаПриклад
timeoutНе обов'язковоnullableinteger124
id1requiredstring990dd34a-0165-4641-ab9d-94bea1007fe0

Приклади коду

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/order/wait/{id}", {
3 method: "GET",
4 headers: {
5 "Authorization": "Bearer [YOUR TOKEN]",
6 "Content-Type": "application/json"
7 }
8});
9const data = await response.json();

Приклади відповідей

Still waiting200application/json
 {
GET

Замовлення, що чекає підтвердження

Нове/order/approval/{id}

Метод запита

GEThttps://api.stableproxy.com/v3/order/approval/{id}

Параметри запиту

ІдентифікаторПравилаПриклад
id1required89

Приклади коду

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/order/approval/{id}", {
3 method: "GET",
4 headers: {
5 "Content-Type": "application/json"
6 }
7});
8const data = await response.json();
POST

Підтвердити й оплатити замовлення, на яке чекає застосунок

Нове/order/approve/{id}

Метод запита

POSThttps://api.stableproxy.com/v3/order/approve/{id}

Параметри запиту

ІдентифікаторПравилаПриклад
tНе обов'язковоnullablestring107
id1required7

Приклади коду

1const baseUrl = "https://api.stableproxy.com/v3";
2const response = await fetch(baseUrl + "/order/approve/{id}", {
3 method: "POST",
4 headers: {
5 "Content-Type": "application/json"
6 },
7 body: JSON.stringify({
8 "t": 107
9 })
10});
11const data = await response.json();