Naar inhoud springen
Aan de slag

Snelstart

Als Markdown bekijken Bijgewerkt

Voer je eerste generatie uit in enkele minuten. Alle 1.496 modellen gebruiken hetzelfde type request en retourneren hetzelfde requestobject voor afbeeldingen, video en audio: leer het hier één keer.

1. Een API-sleutel ophalen

Maak een sleutel aan op https://doitong.com/developers/dashboard#keys en bewaar deze in een environmentvariabele: hij wordt maar één keer weergegeven. Elke sleutel kan een eigen budget hebben, zodat je er een aan een agent kunt geven zonder risico voor het volledige account. GET /account retourneert je API-saldo.

export DOITONG_API_KEY="doitong_..."

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

Runs worden betaald uit het API-saldo van je account in API-credits: 1.000 API-tegoed = $ 1, en elk model kost exact de prijs van de maker. Waardeer op via https://doitong.com/developers/dashboard#balance.

2. Offerte opvragen en vervolgens uitvoeren

POST /quote/{model_id} neemt de JSON-invoer en retourneert de exacte prijs. Er is geen sleutel nodig en er zijn geen kosten aan verbonden. Dezelfde invoer uitvoeren kost precies dat bedrag: de offerte is de afschrijving. (Een model dat op basis van gebruik wordt afgerekend is de uitzondering: de offerte is het maximale bedrag dat de run kan kosten, en het ongebruikte deel wordt na de run terugbetaald.)

curl -X POST "https://api.doitong.com/v1/quote/kling-video/v3/pro/image-to-video" \
  -H "Content-Type: application/json" \
  -d '{"image": "https://example.com/fox.jpg", "duration": 5, "generate_audio": true}'
200 OK · offerte
{
  "object": "quote",
  "model": "kling-video/v3/pro/image-to-video",
  "credits": 840,
  "usd": "0.84",
  "unit": "second",
  "quantity": 5,
  "unit_credits": 168,
  "mode": "exact",
  "breakdown": "5 s × 168 API credits"
}

Verzend vervolgens dezelfde body naar POST /run/{model_id}. Voeg ?wait=20 toe om de verbinding maximaal 20 seconden open te houden: een snel model retourneert het voltooide resultaat in één roundtrip. Verzend een Idempotency-Key-header zodat een retry nooit twee keer wordt uitgevoerd (of in rekening gebracht).

curl -X POST "https://api.doitong.com/v1/run/flux/schnell?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: lighthouse-001" \
  -d '{"prompt": "A lighthouse on a rocky coast at dusk, warm light in the window"}'

De response is een requestobject:

200 OK · request
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "flux/schnell",
  "status": "succeeded",
  "cost": { "credits": 3, "usd": "0.003", "charged": 3, "refunded": 0 },
  "outputs": [
    { "type": "image", "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg", "width": 1024, "height": 768, "stored": true }
  ],
  "error": null
}

3. De status volgen

Als het model nog bezig is wanneer de wachttijd eindigt, ontvang je 202 Accepted met de id en huidige status van het request. Elk request doorloopt dezelfde levenscyclus:

Levenscyclus van een request
  1. queued Geaccepteerd en in rekening gebracht, wacht op een worker
  2. running Het model genereert
  3. Eindstatussen:
    • succeededOfferte in rekening gebracht; outputs[] bevatten URL's in onze opslag
    • failedAutomatisch terugbetaald; de fout vermeldt waarom
    • canceledGestopt voordat er een resultaat was; terugbetaald

Lees het request opnieuw met zijn id. ?wait=20 werkt hier ook, dus een eenvoudige lus volstaat:

curl "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"

Wanneer status succeeded is, bevat outputs[].url links naar de bestanden in onze opslag. Als het request failed of canceled is, worden de API-credits automatisch terugbetaald en geeft error de reden aan. Annuleer alles wat nog queued of running is:

terminal
curl -X POST "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel" \
  -H "Authorization: Bearer $DOITONG_API_KEY"

Voor lange videoruns kun je polling overslaan en in plaats daarvan een webhook_url doorgeven (zie Webhooks).

4. Bestanden

Geef een openbare URL door als invoer, of vraag POST /files om een upload-URL, voer daar een PUT uit met het bestand en gebruik de geretourneerde file_url (zie Bestanden). Een geslaagd request vermeldt de resultaten in outputs[] met type, contenttype en, indien bekend, afmetingen en duur.

terminal
curl -X POST "https://api.doitong.com/v1/files" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "fox.jpg", "content_type": "image/jpeg", "size": 482113}'

Fouten

Elk model mislukt op dezelfde manier: één envelop met een type, een exacte code, de betreffende param en elk probleem in details, zodat een agent het request kan herstellen zonder proza te lezen. Voor een ongeldig request worden geen kosten in rekening gebracht.

422 Unprocessable Entity
{
  "error": {
    "type": "invalid_request",
    "code": "invalid_input",
    "message": "duration must be one of 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.",
    "param": "duration",
    "details": [ { "param": "duration", "message": "duration must be one of 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15." } ],
    "request_id": null,
    "doc_url": "https://doitong.com/developers/docs/errors#invalid_input"
  }
}

Elk type en elke code staat vermeld in Fouten.

Prijzen

Prijzen zijn in USD en API-credits en worden vóór uitvoering op elke modelpagina weergegeven. Elk request bevat cost met credits, usd, charged en refunded. Een run wordt in rekening gebracht zodra deze is geaccepteerd; failed en canceled requests worden automatisch terugbetaald. Sommige modellen worden exact op basis van de invoer geprijsd, sommige op basis van de lengte of grootte van de bestanden die je verzendt, en bij andere geldt een geschatte prijs per run: in alle gevallen is de offerte het bedrag dat je betaalt. Enkele modellen (taal- en visiemodellen, spraak- en verwerkingstijdtools) worden op basis van gebruik afgerekend: de offerte is het maximale bedrag dat de run kan kosten, en het deel dat de run niet heeft gebruikt wordt automatisch terugbetaald. Zie Prijzen.

MCP en AI-agents

Verbind elke MCP-client met https://api.doitong.com/v1/mcp met dezelfde Bearer-sleutel. Je agent kan de catalogus doorzoeken, offertes opvragen en modellen uitvoeren, en elke documentatiepagina als Markdown lezen.

Claude Code
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Volgende stappen