Przejdź do treści
Przewodnik po API

Uwierzytelnianie

Wyświetl jako Markdown Zaktualizowano

Każde wywołanie, które uruchamia model lub odczytuje żądania, wymaga klucza API. Katalog (GET /models, GET /categories), POST /quote i dokument OpenAPI są publiczne.

Klucze API

Twórz i unieważniaj klucze na stronie https://doitong.com/developers/dashboard#keys. Klucz ma postać doitong_ po którym następuje 64 znaków szesnastkowych, i jest wyświetlany tylko raz — podczas tworzenia. Wysyłaj go w nagłówku Authorization:

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

X-API-Key: <key> również działa.

Żądanie bez klucza otrzymuje 401 z kodem missing_api_key; nieznany, unieważniony lub wygasły klucz również otrzymuje 401.

Zakresy

Każdy klucz ma przypisane zakresy. API modeli sprawdza następujące zakresy:

Działanie Wymagany zakres
Uruchomienie modelu, anulowanie żądania, usunięcie plików żądania, zmiana ustawienia przestrzeni dyskowej models:run (działają również klucze ze starszymi zakresami images:create lub videos:create)
Utworzenie URL przesyłania models:run lub media:upload
Odczyt żądań i konta models:read (klucz, który może uruchamiać modele, również może je odczytywać)

Nowe klucze domyślnie otrzymują models:read i models:run. Wywołanie bez odpowiedniego zakresu otrzymuje 403 z kodem insufficient_scope.

Budżety kredytów

Klucz może mieć własny budżet w kredytach API (1000 kredytów API = 1 $), ustawiony przez właściciela konta: łączny budżet, budżet na dzień (ostatnie 24 godziny) albo oba. Przed naliczeniem opłaty za uruchomienie koszt jest porównywany z kwotą, którą klucz już wydał za pośrednictwem tego API (po uwzględnieniu zwrotów). Uruchomienie, które przekroczyłoby limit, zostaje odrzucone z komunikatem 402 budget_exceeded, a opłata nie jest naliczana.

Klucz bez budżetu może wydać maksymalnie saldo API. Niezależnie od tego uruchomienie, którego nie można pokryć z salda API, otrzymuje 402 insufficient_credits z top_up_url.

GET https://api.doitong.com/v1/account pokazuje saldo API i pozostały budżet klucza (oba w kredytach API):

200 OK · konto
{
  "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 ma wartość null, gdy klucz nie ma własnego budżetu.

Limity szybkości

Każdy klucz może wykonywać 3600 żądań na godzinę, chyba że ustawiono dla niego inny limit. Każda uwierzytelniona odpowiedź zawiera bieżący stan:

Nagłówek Znaczenie
X-RateLimit-Limit Liczba żądań dozwolonych w bieżącym oknie
X-RateLimit-Remaining Liczba żądań pozostałych w bieżącym oknie
X-RateLimit-Reset Czas uniksowy resetowania okna

Po przekroczeniu limitu otrzymasz 429 z nagłówkiem Retry-After (sekundy). Długie odpytywanie z ?wait= jest liczone jako jedno żądanie na wywołanie, więc oczekiwanie jest tańsze niż szybkie odpytywanie.

Obowiązuje również limit 10 żądań przetwarzanych jednocześnie (queued lub running) na konto. Rozpoczęcie kolejnego zwraca 429 too_many_inflight; uruchom je ponownie po zakończeniu jednego z nich.