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 ours polaire NordBastion assise à un poste de travail de contrôle de mission tactique avec des moniteurs terminaux holographiques flottants affichant du code cyan, un clavier mécanique avec des touches illuminées en cyan et le bouclier-N cyan appuyé à côté, dans une salle de console nordique en pierre apparente avec une fenêtre éclairée par une aurore
API.v1 · REST · 70+ endpoints · 5 SDKs

Pilotez NordBastion depuis du code.
Sans KYC, payé en crypto, entièrement scriptable.

Provisionnez des serveurs, prenez des instantanés, rechargez en cryptomonnaie, exécutez ping depuis n'importe quel bastion. Chaque action du panneau a un point de terminaison REST et quatre SDK. Même plancher d'identité que le panneau : un e-mail et un mot de passe, rien de plus.

Version
v1
Points de terminaison
70+
SDKs
4 + CLI
Bastions
4 Nordic
Limite de débit
1000/min read
KYC
Aucun
Démarrage rapide

Trois étapes depuis un compte créé jusqu'à un serveur démarré en code.

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 Top-up en crypto

POST /v1/billing/topups

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

amount_usd doit être compris entre $30 et $10,000 (appliqué côté serveur). En dessous retourne HTTP 422 amount_too_low, au-dessus retourne 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 Provisionner un serveur

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"}'
SDKs & CLI

Quatre langages, un seul binaire.

Chaque SDK est sous licence MIT, code source disponible, stable en semver depuis la v1.0. Tous partagent la même interface client authentifiée — lister les serveurs, dans n'importe quel langage.

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 en premier

L'API REST fonctionne avec n'importe quel client HTTP. Corps de requête et réponse JSON, bearer JWT ou clé API à portée limitée, payloads de webhook signés. Aucun verrouillage SDK.

curl -H "Authorization: Bearer nb_live_••••" https://nordbastion.com/v1/servers
Référence des points de terminaison

70+ points de terminaison répartis sur douze groupes de ressources.

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

Tous les points de terminaison suivent JSON en entrée / JSON en sortie, pagination par ?page= & ?per_page=, filtrage par ?filter[field]= et sélection de champs par ?fields=. Chaque requête peut porter un en-tête Idempotency-Key.

Authentification

Trois types d'identifiants, deux modes de confidentialité.

Jeton Bearer LIVE

E-mail + mot de passe · JWT · expiration après 24 heures

JWT de courte durée émis par POST /v1/auth/login. Porte des revendications de portée et un identifiant de révocation de session. Renouvelable pendant 30 jours via /v1/auth/token/refresh.

Authorization: Bearer eyJhbGciOi••••
Clé API à portée limitée LIVE

Longue durée · scopé · révocable

Portées : lecture seule, facturation-lecture, facturation-écriture, serveurs-lecture, serveurs-écriture, complète. Liste blanche IP optionnelle (CIDR), expiration optionnelle. Recommandé pour les scripts CI et d'infrastructure.

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

Certificat client · entreprise / conformité

Épinglez un certificat client mTLS à une clé API. Les requêtes qui présentent le mauvais certificat client sont rejetées au niveau TLS avant qu'aucune logique d'application ne s'exécute. Disponible sur demande via le panneau.

curl --cert client.pem --key client.key https://nordbastion.com/v1/servers
Réponses signées PGP Planned v1.1

Signature détachée optionnelle · vérifiable hors ligne

Définissez X-NB-Sign: 1 sur toute requête. Le corps de la réponse est enveloppé dans une signature PGP en clair détachée utilisant la clé NordBastion (empreinte sur /pgp/). Utilisé par les pipelines de conformité qui ne font pas confiance à la seule chaîne TLS.

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

NordBastion ne collecte pas d'identité à l'inscription, et l'API ne modifie pas ce plancher. Il n'y a pas de webhook de vérification SMS, pas de flux de confirmation par e-mail, pas de point de terminaison de téléchargement de document d'identité. L'API expose l'argent, les machines et les métadonnées — c'est toute la surface concernée.

Limites de débit

Par clé, publié par minute

Endpoints en lecture
1000 / min
Endpoints en écriture
100 / min
Sensible à l'authentification
10 / min
Nouvelle tentative 429
Retry-After

Chaque réponse porte X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Des niveaux supérieurs sont disponibles sur demande depuis le panneau.

Gestion des versions

Plancher de dépréciation de douze mois

Les points de terminaison sont versionnés par URL sous /v1/. Les changements cassants n'arrivent que dans une nouvelle version majeure. La version majeure précédente reste supportée pendant au moins douze mois. Les points de terminaison dépréciés portent des en-têtes de réponse Sunset et Deprecation.

Sunset: Wed, 01 Jul 2027 00:00:00 GMT Deprecation: true
Format d'erreur

Enveloppe stable, code lisible par machine

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

Événements signés, réessayés avec backoff.

Chaque charge utile d'événement est signée HMAC avec votre secret webhook. Trois tentatives de relance avec backoff exponentiel sur une heure, puis abandon. Les livraisons de test sont disponibles depuis 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.

Endpoints de transparence

Accès programmatique au canari, au journal des incidents, à l'enregistrement de peering.

La plupart des API cloud exposent les produits et la facturation. NordBastion expose également sa propre surface de transparence — de manière programmatique. Le même canari de mandat publié à /warrant-canary/ est disponible comme charge utile JSON signée à /v1/transparency/canary. Le même historique d'incidents qui alimente /status/ se trouve à /v1/transparency/incidents. Le même enregistrement de peering qui vit sur /peering/ se trouve à /v1/transparency/peering. Les mêmes annonces de préfixe AS213232 sont interrogeables en temps réel.

Abonnez-vous au webhook canary.updated et vous recevrez une notification push le premier jour de chaque mois — si elle cesse de se déclencher, le canary est brisé, et vous le savez sans avoir à scruter. Construisez l'alerte vous-même, dans votre propre infrastructure, avec la signature cryptographique que vous pouvez vérifier hors ligne contre la clé PGP publiée.

C'est la partie de l'API qu'aucun cloud commercial ne possède, car aucun cloud commercial n'a la doctrine pour l'étayer.

FAQ · API

Questions de développeurs, répondues.

Les questions qu'un développeur pose avant de confier son infrastructure à l'API d'un hébergeur.

Y a-t-il vraiment une API et est-elle sans KYC ?

Oui — chaque action que vous pouvez effectuer dans le panel de contrôle a un équivalent API aujourd'hui ou sur la feuille de route publiée, et l'API elle-même est protégée par le même compte panel authentifié : un email et un mot de passe. Aucune vérification d'identité n'est requise pour obtenir ou utiliser des identifiants API.

Quels langages de programmation disposent de SDKs officiels ?

Quatre SDK officiels et un CLI. Python (pip install nordbastion), TypeScript / Node (npm install @nordbastion/api), Go (go install go.nordbastion.com/cli/nb@latest), Rust (cargo add nordbastion) et un CLI multiplateforme en binaire unique (nb) installable via curl. Tous les SDK sont sous licence MIT et code source disponible.

Puis-je recharger mon solde depuis du code, en cryptomonnaie ?

Oui. POST /v1/billing/topups crée une intention de recharge et retourne une adresse de destination par monnaie, un QR code et un horodatage d'expiration. Lorsque le réseau confirme le paiement, votre solde prépayé est crédité automatiquement et un webhook topup.confirmed se déclenche. Douze cryptomonnaies sont prises en charge, listées sur /v1/billing/coins.

Les points de terminaison API sont-ils accessibles via Tor ?

L'endpoint clearnet api.nordbastion.com est compatible Tor aujourd'hui, sans limites de débit spéciales ni blocage anti-Tor. Un miroir onion v3 de la surface API figure sur la feuille de route du panel et partagera le même matériel certifié TLS via les en-têtes de réponse Onion-Location à sa sortie.

Que signifie « réponses signées PGP » ?

Vous pouvez activer pour votre clé API les corps de réponse signés PGP. Chaque réponse JSON est enveloppée dans une signature PGP en clair détachée utilisant la clé NordBastion (empreinte sur /pgp/). L'enveloppe est vérifiable hors ligne et est utile pour la conformité et l'attestation de source dans les environnements qui ne font pas confiance à la seule chaîne TLS.

Comment les limites de débit sont-elles appliquées ?

Par clé API. La base publiée est de 1000 requêtes en lecture par minute et 100 requêtes en écriture par minute, plus 10 requêtes par minute sur les points de terminaison sensibles à l'authentification (connexion, réinitialisation du mot de passe, création de clé). Chaque réponse porte des en-têtes X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset ; les réponses 429 incluent un en-tête Retry-After. Les comptes développeurs vérifiés peuvent demander des niveaux supérieurs depuis le panneau.

Comment fonctionne le versionnage ?

Les points de terminaison sont versionnés par URL sous /v1/. Les changements cassants n'arrivent que dans une nouvelle version majeure (/v2/, /v3/) et la version majeure précédente reste supportée pendant au moins douze mois après la sortie de la suivante. Les points de terminaison dépréciés portent un en-tête Sunset avec la date de coupure et un en-tête Deprecation: true sur chaque réponse.

Pourquoi le journal d'audit est-il opt-in ?

Parce que la doctrine NordBastion dit que nous ne journalisons que ce que nous devons. Les métriques de requêtes opérationnelles vivent pendant la fenêtre glissante dont le limiteur de débit a besoin puis expirent ; un journal d'audit des actions API par client représente plus de données que nous n'en avons besoin pour exploiter la plateforme, il est donc désactivé par défaut. Les clients qui le souhaitent peuvent activer /v1/account/audit-log ; une fois activé, il couvre panel + API également et peut être exporté.

Prêt à l'automatiser

Obtenez une clé API depuis le panneau.

Le même prérequis email-et-mot-de-passe que le panel. Aucune vérification d'identité. Payez en crypto. Démarrez un serveur à Stockholm, Helsinki, Oslo ou Reykjavík en environ quatre-vingt-dix secondes.

URL de base · https://nordbastion.com/v1/ · État · statut opérationnel en direct · Looking glass · exécuter ping/MTR en direct