Kimlik doğrulama
Bir modeli çalıştıran veya isteklerinizi okuyan her çağrı için API anahtarı gerekir. Katalog (GET /models, GET /categories), POST /quote ve OpenAPI belgesi herkese açıktır.
API anahtarları
https://doitong.com/developers/dashboard#keys adresinden anahtar oluşturun ve iptal edin. Bir anahtar, doitong_ ile başlayan 64 onaltılık karakterden oluşur ve oluşturduğunuz anda yalnızca bir kez gösterilir. Anahtarı Authorization başlığında gönderin:
curl https://api.doitong.com/v1/account -H "Authorization: Bearer $DOITONG_API_KEY"
X-API-Key: <key> de çalışır.
Anahtarsız bir istek, missing_api_key koduyla 401 alır; bilinmeyen, iptal edilmiş veya süresi dolmuş bir anahtar da 401 alır.
Kapsamlar
Her anahtar kapsamlar taşır. Model API'si bunları denetler:
| Eylem | Gerekli kapsam |
|---|---|
| Bir modeli çalıştırma, bir isteği iptal etme, isteğin dosyalarını silme, depolama ayarını değiştirme | models:run (daha eski images:create veya videos:create kapsamlarına sahip anahtarlar da çalışır) |
| Yükleme URL'si oluşturma | models:run veya media:upload |
| İstekleri ve hesabı okuma | models:read (modelleri çalıştırabilen bir anahtar da okuyabilir) |
Yeni anahtarlara varsayılan olarak models:read ve models:run verilir. Doğru kapsam olmadan yapılan bir çağrı, insufficient_scope koduyla 403 alır.
Kredi bütçeleri
Bir anahtar, hesap sahibi tarafından belirlenen API kredisi cinsinden kendi bütçesini taşıyabilir (1.000 API kredisi = $1): toplam bütçe, günlük bütçe (son 24 saat) veya her ikisi. Bir çalıştırma ücretlendirilmeden önce maliyet, anahtarın bu API üzerinden şimdiye kadar harcadığı tutarla (iadeler düşüldükten sonra) karşılaştırılır. Bütçeyi aşacak bir çalıştırma 402 budget_exceeded ile reddedilir ve ücret alınmaz.
Bütçesi olmayan bir anahtar, API bakiyesine kadar harcama yapabilir. Ayrıca API bakiyesinin karşılayamadığı bir çalıştırma, top_up_url ile birlikte 402 insufficient_credits alır.
GET https://api.doitong.com/v1/account, API bakiyesini ve anahtarın kalan bütçesini (ikisi de API kredisi cinsinden) gösterir:
{
"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_..."
}
Anahtarın kendine ait bütçesi olmadığında budget_remaining değeri null olur.
Hız sınırları
Her anahtar, sınırı farklı ayarlanmadıysa saatte 3600 istek yapabilir. Kimliği doğrulanmış her yanıt mevcut durumu içerir:
| Başlık | Anlamı |
|---|---|
X-RateLimit-Limit |
Mevcut pencerede izin verilen istek sayısı |
X-RateLimit-Remaining |
Mevcut pencerede kalan istek sayısı |
X-RateLimit-Reset |
Pencerenin sıfırlanacağı Unix zamanı |
Sınırı aşarsanız Retry-After başlığıyla birlikte 429 alırsınız (saniye). ?wait= ile uzun yoklama, çağrı başına bir istek sayılır; bu nedenle beklemek, sık aralıklarla yoklama yapmaktan daha ekonomiktir.
Ayrıca hesap başına ilerleme durumunda (queued veya running) en fazla 10 istek olabilir. Bir istek daha başlatmak 429 too_many_inflight döndürür; biri tamamlandıktan sonra yeniden başlatın.