Auth & Tokens
API erişim tokenları, scope'lar ve güvenlik.
Token türleri
1. JWT (plugin için)
- Süresi: 30 gün
- Format: Standart JWT (HMAC-SHA256)
- Payload:
{ sub: user_id, email, device_id, exp } - Alma: Plugin sayfası
- Sızıntı: Logout veya parola değişimi tüm JWT'leri geçersiz kılmaz — sadece API key revoke edilebilir
2. API Key (programatik)
- Süresi: Süresiz (manuel revoke)
- Format:
ff_<prefix>_<secret>— bir kez gösterilir, hash'i saklanır (Argon2ID) - Scope'lar:
jobs.submit,jobs.read(gelecekte daha granular) - Alma: API Anahtarları sayfası
- Sızıntı: Anında revoke et + yeni key üret
İlk API çağrısı (örnek)
curl https://fcafarm.com/asset-api/render/balance \
-H "Authorization: Bearer ff_abc12345_xxxxxxxxxxxxxxxxxxxx"
# Yanıt
{ "balance_credits": 478.50 }
Python örnek (requests)
import requests
API_KEY = "ff_abc12345_xxxxxxxxxxxxxxxxxxxx"
BASE = "https://fcafarm.com/asset-api"
headers = {"Authorization": f"Bearer {API_KEY}"}
# Bakiye sorgu
r = requests.get(f"{BASE}/render/balance", headers=headers)
print(r.json())
# İş listesi
r = requests.get(f"{BASE}/render/jobs?status=active", headers=headers)
for job in r.json()["jobs"]:
print(job["id"], job["name"], job["status"])
Rate limit
- Auth endpoints: 30 req/dakika
- API genel: 100 req/dakika
- Upload chunk: 600 req/dakika (60 dosya parça)
- Sınır aşıldığında: HTTP 429 + Retry-After header
Güvenlik best practices
- API key'i sadece sunucu tarafı kodda kullan — frontend'e koyma
- Environment variable ya da secrets manager kullan
- Her ortam (dev/staging/prod) için ayrı key
- Eski key'leri revoke et
- HTTPS dışı kullanma