Vai al contenuto
Per iniziare

Avvio rapido

Visualizza come Markdown Aggiornato

Esegui la tua prima generazione in pochi minuti. Tutti i 1496 modelli accettano lo stesso tipo di richiesta e restituiscono lo stesso oggetto richiesta, per immagini, video e audio: imparalo una volta qui.

1. Ottieni una chiave API

Crea una chiave in https://doitong.com/developers/dashboard#keys e conservala in una variabile d'ambiente: viene mostrata una sola volta. Ogni chiave può avere il proprio budget, quindi puoi assegnarne una a un agente senza rischiare l'intero account. GET /account restituisce il saldo API.

export DOITONG_API_KEY="doitong_..."

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

Le esecuzioni vengono pagate dal saldo API del tuo account in crediti API: 1000 crediti API = 1 $, e ogni modello costa esattamente il prezzo del suo produttore. Effettua una ricarica in https://doitong.com/developers/dashboard#balance.

2. Ottieni un preventivo, poi esegui

POST /quote/{model_id} accetta il JSON di input e restituisce il prezzo esatto. Non richiede una chiave e non costa nulla. Eseguire lo stesso input costa esattamente quella cifra: il preventivo corrisponde all'addebito. (Fa eccezione un modello addebitato in base all'utilizzo: il suo preventivo è il costo massimo dell'esecuzione e la parte non utilizzata viene rimborsata al termine.)

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 · preventivo
{
  "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"
}

Invia quindi lo stesso corpo a POST /run/{model_id}. Aggiungi ?wait=20 per mantenere la connessione aperta fino a 20 secondi: un modello veloce restituisce il risultato completato in un solo round trip. Invia un'intestazione Idempotency-Key affinché un nuovo tentativo non esegua (o addebiti) mai due volte.

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"}'

La risposta è un oggetto richiesta:

200 OK · richiesta
{
  "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. Segui lo stato

Se il modello sta ancora lavorando al termine dell'attesa, ricevi 202 Accepted con l'id della richiesta e il suo status corrente. Ogni richiesta attraversa lo stesso ciclo di vita:

Ciclo di vita della richiesta
  1. queued Accettata e addebitata, in attesa di un worker
  2. running Il modello sta generando
  3. Stati finali:
    • succeededAddebitato il preventivo; outputs[] contiene gli URL nel nostro spazio di archiviazione
    • failedRimborsata automaticamente; l'errore ne indica il motivo
    • canceledInterrotta prima di un risultato; rimborsata

Leggi di nuovo la richiesta usando il suo id. Anche qui funziona ?wait=20, quindi basta un semplice ciclo:

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

Quando status è succeeded, outputs[].url contiene i collegamenti ai file nella nostra archiviazione. Se la richiesta è failed o canceled, i relativi crediti API vengono rimborsati automaticamente e error indica il motivo. Annulla qualsiasi elemento ancora queued o running:

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

Per i processi video lunghi puoi evitare il polling e passare invece un webhook_url (vedi Webhooks).

4. File

Passa qualsiasi URL pubblico come input oppure chiedi a POST /files un URL di caricamento, esegui PUT del file e usa il file_url restituito (vedi Files). Una richiesta riuscita elenca i risultati in outputs[] con tipo, tipo di contenuto e, quando noti, dimensioni e durata.

terminale
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}'

Errori

Ogni modello fallisce allo stesso modo: un unico involucro con un type, un code esatto, il param problematico e ogni problema in details, così un agente può correggere la richiesta senza leggere prosa. Una richiesta non valida non comporta alcun addebito.

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"
  }
}

Tutti i tipi e i codici sono elencati in Errors.

Prezzi

I prezzi sono espressi in USD e crediti API e vengono mostrati in ogni pagina del modello prima dell'esecuzione. Ogni richiesta contiene cost con credits, usd, charged e refunded. Un'esecuzione viene addebitata quando viene accettata; le richieste failed e canceled vengono rimborsate automaticamente. Alcuni modelli hanno un prezzo calcolato esattamente dall'input, alcuni dalla durata o dalle dimensioni dei file inviati, altri applicano un prezzo stimato per esecuzione: in ogni caso paghi il preventivo. Alcuni modelli (modelli linguistici e di visione, voce, strumenti basati sul tempo di elaborazione) sono addebitati in base all'utilizzo: il preventivo è il costo massimo dell'esecuzione e la parte non utilizzata viene rimborsata automaticamente. Vedi Pricing.

MCP e agenti AI

Collega qualsiasi client MCP a https://api.doitong.com/v1/mcp usando la stessa chiave Bearer. Il tuo agente può cercare nel catalogo, ottenere preventivi ed eseguire modelli e leggere ogni pagina della documentazione in Markdown.

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

Passaggi successivi