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/.
O mascote urso-polar do NordBastion sentado em uma estação de trabalho de controle de missão tática com monitores de terminal holográficos flutuantes mostrando código ciano, um teclado mecânico com teclas iluminadas em ciano e o escudo-N ciano apoiado ao lado dele, dentro de uma sala de console de pedra Nórdica exposta com uma janela iluminada por aurora
API.v1 · REST · 70+ endpoints · 5 SDKs

Execute o NordBastion pelo código.
KYC-free, pago em cripto, totalmente scriptável.

Provisione servidores, tire snapshots, recarregue em criptomoeda, execute ping de qualquer bastion. Cada ação do painel tem um endpoint REST e quatro SDKs. Mesmo piso de identidade do painel: um e-mail e uma senha, nada mais.

Versão
v1
Endpoints
70+
SDKs
4 + CLI
Bastões
4 Nordic
Limite de taxa
1000/min read
KYC
Nenhum
Início rápido

Três etapas de uma conta cadastrada a um servidor inicializado em código.

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 Recarregue em 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 Provisionar um servidor

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

Quatro linguagens, um binário.

Cada SDK é licenciado MIT, com código-fonte disponível, semanticamente versionado e estável a partir da v1.0. Todos compartilham a mesma interface de cliente autenticado — listar servidores, em qualquer linguagem.

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 primeiro

A API REST funciona com qualquer cliente HTTP. Corpos de requisição e resposta JSON, bearer JWT ou chave de API com escopo, payloads de webhook assinados. Sem lock-in de SDK.

curl -H "Authorization: Bearer nb_live_••••" https://nordbastion.com/v1/servers
Referência de endpoints

70+ endpoints em doze grupos de recursos.

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

Todos os endpoints seguem JSON de entrada / JSON de saída, paginação por ?page= & ?per_page=, filtragem por ?filter[field]= e seleção de campos por ?fields=. Toda requisição pode carregar um cabeçalho Idempotency-Key.

Autenticação

Três tipos de credencial, dois modos de privacidade.

Token Bearer LIVE

E-mail + senha · JWT · expiração em 24 horas

JWT de curta duração emitido por POST /v1/auth/login. Carrega claims de escopo e um ID de revogação de sessão. Renovável por 30 dias via /v1/auth/token/refresh.

Authorization: Bearer eyJhbGciOi••••
Chave de API com escopo LIVE

Duradouro · com escopo · revogável

Escopos: read-only, billing-read, billing-write, servers-read, servers-write, full. Lista de IPs permitidos opcional (CIDR), expiração opcional. Recomendado para CI e scripts de infraestrutura.

Authorization: Bearer nb_live_3f9c2a••••
TLS mútuo Planned v1.1

Certificado de cliente · empresarial / conformidade

Vincule um certificado de cliente mTLS a uma chave de API. As requisições que apresentam o certificado de cliente errado são rejeitadas na camada TLS antes que qualquer lógica de aplicação seja executada. Disponível sob solicitação pelo painel.

curl --cert client.pem --key client.key https://nordbastion.com/v1/servers
Respostas assinadas com PGP Planned v1.1

Assinatura destacada opt-in · verificável offline

Defina X-NB-Sign: 1 em qualquer requisição. O corpo da resposta é envolvido em uma assinatura PGP cleartext destacada usando a chave NordBastion (fingerprint em /pgp/). Utilizado por pipelines de conformidade que não confiam apenas na cadeia TLS.

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

A NordBastion não coleta identidade no cadastro, e a API não muda esse piso. Não há webhook de verificação por SMS, nenhum fluxo de confirmação por e-mail, nenhum endpoint de upload de documento de identidade. A API expõe dinheiro, máquinas e metadados — essa é toda a superfície.

Limites de taxa

Por chave, publicado por minuto

Endpoints de leitura
1000 / min
Endpoints de escrita
100 / min
Sensível à autenticação
10 / min
Tentativa após erro 429
Retry-After

Cada resposta carrega X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Tiers mais altos estão disponíveis sob solicitação no painel.

Versionamento

Piso de depreciação de doze meses

Os endpoints são versionados por URL em /v1/. Mudanças incompatíveis só são lançadas em uma nova versão principal. A versão principal anterior permanece suportada por pelo menos doze meses. Endpoints obsoletos carregam cabeçalhos de resposta Sunset e Deprecation.

Sunset: Wed, 01 Jul 2027 00:00:00 GMT Deprecation: true
Formato de erro

Envelope estável, código legível por máquina

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

Eventos assinados, com retentativas e backoff.

Cada payload de evento é assinado com HMAC usando seu segredo de webhook. Três tentativas de reenvio com backoff exponencial em uma hora, depois descartado. Entregas de teste disponíveis em 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 transparência

Acesso programático ao canário, ao log de incidentes, ao registro de peering.

A maioria das APIs de nuvem expõe produtos e cobrança. A NordBastion também expõe sua própria superfície de transparência — programaticamente. O mesmo warrant canary publicado em /warrant-canary/ está disponível como payload JSON assinado em /v1/transparency/canary. O mesmo histórico de incidentes que alimenta /status/ está em /v1/transparency/incidents. O mesmo registro de peering que vive em /peering/ está em /v1/transparency/peering. Os mesmos anúncios de prefixo AS213232 são consultáveis em tempo real.

Inscreva-se no webhook canary.updated e você receberá uma notificação push no primeiro dia de cada mês — se ele parar de disparar, o canário está comprometido, e você saberá sem precisar fazer polling. Construa o alerta você mesmo, em sua própria infraestrutura, com a assinatura criptográfica que você pode verificar offline contra a chave PGP publicada.

Esta é a parte da API que nenhuma cloud comercial possui, porque nenhuma cloud comercial tem a doutrina para respaldá-la.

FAQ · API

Perguntas de desenvolvedores, respondidas.

As perguntas que um desenvolvedor faz antes de comprometer infraestrutura à API de um host.

Existe realmente uma API e ela é KYC-free?

Sim — toda ação que você pode realizar no painel de controle tem um equivalente na API hoje ou no roadmap publicado, e a própria API é protegida pela mesma conta autenticada do painel: um e-mail e uma senha. Nenhuma verificação de identidade é necessária para obter ou usar credenciais da API.

Quais linguagens de programação têm SDKs oficiais?

Quatro SDKs oficiais e um 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 um CLI multiplataforma de binário único (nb) instalável via curl. Todos os SDKs são licenciados MIT e com código-fonte disponível.

Posso recarregar meu saldo a partir de código, em criptomoeda?

Sim. POST /v1/billing/topups cria uma intenção de recarga e retorna um endereço de destino por moeda, QR code e timestamp de expiração. Quando a rede confirma o pagamento, seu saldo pré-pago é creditado automaticamente e um webhook topup.confirmed dispara. Doze criptomoedas são suportadas, listadas em /v1/billing/coins.

Os endpoints da API são acessíveis pelo Tor?

O endpoint clearnet api.nordbastion.com é compatível com Tor hoje sem limites de taxa especiais ou bloqueio anti-Tor. Um espelho onion v3 da superfície da API está no roadmap do painel e compartilhará o mesmo material certificado TLS via cabeçalhos de resposta Onion-Location quando for lançado.

O que significa "respostas assinadas com PGP"?

Você pode optar por ativar corpos de resposta assinados com PGP na sua chave de API. Cada resposta JSON é envolvida em uma assinatura PGP cleartext destacada usando a chave NordBastion (fingerprint em /pgp/). O envoltório é verificável offline e é útil para conformidade e atestação de fonte em ambientes que desconfiam apenas da cadeia TLS.

Como os limites de taxa são aplicados?

Por chave de API. A linha base publicada é de 1000 requisições de leitura por minuto e 100 requisições de escrita por minuto, mais 10 requisições por minuto em endpoints sensíveis à autenticação (login, redefinição de senha, criação de chave). Cada resposta carrega os cabeçalhos X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset; respostas 429 incluem um cabeçalho Retry-After. Contas de desenvolvedor verificadas podem solicitar tiers mais altos pelo painel.

Como o versionamento funciona?

Os endpoints são versionados por URL em /v1/. Mudanças incompatíveis só são lançadas em uma nova versão principal (/v2/, /v3/) e a versão principal anterior permanece suportada por pelo menos doze meses após o lançamento da próxima. Endpoints obsoletos carregam um cabeçalho Sunset com a data de corte e um cabeçalho Deprecation: true em cada resposta.

Por que o log de auditoria é opt-in?

Porque a doutrina da NordBastion diz que registramos apenas o que precisamos. As métricas de requisição operacional vivem na janela deslizante que o limitador de taxa precisa e então expiram; um log de auditoria por cliente de ações de API é mais dados do que precisamos para operar a plataforma, portanto está desativado por padrão. Os clientes que quiserem podem ativar /v1/account/audit-log; uma vez ativado, cobre painel + API igualmente e pode ser exportado.

Pronto para automatizar

Obtenha uma chave de API no painel.

O mesmo piso de e-mail e senha do painel. Sem verificação de identidade. Pague em crypto. Inicialize um servidor em Stockholm, Helsinki, Oslo ou Reykjavík em aproximadamente noventa segundos.

URL base · https://nordbastion.com/v1/ · Estado · status operacional em tempo real · Looking glass · execute ping/MTR em tempo real