Un token, generato nel pannello
Inviato come bearer token. È possibile limitarne l'ambito alla sola lettura o a un singolo servizio; i token sono indipendenti dalla password, e revocarne uno non disconnette mai l'account.
JSON su HTTPS. Nessun SDK richiesto, nessun account sviluppatore separato, e nessun endpoint presente nel pannello ma non qui.
Creare un server
curl -X POST https://api.vpsoffshore.com/v1/servers \
-H "Authorization: Bearer $TOKEN" \
-d '{"plan":"reef","image":"debian-13"}'Restituisce immediatamente un id di configurazione. La macchina risponde su SSH circa sessanta secondi dopo, e l'indirizzo è instradato prima che le credenziali vengano inviate.
20 endpoint
URL di base https://api.vpsoffshore.com/v1. Versionato nel percorso; v1 continuerà a funzionare anche quando esisterà v2, e la data di interruzione sarà annunciata con un anno di anticipo.
Server
Archiviazione
Rete
Catalogo
Fatturazione
Tutto ciò che il pannello cliente può fare è qui, e nulla qui manca nel pannello cliente. Quando i due non coincidono si tratta di un bug — ce lo segnali dal pannello cliente e viene corretto invece di essere documentato come comportamento previsto.
Come si comporta
Un'API si giudica dai suoi percorsi peggiori, non da quelli migliori. Tre delle quattro voci seguenti riguardano cosa succede quando qualcosa va storto.
Un token, generato nel pannello
Inviato come bearer token. È possibile limitarne l'ambito alla sola lettura o a un singolo servizio; i token sono indipendenti dalla password, e revocarne uno non disconnette mai l'account.
JSON in ingresso, JSON in uscita, nessun SDK necessario
HTTPS puro, senza involucro personalizzato, senza fallback XML e senza rituali di firma. Se può farlo curl, Lei ha già un client. Esistono librerie ufficiali per Go, Python e TypeScript, e nessuna di esse è obbligatoria.
Limiti di frequenza che non si raggiungono per errore
600 richieste al minuto per token, 60 per le chiamate di creazione. Ogni risposta include il budget residuo in un header, e superarlo restituisce 429 con il numero di secondi da attendere — mai uno scarto silenzioso.
Errori che indicano cosa fare
Un 4xx contiene un codice leggibile da una macchina, una frase comprensibile e il campo responsabile dell'errore. Preferiamo restituire un errore lungo piuttosto che uno breve da indovinare.
Le due cose che si scrivono una sola volta
Entrambi meritano una lettura prima di scrivere la prima chiamata, non dopo il primo errore.
Autenticarsi
curl https://api.vpsoffshore.com/v1/servers \
-H "Authorization: Bearer $TOKEN"
I token vengono creati nel pannello e possono essere limitati alla sola lettura o a un singolo servizio. Sono indipendenti dalla password, e revocarne uno non disconnette da nessuna parte.
Consultare il rate limit
X-RateLimit-Remaining: 574
X-RateLimit-Reset: 41
Su ogni risposta, non solo su quella che fallisce. Il superamento del limite restituisce un 429 con i secondi di attesa, mai un blocco silenzioso e mai una risposta troncata.
Un errore indica il campo
{"error":"plan_unknown",
"message":"No plan named 'reff'. Did you mean 'reef'?",
"field":"plan"}
Un codice leggibile da una macchina, una frase comprensibile e il campo responsabile dell'errore. Gli errori lunghi costano meno di quelli brevi che si devono indovinare.
Interrogazione di una configurazione
curl https://api.vpsoffshore.com/v1/servers/$ID \
-H "Authorization: Bearer $TOKEN" | jq .state
Passa da building a running. Non è necessario registrare alcun webhook prima di poter creare qualcosa, e un polling di una volta al secondo rientra nel limite.
Nulla da richiedere
Nessun account sviluppatore, nessuna approvazione, nessun sandbox che si comporti diversamente dalla produzione.