Naar inhoud springen
API-handleiding

Authenticatie

Als Markdown bekijken Bijgewerkt

Elke aanroep die een model uitvoert of je requests leest, heeft een API-sleutel nodig. De catalogus (GET /models, GET /categories), POST /quote en het OpenAPI-document zijn openbaar.

API-sleutels

Maak sleutels aan en trek ze in via https://doitong.com/developers/dashboard#keys. Een sleutel ziet eruit als doitong_ gevolgd door 64 hexadecimale tekens en wordt alleen weergegeven wanneer je hem aanmaakt. Verzend hem in de Authorization-header:

terminal
curl https://api.doitong.com/v1/account -H "Authorization: Bearer $DOITONG_API_KEY"

X-API-Key: <key> werkt ook.

Een request zonder sleutel krijgt 401 met code missing_api_key; een onbekende, ingetrokken of verlopen sleutel krijgt ook 401.

Scopes

Elke sleutel bevat scopes. De model-API controleert deze:

Actie Vereiste scope
Een model uitvoeren, een request annuleren, de bestanden van een request verwijderen, de opslaginstelling wijzigen models:run (sleutels met het oudere images:create of videos:create werken ook)
Een upload-URL aanmaken models:run of media:upload
Requests en account lezen models:read (een sleutel waarmee modellen mogen worden uitgevoerd kan ook lezen)

Nieuwe sleutels krijgen standaard models:read en models:run. Een aanroep zonder de juiste scope krijgt 403 met code insufficient_scope.

Creditbudgetten

Een sleutel kan een eigen budget in API-credits hebben (1.000 API-tegoed = $ 1), ingesteld door de accounteigenaar: een totaalbudget, een dagbudget (laatste 24 uur), of beide. Voordat een run in rekening wordt gebracht, wordt de kostprijs vergeleken met wat de sleutel al via deze API heeft uitgegeven (na aftrek van terugbetalingen). Een run die het budget zou overschrijden wordt geweigerd met 402 budget_exceeded en er worden geen kosten in rekening gebracht.

Een sleutel zonder budget kan tot het API-saldo uitgeven. Los daarvan krijgt een run die niet door het API-saldo kan worden gedekt 402 insufficient_credits met een top_up_url.

GET https://api.doitong.com/v1/account toont het API-saldo en het resterende budget van de sleutel (beide in API-credits):

200 OK · account
{
  "object": "account",
  "credits": 125000,
  "balance": { "credits": 125000, "usd": "125.00" },
  "top_up_url": "https://doitong.com/developers/dashboard#balance",
  "key": {
    "name": "Production server",
    "prefix": "doitong_3fa9c1e...",
    "scopes": ["models:read", "models:run"],
    "budget_remaining": 50000,
    "rate_limit": 3600,
    "rate_limit_remaining": 3571
  },
  "webhook_signing_secret": "whsec_..."
}

budget_remaining is null wanneer de sleutel geen eigen budget heeft.

Snelheidslimieten

Elke sleutel mag 3600 requests per uur uitvoeren, tenzij de limiet anders is ingesteld. Elke geauthenticeerde response bevat de huidige status:

Header Betekenis
X-RateLimit-Limit Toegestane requests in het huidige venster
X-RateLimit-Remaining Resterende requests in het huidige venster
X-RateLimit-Reset Unix-tijdstip waarop het venster wordt gereset

Bij overschrijding van de limiet krijg je 429 met een Retry-After-header (seconden). Long polling met ?wait= telt als één request per aanroep, dus wachten is goedkoper dan snel pollen.

Er is ook een limiet van 10 requests die per account tegelijk worden uitgevoerd (queued of running). Een elfde request retourneert 429 too_many_inflight; start het opnieuw nadat er een is voltooid.