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/.
La mascotte orso polare di NordBastion seduta a una postazione di controllo missione tattica con monitor terminali olografici fluttuanti che mostrano codice ciano, una tastiera meccanica con tasti retroilluminati ciano e lo scudo-N ciano appoggiato accanto a lui, all'interno di una sala console nordica in pietra a vista con una finestra illuminata dall'aurora
API.v1 · REST · 70+ endpoint · 5 SDK

Esegua NordBastion dal codice.
KYC-free, pagato in crypto, completamente scriptabile.

Fare il provisioning di server, prendere snapshot, ricaricare in criptovaluta, eseguire ping da qualsiasi bastione. Ogni azione del pannello ha un endpoint REST e quattro SDK. Stesso livello minimo di identità del pannello: un'email e una password, nient'altro.

Versione
v1
Endpoint
70+
SDK
4 + CLI
Bastioni
4 Nordic
Limite di frequenza
1000/min read
KYC
Nessuno
Avvio rapido

Tre passaggi da un account registrato a un server avviato via codice.

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 Ricarichi in cripto

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 Fare il provisioning di un server

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

Quattro linguaggi, un binario.

Ogni SDK è con licenza MIT, disponibile come sorgente, stabile per semver dalla v1.0. Tutti condividono la stessa interfaccia client autenticata — elencare server, in qualsiasi linguaggio.

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-first

L'API REST funziona con qualsiasi client HTTP. Corpo delle richieste e risposte JSON, JWT bearer o chiave API con ambito, payload webhook firmati. Nessun lock-in SDK.

curl -H "Authorization: Bearer nb_live_••••" https://nordbastion.com/v1/servers
Riferimento endpoint

Oltre 70 endpoint su dodici gruppi di risorse.

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

Tutti gli endpoint seguono JSON in / JSON out, paginazione tramite ?page= & ?per_page=, filtraggio tramite ?filter[field]= e selezione dei campi tramite ?fields=. Ogni richiesta può portare un header Idempotency-Key.

Autenticazione

Tre tipi di credenziali, due modalità di privacy.

Bearer token LIVE

Email + password · JWT · scadenza 24 ore

JWT a breve durata emesso da POST /v1/auth/login. Contiene le claim di ambito e un ID di revoca della sessione. Rinnovabile per 30 giorni tramite /v1/auth/token/refresh.

Authorization: Bearer eyJhbGciOi••••
Chiave API con ambito limitato LIVE

Lunga durata · con scope · revocabile

Ambiti: read-only, billing-read, billing-write, servers-read, servers-write, full. Lista di IP consentiti opzionale (CIDR), scadenza opzionale. Consigliata per CI e script infrastrutturali.

Authorization: Bearer nb_live_3f9c2a••••
TLS mutuo Planned v1.1

Certificato client · enterprise / compliance

Agganciare un certificato client mTLS a un'API key. Le richieste che presentano il certificato client sbagliato vengono rifiutate al livello TLS prima che venga eseguita qualsiasi logica applicativa. Disponibile su richiesta tramite il pannello.

curl --cert client.pem --key client.key https://nordbastion.com/v1/servers
Risposte firmate con PGP Planned v1.1

Firma separata opt-in · verificabile offline

Imposti X-NB-Sign: 1 su qualsiasi richiesta. Il corpo della risposta è avvolto in una firma PGP cleartext separata utilizzando la chiave NordBastion (fingerprint su /pgp/). Utilizzato dalle pipeline di compliance che non si fidano della sola catena TLS.

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

NordBastion non raccoglie l'identità alla registrazione, e l'API non cambia quel livello minimo. Non esiste un webhook di verifica SMS, nessun flusso di conferma email, nessun endpoint di caricamento di documenti d'identità. L'API espone denaro, macchine e metadati — questa è l'intera superficie.

Limiti di frequenza

Per chiave, pubblicato al minuto

Endpoint in lettura
1000 / min
Endpoint in scrittura
100 / min
Auth-sensitive
10 / min
429 retry
Retry-After

Ogni risposta porta X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Livelli più alti sono disponibili su richiesta dal pannello.

Versioning

Periodo minimo di dodici mesi prima della deprecazione

Gli endpoint sono versionati via URL sotto /v1/. Le modifiche incompatibili vengono distribuite solo in una nuova versione major. La major precedente rimane supportata per almeno dodici mesi. Gli endpoint deprecati portano gli header di risposta Sunset e Deprecation.

Sunset: Wed, 01 Jul 2027 00:00:00 GMT Deprecation: true
Formato di errore

Envelope stabile, codice leggibile da macchina

{
  "error": {
    "type":    "invalid_request",
    "code":    "invalid_bastion",
    "message": "Unknown bastion 'mxp'.",
    "request_id": "req_2VqK8e...",
    "doc_url": "https://nordbastion.com/api/#errors"
  }
}
Webhook

Eventi firmati, ritentati con backoff.

Ogni payload di evento è firmato con HMAC usando il segreto webhook. Tre tentativi di retry con backoff esponenziale nell'arco di un'ora, poi scartato. Test di consegna disponibili da 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.

Endpoint di trasparenza

Accesso programmatico al canary, al log degli incidenti, al record di peering.

La maggior parte delle API cloud espone prodotti e fatturazione. NordBastion espone anche la propria superficie di trasparenza — programmaticamente. Lo stesso warrant canary pubblicato su /warrant-canary/ è disponibile come payload JSON firmato su /v1/transparency/canary. La stessa cronologia degli incidenti che alimenta /status/ è su /v1/transparency/incidents. Lo stesso record di peering che vive su /peering/ è su /v1/transparency/peering. Gli stessi annunci di prefisso AS213232 sono interrogabili in tempo reale.

Si iscriva al webhook canary.updated e riceverà una notifica push il primo giorno di ogni mese — se smette di attivarsi, il canary è compromesso e lo sa senza fare polling. Costruisca l'alert da solo, nella sua infrastruttura, con la firma crittografica che può verificare offline rispetto alla chiave PGP pubblicata.

Questa è la parte dell'API che nessun cloud commerciale ha, perché nessun cloud commerciale ha la dottrina per supportarla.

FAQ · API

Domande degli sviluppatori, con risposta.

Le domande che uno sviluppatore si pone prima di affidare l'infrastruttura all'API di un host.

Esiste davvero un'API ed è KYC-free?

Sì — ogni azione che può eseguire nel pannello di controllo ha un equivalente API oggi o nella roadmap pubblicata, e l'API stessa è protetta dallo stesso account del pannello autenticato: un'e-mail e una password. Non è richiesta alcuna verifica dell'identità per ottenere o utilizzare le credenziali API.

Quali linguaggi di programmazione hanno SDK ufficiali?

Quattro SDK ufficiali e una CLI. Python (pip install nordbastion), TypeScript / Node (npm install @nordbastion/api), Go (go install go.nordbastion.com/cli/nb@latest), Rust (cargo add nordbastion) e una CLI cross-platform a singolo binario (nb) installabile via curl. Tutti gli SDK sono con licenza MIT e disponibili come sorgente.

Posso ricaricare il mio saldo da codice, in criptovaluta?

Sì. POST /v1/billing/topups crea un'intenzione di ricarica e restituisce un indirizzo di destinazione per moneta, codice QR e timestamp di scadenza. Quando la rete conferma il pagamento, il saldo prepagato viene accreditato automaticamente e si attiva un webhook topup.confirmed. Sono supportate dodici criptovalute, elencate su /v1/billing/coins.

Gli endpoint API sono raggiungibili tramite Tor?

L'endpoint clearnet api.nordbastion.com è oggi Tor-friendly senza limiti di frequenza speciali o blocchi anti-Tor. Un mirror onion v3 della superficie API è nella roadmap del pannello e condividerà lo stesso materiale certificato TLS tramite gli header di risposta Onion-Location quando sarà disponibile.

Cosa significa «risposte firmate con PGP»?

Può attivare per la sua chiave API i corpi di risposta firmati con PGP. Ogni risposta JSON è avvolta in una firma PGP cleartext separata utilizzando la chiave NordBastion (fingerprint su /pgp/). Il wrapping è verificabile offline ed è utile per la conformità e l'attestazione della fonte in ambienti che non si fidano della sola catena TLS.

Come vengono applicati i rate limit?

Per API key. La baseline pubblicata è 1000 richieste di lettura al minuto e 100 richieste di scrittura al minuto, più 10 richieste al minuto sugli endpoint auth-sensitive (login, reset password, creazione chiave). Ogni risposta porta gli header X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset; le risposte 429 includono un header Retry-After. Gli account sviluppatore verificati possono richiedere livelli più alti dal pannello.

Come funziona il versioning?

Gli endpoint sono versionati via URL sotto /v1/. Le modifiche incompatibili vengono distribuite solo in una nuova versione major (/v2/, /v3/) e la major precedente rimane supportata per almeno dodici mesi dopo il rilascio della successiva. Gli endpoint deprecati portano un header Sunset con la data di interruzione e un header Deprecation: true in ogni risposta.

Perché l'audit log è opt-in?

Perché la dottrina NordBastion dice che registriamo solo ciò che dobbiamo. Le metriche delle richieste operative vivono per la finestra temporale scorrevole di cui ha bisogno il rate-limiter e poi scadono; un audit log per cliente delle azioni API è più dati di quanti ne abbiamo bisogno per gestire la piattaforma, quindi è disattivato di default. I clienti che lo desiderano possono abilitare /v1/account/audit-log; una volta abilitato copre pannello + API in modo equivalente e può essere esportato.

Pronto per automatizzarlo

Ottenere un'API key dal pannello.

Stesso requisito minimo di e-mail e password del pannello. Nessuna verifica d'identità. Paghi in crypto. Avvii un server a Stockholm, Helsinki, Oslo o Reykjavík in circa novanta secondi.

URL base · https://nordbastion.com/v1/ · Stato · stato operativo in tempo reale · Looking glass · esegua ping/MTR in tempo reale