AGAnchorGPU

Ontwikkelaars

API-referentie

Authenticeer met een sessie- of API-sleutel en gebruik de geïmplementeerde account-, offerte-, instantie- en factureringseindpunten.

8 min leestijd · Bijgewerkt

Authenticatie

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.

MethodePad na /api/v1Doel
POST/auth/register · /auth/loginGebruikersnaam + wachtwoord; een sessie aanmaken
POST/auth/recoverGebruikersnaam + ongebruikte code + nieuw wachtwoord
POST/auth/logoutHuidige browsersessie intrekken
GET/me · /balance · /ledgerAccount, saldo en laatste 100 boekingen
GET / DELETE/sessions · /sessions/:idActieve sessies weergeven of een sessie intrekken
GET/availabilityOpenbare catalogus en regionale voorraadmomentopname
GET / POST/deposit-quotesToon actieve quotes of maak er een met asset + desiredUsdCents
POST/demo/confirm-depositOfferte-ID; alleen lokale ontwikkeling
GET/deposits · /withdrawalsLaatste 100 records voor dit account
POST/withdrawalsAsset + bestemming + amountUsdCents; idempotent
POST/instance-quotesGPU, aantal, regio, image, periode en opties
GET / POST/instancesToon toewijzingen of implementeer; implementatie is idempotent
POST/instances/:id/start · stop · release · renewLevenscyclusactie; verlenging is idempotent
PATCH/instances/:id/auto-renewStel enabled in op true of false
GET / POST/ssh-keys · /api-keysAccountsleutels weergeven of aanmaken
DELETE/ssh-keys/:id · /api-keys/:idEen 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.

Een API-sleutel maken