v1.0 shipped · 50 endpoints live across auth, account, billing, catalog, servers, ssh-keys, webhooks, transparency, agents and OAuth. · v1.1 roadmap (snapshots, networking, storage, SDKs, CLI) is tracked below. · Native MCP server at /agents/.
Маскот-полярный медведь NordBastion сидит за тактическим рабочим местом управления миссией с парящими голографическими терминальными мониторами, показывающими cyan-код, механической клавиатурой с cyan-подсвеченными клавишами и cyan-N щитом, опирающимся рядом с ним, внутри открытой Nordic-каменной консольной комнаты с окном в северное сияние
API.v1 · REST · 70+ эндпоинтов · 5 SDK

Управляйте NordBastion из кода.
KYC-free, оплата криптовалютой, полностью скриптуемый.

Провизионируйте серверы, делайте снимки, пополняйте в криптовалюте, запускайте ping из любого бастиона. Каждое действие панели имеет REST-эндпоинт и четыре SDK. Тот же минимум идентификации, что и в панели: email и пароль — ничего больше.

Версия
v1
Эндпоинты
70+
SDK
4 + CLI
Бастионы
4 Nordic
Лимит запросов
1000/min read
KYC
Нет
Быстрый старт

Три шага от зарегистрированного аккаунта до запущенного сервера в коде.

01 Create an account

POST /v1/auth/register

Email + password, no KYC. Returns a 24-hour access token straight away — no email confirmation step.

curl -sS https://nordbastion.com/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"••••••••••••"}'
02 Пополнение в криптовалюте

POST /v1/billing/topups

Open a per-coin invoice. The response carries a deposit address, QR code and expiry timestamp.

amount_usd must be between $30 and $10,000 (server-enforced). Lower returns HTTP 422 amount_too_low, higher returns amount_too_high.

curl -sS https://nordbastion.com/v1/billing/topups \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"amount_usd":50,"coin":"xmr"}'
03 Провизионировать сервер

POST /v1/servers

Pick a tier (service_code), a bastion and an image. Server is booted with SSH in about ninety seconds.

curl -sS https://nordbastion.com/v1/servers \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"service_code":"NB-V3","bastion":"STO","image":"debian-12"}'
SDK и CLI

Четыре языка — один бинарный файл.

Каждый SDK распространяется под лицензией MIT, с открытым исходным кодом, semver-стабилен начиная с v1.0. Все используют одинаковый аутентифицированный клиентский интерфейс — перечисление серверов на любом языке.

Planned for v1.1

These SDKs are planned for v1.1. The REST API at /v1/* is fully usable from any HTTP client today — see the agents page for cURL and MCP examples.

Python
pip
pip install nordbastion
from nordbastion import Client
nb = Client(api_key="nb_live_••••")

for s in nb.servers.list():
    print(s.id, s.name, s.status)
TypeScript
npm
npm i @nordbastion/api
import { NordBastion } from '@nordbastion/api';
const nb = new NordBastion({ apiKey: 'nb_live_••••' });

const servers = await nb.servers.list();
servers.forEach(s => console.log(s.id, s.name, s.status));
Go
go install
go get go.nordbastion.com/api
import nb "go.nordbastion.com/api"

c := nb.New(nb.WithAPIKey("nb_live_••••"))
servers, _ := c.Servers.List(ctx)
for _, s := range servers {
    fmt.Println(s.ID, s.Name, s.Status)
}
Rust
cargo
cargo add nordbastion
use nordbastion::Client;
let nb = Client::builder()
    .api_key("nb_live_••••").build()?;

for s in nb.servers().list().await? {
    println!("{} {} {}", s.id, s.name, s.status);
}
CLI · nb
Planned for v1.1
curl -sSL https://get.nordbastion.com | sh
nb auth login --api-key nb_live_••••
nb servers list
nb servers create --tier NB-V3 --bastion STO
nb servers snap NB-srv-1234 --name pre-upgrade
Curl в приоритете

REST API работает с любым HTTP-клиентом. Тела запросов и ответов в JSON, JWT bearer или API-ключ с ограниченной областью, подписанные полезные нагрузки вебхуков. Никакой привязки к SDK.

curl -H "Authorization: Bearer nb_live_••••" https://nordbastion.com/v1/servers
Справочник эндпоинтов

70+ эндпоинтов в составе двенадцати групп ресурсов.

Authentication · 14 endpoints

POST /v1/auth/register LIVE
POST /v1/auth/login LIVE
POST /v1/auth/login/totp LIVE
POST /v1/auth/token/refresh LIVE
POST /v1/auth/recover LIVE
GET /v1/auth/sessions LIVE
DELETE /v1/auth/sessions/{token_id} LIVE
POST /v1/auth/totp/setup LIVE
POST /v1/auth/totp/enable LIVE
POST /v1/auth/totp/disable LIVE
POST /v1/auth/password LIVE
POST /v1/auth/api-keys LIVE
GET /v1/auth/api-keys LIVE
DELETE /v1/auth/api-keys/{key_id} LIVE

Account · 5 endpoints

GET /v1/account LIVE
PATCH /v1/account LIVE
GET /v1/account/balance LIVE
GET /v1/account/usage LIVE
GET /v1/account/audit-log LIVE

Billing & crypto top-ups · 8 endpoints

POST /v1/billing/topups LIVE
GET /v1/billing/topups LIVE
GET /v1/billing/topups/{order_number} LIVE
POST /v1/billing/topups/{order_number}/cancel LIVE
GET /v1/billing/bonus-tiers LIVE
GET /v1/billing/coins LIVE
GET /v1/billing/invoices PLANNED roadmap
GET /v1/billing/invoices/{id} PLANNED roadmap

Catalogue · 7 endpoints

GET /v1/catalog LIVE
GET /v1/catalog/vps LIVE
GET /v1/catalog/dedicated LIVE
GET /v1/catalog/bastions LIVE
GET /v1/catalog/images LIVE
GET /v1/catalog/{code} LIVE
GET /v1/catalog/iso PLANNED roadmap

Servers · 14 endpoints

POST /v1/servers LIVE
GET /v1/servers LIVE
GET /v1/servers/{order_number} LIVE
PATCH /v1/servers/{order_number} LIVE
DELETE /v1/servers/{order_number} LIVE
POST /v1/servers/{id}/power PLANNED roadmap
POST /v1/servers/{id}/reinstall PLANNED roadmap
POST /v1/servers/{id}/rescue PLANNED roadmap
POST /v1/servers/{id}/resize PLANNED roadmap
POST /v1/servers/{id}/migrate PLANNED roadmap
POST /v1/servers/{id}/password-reset PLANNED roadmap
GET /v1/servers/{id}/metrics PLANNED roadmap
GET /v1/servers/{id}/console PLANNED roadmap
GET /v1/servers/{id}/serial PLANNED roadmap

Snapshots · 5 endpoints

POST /v1/servers/{id}/snapshots PLANNED roadmap
GET /v1/servers/{id}/snapshots PLANNED roadmap
POST /v1/servers/{id}/snapshots/{snapId}/restore PLANNED roadmap
DELETE /v1/servers/{id}/snapshots/{snapId} PLANNED roadmap
POST /v1/servers/{id}/snapshots/{snapId}/export PLANNED roadmap

SSH keys · 4 endpoints

POST /v1/ssh-keys LIVE
GET /v1/ssh-keys LIVE
GET /v1/ssh-keys/{id} LIVE
DELETE /v1/ssh-keys/{id} LIVE

Networking · 8 endpoints

GET /v1/networking/ips PLANNED roadmap
POST /v1/networking/ips/floating PLANNED roadmap
POST /v1/networking/rdns PLANNED roadmap
POST /v1/networking/firewall PLANNED roadmap
GET /v1/networking/firewall PLANNED roadmap
POST /v1/networking/private-network PLANNED roadmap
POST /v1/networking/byoip PLANNED roadmap
POST /v1/networking/lookingglass PLANNED roadmap

Storage · 5 endpoints

POST /v1/storage/volumes PLANNED roadmap
GET /v1/storage/volumes PLANNED roadmap
POST /v1/storage/volumes/{id}/attach PLANNED roadmap
POST /v1/storage/volumes/{id}/detach PLANNED roadmap
POST /v1/storage/volumes/{id}/resize PLANNED roadmap

Images & templates · 3 endpoints

POST /v1/images/iso/upload PLANNED roadmap
POST /v1/images/templates PLANNED roadmap
GET /v1/images/templates PLANNED roadmap

Webhooks · 4 endpoints

POST /v1/webhooks LIVE
GET /v1/webhooks LIVE
DELETE /v1/webhooks/{id} LIVE
POST /v1/webhooks/{id}/test LIVE

Transparency · 4 endpoints

GET /v1/transparency/canary LIVE
GET /v1/transparency/peering LIVE
GET /v1/transparency/status LIVE
GET /v1/transparency/incidents PLANNED roadmap

Agents directory · 2 endpoints

GET /v1/agents/directory LIVE
POST /v1/agents/directory LIVE

OAuth 2.1 / DCR · 4 endpoints

POST /v1/oauth/register LIVE
POST /v1/oauth/token LIVE
POST /v1/oauth/revoke LIVE
GET /v1/oauth/introspect LIVE

Все эндпоинты работают по схеме JSON in / JSON out, пагинация через ?page= & ?per_page=, фильтрация через ?filter[field]=, выбор полей через ?fields=. Каждый запрос может содержать заголовок Idempotency-Key.

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

Три вида учётных данных, два режима конфиденциальности.

Bearer-токен LIVE

Email + пароль · JWT · истечение через 24 часа

Краткосрочный JWT, выдаваемый через POST /v1/auth/login. Содержит заявки области действия и идентификатор отзыва сессии. Можно обновлять в течение 30 дней через /v1/auth/token/refresh.

Authorization: Bearer eyJhbGciOi••••
API-ключ с ограниченной областью действия LIVE

Долгоживущий · с областью действия · отзываемый

Области: read-only, billing-read, billing-write, servers-read, servers-write, full. Опциональный белый список IP (CIDR), опциональный срок действия. Рекомендуется для CI и инфраструктурных скриптов.

Authorization: Bearer nb_live_3f9c2a••••
Взаимный TLS Planned v1.1

Клиентский сертификат · enterprise / compliance

Привяжите клиентский сертификат mTLS к API-ключу. Запросы с неправильным клиентским сертификатом отклоняются на уровне TLS до запуска любой логики приложения. Доступно по запросу через панель.

curl --cert client.pem --key client.key https://nordbastion.com/v1/servers
Ответы с подписью PGP Planned v1.1

Отдельная подпись по выбору · проверяема офлайн

Установите X-NB-Sign: 1 в любом запросе. Тело ответа будет обёрнуто в отделённую PGP-подпись открытым текстом с использованием ключа NordBastion (отпечаток на /pgp/). Используется конвейерами соответствия, которые не доверяют только TLS-цепочке.

curl -H "X-NB-Sign: 1" -H "Authorization: Bearer ..." https://nordbastion.com/v1/transparency/canary

NordBastion не собирает персональные данные при регистрации, и API не изменяет этот минимум. Нет webhook-а верификации SMS, нет потока подтверждения email, нет эндпоинта загрузки удостоверения личности. API предоставляет доступ к деньгам, машинам и метаданным — вот и вся поверхность.

Лимиты запросов

На ключ, опубликовано в минуту

Эндпоинты чтения
1000 / min
Эндпоинты записи
100 / min
Чувствительно к аутентификации
10 / min
Повтор при 429
Retry-After

Каждый ответ содержит X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Более высокие уровни доступны по запросу через панель.

Версионирование

Минимальный срок устаревания — двенадцать месяцев

Эндпоинты версионируются по URL в /v1/. Обратно несовместимые изменения появляются только в новой мажорной версии. Предыдущая мажорная версия поддерживается не менее двенадцати месяцев. Устаревшие эндпоинты содержат заголовки ответа Sunset и Deprecation.

Sunset: Wed, 01 Jul 2027 00:00:00 GMT Deprecation: true
Формат ошибок

Стабильный конверт, машиночитаемый код

{
  "error": {
    "type":    "invalid_request",
    "code":    "invalid_bastion",
    "message": "Unknown bastion 'mxp'.",
    "request_id": "req_2VqK8e...",
    "doc_url": "https://nordbastion.com/api/#errors"
  }
}
Вебхуки

Подписанные события, повторяются с экспоненциальной задержкой.

Каждая полезная нагрузка события подписывается HMAC с вашим webhook-секретом. Три попытки повтора с экспоненциальной задержкой в течение часа, затем отбрасывается. Тестовые доставки доступны через POST /v1/webhooks/{id}/test.

account.balance.low

Balance dropped below the configured threshold.

topup.created

Crypto top-up address generated, waiting for first confirmation.

topup.confirmed

Top-up settled on-chain. Balance credited.

topup.failed

Top-up address expired without confirmation.

invoice.issued

Monthly invoice issued. PDF + PGP-signed PDF available.

server.provisioning

Provisioning started — image being written.

server.provisioned

Server is booted and reachable on SSH.

server.power.on

Server powered on (manual or scheduled).

server.power.off

Server powered off (manual or scheduled).

server.reinstalled

OS reinstalled. Root password rotated.

server.resized

VPS tier changed. Applied on the next reboot.

server.migrated

Server moved to another bastion via snapshot redeploy.

server.deleted

Server terminated. Pro-rated credit returned.

snapshot.created

Snapshot completed and is downloadable.

snapshot.restored

Snapshot restored in place.

snapshot.deleted

Snapshot removed.

volume.attached

Block volume attached to a server.

volume.detached

Block volume detached.

firewall.changed

Firewall ruleset applied to one or more servers.

canary.updated

Warrant canary reaffirmed (first of every month).

incident.opened

Operational incident opened on a bastion or shared service.

incident.resolved

Operational incident closed.

peering.changed

AS213232 peering or prefix announcement updated.

Эндпоинты прозрачности

Программный доступ к канарейке — журналу инцидентов, записи пиринга.

Большинство облачных API предоставляют продукты и биллинг. NordBastion также предоставляет собственную поверхность прозрачности — программно. Та же канарейка-ордер, опубликованная по адресу /warrant-canary/, доступна как подписанная JSON-полезная нагрузка по адресу /v1/transparency/canary. Та же история инцидентов, движущая /status/, находится по адресу /v1/transparency/incidents. Та же запись пиринга, живущая на /peering/, — по адресу /v1/transparency/peering. Те же объявления префиксов AS213232 запрашиваются в реальном времени.

Подпишитесь на вебхук canary.updated и получайте push-уведомление в первый день каждого месяца — если он перестанет срабатывать, канарейка сломана, и вы узнаете об этом без опроса. Создайте оповещение самостоятельно, в своей инфраструктуре, с криптографической подписью, которую можно верифицировать офлайн по опубликованному PGP-ключу.

Это та часть API, которой нет ни у одного коммерческого облака, потому что ни одно коммерческое облако не располагает доктриной для её поддержки.

FAQ · API

Вопросы разработчика — с ответами.

Вопросы, которые разработчик задаёт перед тем, как доверить инфраструктуру API хостинга.

Действительно ли есть API и является ли он KYC-free?

Да — каждое действие, доступное в панели управления, сегодня или в опубликованной дорожной карте имеет эквивалент в API, а сам API защищён тем же аутентифицированным аккаунтом панели: email и паролем. Верификация личности не требуется для получения или использования API-учётных данных.

Для каких языков программирования есть официальные SDK?

Четыре официальных SDK и один CLI. Python (pip install nordbastion), TypeScript / Node (npm install @nordbastion/api), Go (go install go.nordbastion.com/cli/nb@latest), Rust (cargo add nordbastion) и однобинарный кросс-платформенный CLI (nb), устанавливаемый через curl. Все SDK распространяются под лицензией MIT с открытым исходным кодом.

Могу ли я пополнить баланс из кода в криптовалюте?

Да. POST /v1/billing/topups создаёт намерение пополнения и возвращает целевой адрес для каждой монеты, QR-код и метку времени истечения срока. Когда сеть подтверждает платёж, ваш предоплаченный баланс автоматически пополняется и срабатывает вебхук topup.confirmed. Поддерживается двенадцать криптовалют, перечисленных на /v1/billing/coins.

Доступны ли API-эндпоинты через Tor?

Clearnet-эндпоинт api.nordbastion.com сегодня Tor-совместим — без специальных лимитов запросов или блокировки Tor. v3 onion-зеркало API в дорожной карте панели и будет разделять те же TLS-сертифицированные материалы через заголовки ответа Onion-Location при его запуске.

Что означает «ответы с PGP-подписью»?

Вы можете включить для своего API-ключа тела ответов с PGP-подписью. Каждый JSON-ответ обёртывается в отделённую PGP-подпись открытым текстом с использованием ключа NordBastion (отпечаток на /pgp/). Обёртка верифицируется офлайн и полезна для соответствия требованиям и аттестации источника в средах, которые не доверяют только TLS-цепочке.

Как применяются ограничения скорости?

На API-ключ. Опубликованный базовый уровень: 1000 запросов на чтение в минуту и 100 запросов на запись в минуту, плюс 10 запросов в минуту на чувствительных к аутентификации эндпоинтах (вход, сброс пароля, создание ключа). Каждый ответ содержит заголовки X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset; ответы 429 включают заголовок Retry-After. Верифицированные аккаунты разработчиков могут запрашивать более высокие уровни через панель.

Как работает версионирование?

Эндпоинты версионируются по URL в /v1/. Обратно несовместимые изменения появляются только в новой мажорной версии (/v2/, /v3/), предыдущая мажорная версия поддерживается не менее двенадцати месяцев после выпуска следующей. Устаревшие эндпоинты содержат заголовок Sunset с датой отключения и заголовок Deprecation: true в каждом ответе.

Почему журнал аудита включается добровольно?

Потому что доктрина NordBastion предписывает: мы логируем только то, что необходимо. Операционные метрики запросов живут в скользящем окне, нужном rate-limiter'у, и затем истекают; журнал аудита API-действий на каждого клиента — это больше данных, чем нам нужно для работы платформы, поэтому по умолчанию он отключён. Клиенты, которым это нужно, могут включить /v1/account/audit-log; после включения он охватывает панель + API в равной мере и может быть экспортирован.

Готово к автоматизации

Получите API-ключ в панели.

Тот же минимум регистрации — email и пароль. Без проверки личности. Оплата криптовалютой. Запуск сервера в Stockholm, Helsinki, Oslo или Reykjavík — примерно за девяносто секунд.

Базовый URL · https://nordbastion.com/v1/ · Статус · статус работы в реальном времени · Сетевой монитор · запустить ping/MTR в реальном времени