Norly API

REST API для роботи з проксі з коду: баланс, замовлення, списки доступів, продовження й білий список IP. Усе, що робиться в кабінеті, можна зробити запитом.

Початок роботи

Ключ
Створіть ключ у кабінеті: Налаштування → API. Ключ показується один раз, збережіть його в секретах.
Авторизація
Передавайте ключ у заголовку Authorization: Bearer nrl_live_… у кожному запиті.
Формат
Запити й відповіді — JSON в UTF-8. Дати — ISO 8601 в UTC, суми — долари США числом.
Гроші
Замовлення й продовження оплачуються з балансу. Поповнення балансу — лише в кабінеті.
Базовий URL
https://api.norlyproxy.com/v1
Перший запит
curl https://api.norlyproxy.com/v1/balance \
  -H "Authorization: Bearer $NORLY_API_KEY"

Помилки

У разі помилки API повертає HTTP-код і об’єкт error з машинним кодом і текстом для людини.

HTTPcodeКоли
400BAD_REQUESTНе вдалося розібрати запит.
401UNAUTHORIZEDНемає ключа, ключ відкликано або він неправильний.
402INSUFFICIENT_FUNDSНе вистачає грошей на балансі. Поле needed у відповіді — скільки доплатити.
404NOT_FOUNDПакет, IP або запис не знайдено.
422VALIDATIONПомилка в параметрах. У fields — що саме не так.
429TOO_MANY_REQUESTSЗанадто часто. Зачекайте retryAfter секунд.
Приклад помилки 402
{
  "error": {
    "code": "INSUFFICIENT_FUNDS",
    "message": "Не вистачає $12.40",
    "needed": 12.4
  }
}

Баланс

Баланс

GET/balance

Поточний баланс акаунта.

curl -X GET "https://api.norlyproxy.com/v1/balance" \
  -H "Authorization: Bearer $NORLY_API_KEY"
Відповідь 200
{
  "balance": 248.6,
  "currency": "USD"
}

Історія балансу

GET/transactions

Поповнення, покупки, продовження й бонуси — від нових до старих.

Query-параметри

ПараметрТипОпис
limitintegerСкільки записів повернути, від 1 до 200. За замовчуванням 50.
beforestringID запису: повернути операції, старші за нього. Для посторінкового завантаження.
curl -X GET "https://api.norlyproxy.com/v1/transactions?limit=2" \
  -H "Authorization: Bearer $NORLY_API_KEY"
Відповідь 200
{
  "items": [
    {
      "id": "t_9qk2",
      "kind": "purchase",
      "title": "Residential · 50 GB",
      "amount": -95,
      "balanceAfter": 283.6,
      "createdAt": "2026-10-20T14:03:11Z"
    },
    {
      "id": "t_9qk1",
      "kind": "topup",
      "title": "Поповнення · USDT",
      "amount": 300,
      "balanceAfter": 378.6,
      "createdAt": "2026-10-20T13:58:40Z"
    }
  ]
}

Замовлення

Довідник продуктів

GET/products

Типи проксі з цінами за обсягом, країнами й строками. Потрібен, щоб зібрати замовлення.

curl -X GET "https://api.norlyproxy.com/v1/products" \
  -H "Authorization: Bearer $NORLY_API_KEY"
Відповідь 200
{
  "products": [
    {
      "id": "residential",
      "name": "Residential",
      "kind": "traffic",
      "unit": "GB",
      "tiers": [
        {
          "from": 1,
          "price": 2.3
        },
        {
          "from": 10,
          "price": 2
        },
        {
          "from": 1000,
          "price": 1.2
        }
      ],
      "countries": []
    },
    {
      "id": "isp",
      "name": "ISP",
      "kind": "ip",
      "unit": "IP",
      "udp": true,
      "tiers": [
        {
          "from": 1,
          "price": 3.5
        },
        {
          "from": 100,
          "price": 2.8
        }
      ],
      "periods": [
        {
          "days": 1,
          "label": "1 день"
        },
        {
          "days": 30,
          "label": "1 місяць"
        }
      ],
      "countries": [
        "us",
        "gb",
        "de"
      ]
    }
  ]
}

Розрахунок вартості

POST/orders/quote

Рахує ціну замовлення без покупки. Параметри ті самі, що й для створення замовлення.

Тіло запиту (JSON)

ПараметрТипОпис
productобов’язковоstringТип проксі: residential, premium, mobile, isp, datacenter.
qtyобов’язковоintegerГігабайти для трафікових продуктів або кількість IP.
daysintegerСтрок оренди для ISP і Datacenter: 1, 7, 30, 60 або 90.
countrystringКод країни (ISO 3166-1 alpha-2) для ISP і Datacenter.
citystringМісто для ISP — необов’язково.
udpbooleanУвімкнути UDP для ISP.
curl -X POST "https://api.norlyproxy.com/v1/orders/quote" \
  -H "Authorization: Bearer $NORLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"product": "isp", "qty": 10, "days": 30, "country": "us"}'
Відповідь 200
{
  "quote": {
    "unitPrice": 1.9,
    "basePrice": 1.95,
    "subtotal": 19.5,
    "savings": 0.5,
    "total": 19
  }
}

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

POST/orders

Купує проксі й списує суму з балансу. Доступи з’являються одразу — заберіть їх через «Список проксі». Якщо грошей не вистачає, повернеться 402 з полем needed.

Тіло запиту (JSON)

ПараметрТипОпис
productобов’язковоstringТип проксі: residential, premium, mobile, isp, datacenter.
qtyобов’язковоintegerГігабайти для трафікових продуктів або кількість IP.
daysintegerСтрок оренди для ISP і Datacenter: 1, 7, 30, 60 або 90.
countrystringКод країни (ISO 3166-1 alpha-2) для ISP і Datacenter.
citystringМісто для ISP — необов’язково.
udpbooleanУвімкнути UDP для ISP.
curl -X POST "https://api.norlyproxy.com/v1/orders" \
  -H "Authorization: Bearer $NORLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"product": "residential", "qty": 50}'
Відповідь 201
{
  "order": {
    "id": "o_4kd82m",
    "product": "residential",
    "mode": "package",
    "qty": 50,
    "days": 90,
    "total": 95,
    "createdAt": "2026-10-21T09:15:00Z"
  },
  "balance": 153.6
}

Проксі

Список проксі

GET/proxies

Пакети трафіку (Residential, Premium, Mobile) і виділені IP (ISP, Datacenter) з даними для підключення.

Query-параметри

ПараметрТипОпис
typestringЛише один тип: residential, premium, mobile, isp, datacenter.
statusstringactive, depleted або expired.
tagstringЛише IP з цим тегом.
curl -X GET "https://api.norlyproxy.com/v1/proxies?type=isp" \
  -H "Authorization: Bearer $NORLY_API_KEY"
Відповідь 200
{
  "packages": [
    {
      "id": "pk_8f2k1x9a",
      "product": "residential",
      "mode": "package",
      "gbTotal": 50,
      "gbUsed": 38.4,
      "host": "gate.norly.io",
      "httpPort": 7000,
      "socksPort": 7001,
      "username": "nr6vczyd",
      "password": "ewyfuzngcy4t",
      "autoRenew": true,
      "status": "active",
      "createdAt": "2026-09-30T10:12:00Z",
      "expiresAt": "2026-12-29T10:12:00Z"
    }
  ],
  "ips": [
    {
      "id": "ip_3m7qz2kd",
      "product": "isp",
      "ip": "73.162.18.204",
      "httpPort": 8412,
      "socksPort": 9412,
      "username": "nrk2m8pq",
      "password": "q7hx2mfa9c4e",
      "country": "us",
      "city": "Нью-Йорк",
      "udp": true,
      "tags": [
        "fb-farm"
      ],
      "autoRenew": false,
      "status": "active",
      "createdAt": "2026-10-01T08:00:00Z",
      "expiresAt": "2026-10-31T08:00:00Z"
    }
  ]
}

Рядки підключення

GET/proxies/lines

Готові рядки у форматі вашого софту — те саме, що генератор у кабінеті. Відповідь — text/plain, один рядок на проксі.

Query-параметри

ПараметрТипОпис
sourceобов’язковоstringID пакета (pk_…) або isp / datacenter — усі активні IP цього типу.
formatstringhpup — host:port:user:pass (за замовчуванням), upah — user:pass@host:port, url — протокол://user:pass@host:port.
protocolstringhttp (за замовчуванням) або socks5.
countintegerСкільки рядків для пакета, від 1 до 1000. Для IP ігнорується.
countrystringКод країни. Для пакетів.
citystringМісто латиницею, наприклад new_york. Для пакетів.
osstringwindows, macos, linux, android або ios. Для пакетів.
poolstringstandard (за замовчуванням), performance або ultra. Для пакетів.
ttlintegerSticky-сесія в хвилинах, від 1 до 1440. Без ttl — новий IP на кожен запит.
curl -X GET "https://api.norlyproxy.com/v1/proxies/lines?source=pk_8f2k1x9a&count=3&country=us&ttl=30" \
  -H "Authorization: Bearer $NORLY_API_KEY"
Відповідь 200 · text/plain
gate.norly.io:7000:nr6vczyd-country-us-session-x8k2qa-ttl-30:ewyfuzngcy4t
gate.norly.io:7000:nr6vczyd-country-us-session-m4pz7d-ttl-30:ewyfuzngcy4t
gate.norly.io:7000:nr6vczyd-country-us-session-q2hn5c-ttl-30:ewyfuzngcy4t

Теги на IP

PATCH/proxies/ips/tags

Додає й знімає теги у виділених IP. В одного IP до 10 тегів, кожен від 2 до 32 символів.

Тіло запиту (JSON)

ПараметрТипОпис
idsобов’язковоstring[]ID адрес (ip_…).
addstring[]Які теги додати.
removestring[]Які теги зняти.
curl -X PATCH "https://api.norlyproxy.com/v1/proxies/ips/tags" \
  -H "Authorization: Bearer $NORLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ids": ["ip_3m7qz2kd"], "add": ["client-a"], "remove": ["fb-farm"]}'
Відповідь 200
{
  "ips": [
    {
      "id": "ip_3m7qz2kd",
      "product": "isp",
      "ip": "73.162.18.204",
      "httpPort": 8412,
      "socksPort": 9412,
      "username": "nrk2m8pq",
      "password": "q7hx2mfa9c4e",
      "country": "us",
      "city": "Нью-Йорк",
      "udp": true,
      "tags": [
        "client-a"
      ],
      "autoRenew": false,
      "status": "active",
      "createdAt": "2026-10-01T08:00:00Z",
      "expiresAt": "2026-10-31T08:00:00Z"
    }
  ]
}

Новий пароль пакета

POST/proxies/packages/{id}/password

Випускає новий пароль для пакета трафіку. Старі рядки підключення перестають працювати одразу.

Параметри шляху

ПараметрТипОпис
idобов’язковоstringID пакета (pk_…).
curl -X POST "https://api.norlyproxy.com/v1/proxies/packages/pk_8f2k1x9a/password" \
  -H "Authorization: Bearer $NORLY_API_KEY"
Відповідь 200
{
  "package": {
    "id": "pk_8f2k1x9a",
    "product": "residential",
    "mode": "package",
    "gbTotal": 50,
    "gbUsed": 38.4,
    "host": "gate.norly.io",
    "httpPort": 7000,
    "socksPort": 7001,
    "username": "nr6vczyd",
    "password": "k3v9xq2mh7ra",
    "autoRenew": true,
    "status": "active",
    "createdAt": "2026-09-30T10:12:00Z",
    "expiresAt": "2026-12-29T10:12:00Z"
  }
}

Перевірка проксі

POST/proxies/check

Підключається через проксі й повертає зовнішній IP, країну, місто й затримку.

Тіло запиту (JSON)

ПараметрТипОпис
hostобов’язковоstringХост проксі.
portобов’язковоintegerПорт.
usernamestringЛогін, якщо доступ не за IP.
passwordstringПароль.
curl -X POST "https://api.norlyproxy.com/v1/proxies/check" \
  -H "Authorization: Bearer $NORLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"host": "gate.norly.io", "port": 7000, "username": "nr6vczyd-country-de", "password": "ewyfuzngcy4t"}'
Відповідь 200
{
  "ok": true,
  "ip": "91.64.112.37",
  "country": "de",
  "city": "Франкфурт",
  "isp": "Deutsche Telekom",
  "latencyMs": 212
}

Продовження

Продовжити IP

POST/proxies/ips/renew

Продовжує виділені IP на обраний строк і списує суму з балансу. Знижка за кількість рахується для кожного типу окремо.

Тіло запиту (JSON)

ПараметрТипОпис
idsобов’язковоstring[]ID адрес (ip_…).
daysобов’язковоintegerСтрок: 1, 7, 30, 60 або 90.
curl -X POST "https://api.norlyproxy.com/v1/proxies/ips/renew" \
  -H "Authorization: Bearer $NORLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ids": ["ip_3m7qz2kd"], "days": 30}'
Відповідь 200
{
  "ips": [
    {
      "id": "ip_3m7qz2kd",
      "product": "isp",
      "ip": "73.162.18.204",
      "httpPort": 8412,
      "socksPort": 9412,
      "username": "nrk2m8pq",
      "password": "q7hx2mfa9c4e",
      "country": "us",
      "city": "Нью-Йорк",
      "udp": true,
      "tags": [
        "fb-farm"
      ],
      "autoRenew": false,
      "status": "active",
      "createdAt": "2026-10-01T08:00:00Z",
      "expiresAt": "2026-11-30T08:00:00Z"
    }
  ],
  "total": 1.95,
  "balance": 246.65
}

Автопродовження IP

PATCH/proxies/ips

Вмикає або вимикає автопродовження. Гроші спишуться з балансу в день закінчення строку.

Тіло запиту (JSON)

ПараметрТипОпис
idsобов’язковоstring[]ID адрес (ip_…).
autoRenewобов’язковоbooleantrue — увімкнути, false — вимкнути.
curl -X PATCH "https://api.norlyproxy.com/v1/proxies/ips" \
  -H "Authorization: Bearer $NORLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ids": ["ip_3m7qz2kd"], "autoRenew": true}'
Відповідь 200
{
  "ips": [
    {
      "id": "ip_3m7qz2kd",
      "product": "isp",
      "ip": "73.162.18.204",
      "httpPort": 8412,
      "socksPort": 9412,
      "username": "nrk2m8pq",
      "password": "q7hx2mfa9c4e",
      "country": "us",
      "city": "Нью-Йорк",
      "udp": true,
      "tags": [
        "fb-farm"
      ],
      "autoRenew": true,
      "status": "active",
      "createdAt": "2026-10-01T08:00:00Z",
      "expiresAt": "2026-10-31T08:00:00Z"
    }
  ]
}

Автопродовження пакета

PATCH/proxies/packages/{id}

Коли трафік пакета закінчиться, такий самий пакет буде куплено знову з балансу.

Параметри шляху

ПараметрТипОпис
idобов’язковоstringID пакета (pk_…).

Тіло запиту (JSON)

ПараметрТипОпис
autoRenewобов’язковоbooleantrue — увімкнути, false — вимкнути.
curl -X PATCH "https://api.norlyproxy.com/v1/proxies/packages/pk_8f2k1x9a" \
  -H "Authorization: Bearer $NORLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"autoRenew": false}'
Відповідь 200
{
  "package": {
    "id": "pk_8f2k1x9a",
    "product": "residential",
    "mode": "package",
    "gbTotal": 50,
    "gbUsed": 38.4,
    "host": "gate.norly.io",
    "httpPort": 7000,
    "socksPort": 7001,
    "username": "nr6vczyd",
    "password": "ewyfuzngcy4t",
    "autoRenew": false,
    "status": "active",
    "createdAt": "2026-09-30T10:12:00Z",
    "expiresAt": "2026-12-29T10:12:00Z"
  }
}

Доступ за IP

Білий список

GET/whitelist

Адреси й підмережі, з яких проксі працюють без логіна й пароля.

curl -X GET "https://api.norlyproxy.com/v1/whitelist" \
  -H "Authorization: Bearer $NORLY_API_KEY"
Відповідь 200
{
  "entries": [
    {
      "id": "wl_7d2k",
      "ip": "91.203.12.44",
      "note": "Сервер парсингу",
      "createdAt": "2026-10-12T11:00:00Z"
    }
  ],
  "currentIp": "188.162.74.51",
  "limit": 20
}

Додати адресу

POST/whitelist

Додає IPv4-адресу або підмережу у форматі CIDR. Максимум 20 записів.

Тіло запиту (JSON)

ПараметрТипОпис
ipобов’язковоstringАдреса або підмережа: 91.203.12.44 або 91.203.12.0/24.
notestringПідпис, до 40 символів.
curl -X POST "https://api.norlyproxy.com/v1/whitelist" \
  -H "Authorization: Bearer $NORLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ip": "91.203.12.44", "note": "Сервер парсингу"}'
Відповідь 201
{
  "entries": [
    {
      "id": "wl_7d2k",
      "ip": "91.203.12.44",
      "note": "Сервер парсингу",
      "createdAt": "2026-10-21T09:20:00Z"
    }
  ]
}

Видалити адресу

DELETE/whitelist/{id}

Прибирає запис із білого списку. Підключення з цієї адреси знову вимагатимуть логін і пароль.

Параметри шляху

ПараметрТипОпис
idобов’язковоstringID запису (wl_…).
curl -X DELETE "https://api.norlyproxy.com/v1/whitelist/wl_7d2k" \
  -H "Authorization: Bearer $NORLY_API_KEY"
Відповідь 200
{
  "entries": []
}