Ontwikkelaars
API-referentie
Authenticeer met een sessie- of API-sleutel en gebruik de geïmplementeerde account-, offerte-, instantie- en factureringseindpunten.
8 min leestijd · BijgewerktAuthenticatie
Het basispad is /api/v1. Browserverzoeken gebruiken de HttpOnly-sessiecookie die bij het aanmelden wordt aangemaakt. Scripts kunnen Authorization: Bearer gebruiken, gevolgd door een actieve API-sleutel. Sleutels hebben volledige accountrechten en worden eenmalig getoond bij het aanmaken.
De lokale UI gebruikt gh_demo_-sleutels. Het intrekken van een sleutel voorkomt onmiddellijk nieuwe geauthenticeerde verzoeken die deze gebruiken. Plaats geen sleutels in URL's of browserbundels.
GET /api/v1/balance
Authorization: Bearer <your-api-key>
200 OK
{ "currency": "USD", "balanceCents": 50000, "derivedFrom": "ledger_entries" }Regels voor aanvragen en opnieuw proberen
POST- en PATCH-bodies zijn JSON-objecten, met Content-Type: application/json. Stuur {} voor acties zonder parameters. Bodies zijn beperkt tot 32 KiB tekst. Antwoorden gebruiken Cache-Control: no-store.
Implementatie, handmatige verlenging en opname vereisen een Idempotency-Key van 8–128 tekens. Gebruik een nieuwe sleutel voor een nieuwe beoogde bewerking en hergebruik dezelfde sleutel voor de nieuwe poging ervan. Hergebruik deze nooit met een andere body. Een replay-antwoord bevat replayed: true.
Instance-offertes berekenen de huidige catalogusprijs zonder capaciteit te reserveren. Stuur expectedPriceCents mee bij implementatie; een afwijking retourneert 409, zodat de prijs opnieuw kan worden bekeken.
POST /api/v1/instances
Content-Type: application/json
Idempotency-Key: <unique-operation-id>
Authorization: Bearer <your-api-key>
{
"sku": "nvidia-rtx-4090",
"gpuCount": 1,
"region": "dal",
"image": "pytorch",
"period": "week",
"options": [],
"sshKeyId": "<saved-key-id>",
"autoRenew": false,
"expectedPriceCents": 11000
}Geïmplementeerde eindpunten
Alle accountresources zijn beperkt tot hun eigenaar. Het beschikbaarheidseindpunt is openbaar en toont de catalogusmomentopname, geen live hardwareprobe.
| Methode | Pad na /api/v1 | Doel |
|---|---|---|
| POST | /auth/register · /auth/login | Gebruikersnaam + wachtwoord; een sessie aanmaken |
| POST | /auth/recover | Gebruikersnaam + ongebruikte code + nieuw wachtwoord |
| POST | /auth/logout | Huidige browsersessie intrekken |
| GET | /me · /balance · /ledger | Account, saldo en laatste 100 boekingen |
| GET / DELETE | /sessions · /sessions/:id | Actieve sessies weergeven of een sessie intrekken |
| GET | /availability | Openbare catalogus en regionale voorraadmomentopname |
| GET / POST | /deposit-quotes | Toon actieve quotes of maak er een met asset + desiredUsdCents |
| POST | /demo/confirm-deposit | Offerte-ID; alleen lokale ontwikkeling |
| GET | /deposits · /withdrawals | Laatste 100 records voor dit account |
| POST | /withdrawals | Asset + bestemming + amountUsdCents; idempotent |
| POST | /instance-quotes | GPU, aantal, regio, image, periode en opties |
| GET / POST | /instances | Toon toewijzingen of implementeer; implementatie is idempotent |
| POST | /instances/:id/start · stop · release · renew | Levenscyclusactie; verlenging is idempotent |
| PATCH | /instances/:id/auto-renew | Stel enabled in op true of false |
| GET / POST | /ssh-keys · /api-keys | Accountsleutels weergeven of aanmaken |
| DELETE | /ssh-keys/:id · /api-keys/:id | Een sleutel intrekken |
Fouten expliciet afhandelen
Fouten hebben {error, message}: een stabiele code en een leesbare uitleg. 400 duidt op ongeldige invoer, 401 op ontbrekende of ongeldige authenticatie, 403 op een afgewezen oorsprong, 404 op een onbekende of niet-eigen resource, 409 op een saldo/state/duplicate-conflict en 415 op het verkeerde inhoudstype.
Maak voor een verlopen borgofferte een nieuwe offerte aan. Laad bij een gewijzigde instancestatus de instance opnieuw voordat u een andere actie onderneemt. Hergebruik na een netwerkonderbreking de bewerkingssleutel in plaats van een tweede afschrijving te creëren.