Al doilea operator de tranzit activ în Chișinău — 20 Gbps de capacitate mixtă. 20 Gbps uplink mixt, acum live De ce Republica Moldova

Un singur token, și tot ce poate face panoul

JSON prin HTTPS. Nu este necesar niciun SDK, niciun cont de dezvoltator separat și niciun endpoint care există în panou, dar nu și aici.

Creați un server

curl -X POST https://api.vpsoffshore.com/v1/servers \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"plan":"reef","image":"debian-13"}'

Returnează imediat un ID de build. Mașina răspunde pe SSH aproximativ șaizeci de secunde mai târziu, iar adresa este rutată înainte ca credențialele să fie trimise.

20 de endpointuri

Totul, în cinci grupe

URL de bază https://api.vpsoffshore.com/v1. Versionată în cale; v1 va continua să funcționeze atât timp cât există v2, iar data la care se oprește va fi anunțată cu un an înainte.

Servere

GET /servers Fiecare serviciu din cont, cu stare, plan și adrese.
POST /servers Creați unul. Returnează imediat un id de build; serverul devine accesibil cam un minut mai târziu.
GET /servers/{id} Un singur serviciu, inclusiv utilizarea resurselor în timp real din ultima oră.
PATCH /servers/{id} Schimbați planul. Redimensionare fără reinstalare, acolo unde discul permite.
DELETE /servers/{id} Distrugeți-l. Discurile sunt păstrate 14 zile, apoi șterse înainte de reemisie.
POST /servers/{id}/actions reboot · shutdown · start · rebuild · rescue · reset-password.

Stocare

GET /servers/{id}/snapshots Instantanee pentru un serviciu, cele mai noi primele.
POST /servers/{id}/snapshots Faceți unul. Subțire, ca să fie rapid și să nu vă dubleze spațiul de disc utilizat.
POST /snapshots/{id}/restore Restaurați la fața locului, sau pe un alt serviciu din același plan sau unul superior.
DELETE /snapshots/{id} Ștergeți un instantaneu.

Rețea

GET /servers/{id}/addresses Adrese rutate către un serviciu, v4 și v6.
POST /servers/{id}/addresses Solicitați o adresă suplimentară, sau un /29.
PUT /addresses/{ip}/rdns Setați reverse DNS. Intră în vigoare în decurs de un minut, nu la următoarea reîmprospătare a zonei.
GET /servers/{id}/bandwidth Contoare de transfer. Informative — nu există o limită de depășit.

Catalog

GET /plans Fiecare plan cu specificația și prețul său. Aceeași sursă din care este generat acest site.
GET /images Imagini și fișiere ISO disponibile, inclusiv cele încărcate de dumneavoastră.
POST /images Încărcați un ISO printr-un URL. Pornește cu o consolă atașată.

Facturare

GET /invoices Facturile, plătite și restante, cu moneda și tranzacția din rețea.
POST /invoices/{id}/pay Generați o adresă de plată pentru una dintre cele 8 monede acceptate.
GET /credits Compensații SLA acordate, împreună cu incidentul care a generat fiecare dintre ele.

Tot ce poate face panoul se regăsește aici, iar nimic de aici nu lipsește din panou. Când cele două nu coincid, este o eroare — spuneți-ne din panou și este reparată, nu documentată drept comportament intenționat.

Cum se comportă

Patru decizii pe care le veți observa în decurs de o oră

Un API se judecă după căile sale proaste, nu după cele bune. Trei dintre cele patru de mai jos privesc ceea ce se întâmplă atunci când ceva nu merge bine.

Un singur token, generat în panoul de client

Trimis ca token de tip bearer. Îl puteți limita la citire sau la un singur serviciu, dacă doriți; token-urile sunt independente de parola dumneavoastră, iar revocarea unuia nu vă deloghează niciodată.

JSON la intrare, JSON la ieșire, fără SDK necesar

HTTPS simplu, fără plic personalizat, fără fallback XML și fără ritual de semnare. Dacă poate face curl, aveți un client. Există biblioteci oficiale pentru Go, Python și TypeScript, și niciuna dintre ele nu este obligatorie.

Limite de rată pe care nu le veți atinge din greșeală

600 de cereri pe minut per token, 60 pentru apelurile de creare. Fiecare răspuns transportă bugetul rămas într-un header, iar depășirea lui returnează 429 cu numărul de secunde de așteptare — niciodată o eliminare silențioasă.

Erori care spun ce trebuie făcut

Un 4xx conține un cod care poate fi citit automat, o propoziție inteligibilă pentru om și câmpul vinovat. Preferăm să returnăm o eroare lungă decât una scurtă pe care trebuie să o ghiciți.

Cele două lucruri pe care le scrieți o singură dată

Autentificare și cum arată o eroare

Ambele merită citite înainte să scrieți primul apel, nu după primul eșec.

Autentificare

curl https://api.vpsoffshore.com/v1/servers \
  -H "Authorization: Bearer $TOKEN"

Token-urile se creează în panou și pot fi limitate la doar citire sau la un singur serviciu. Sunt independente de parola dumneavoastră, iar revocarea unuia nu vă deconectează de nicăieri.

Citiți despre limita de rată

X-RateLimit-Remaining: 574
X-RateLimit-Reset: 41

La fiecare răspuns, nu doar la cel care eșuează. Depășirea limitei returnează 429 cu numărul de secunde de așteptat, niciodată o pierdere silențioasă și niciodată un răspuns scurtat.

O eroare vă indică exact câmpul

{"error":"plan_unknown",
 "message":"No plan named 'reff'. Did you mean 'reef'?",
 "field":"plan"}

Un cod interpretabil automat, o propoziție pe înțelesul oamenilor și câmpul vinovat. Erorile lungi costă mai puțin decât cele scurte pe care trebuie să le ghiciți.

Interogați starea unei configurații

curl https://api.vpsoffshore.com/v1/servers/$ID \
  -H "Authorization: Bearer $TOKEN" | jq .state

Trece de la buildingrunning. Nu trebuie să înregistrați niciun webhook înainte de a putea crea ceva, iar interogarea (polling) o dată pe secundă se încadrează în limită.

Nimic de solicitat

Token-ul se află în panou, iar panoul vine odată cu primul server

Fără cont de dezvoltator, fără aprobare, fără sandbox care se comportă diferit de producție.

Limbă

Citiți acest site în limba dumneavoastră

Disponibil în 28 de limbi în prezent. Restul sunt în curs de traducere.