Dokümantasyon
Kullanım API'si
İsteği yapan API anahtarına ait token sayılarını ve maliyeti sorgulayın. Her anahtar yalnızca kendi verilerine erişebilir; başka anahtarların verilerine erişim yoktur. Kendi faturalandırma panolarınızı, aylık mutabakatınızı veya maliyet uyarılarınızı oluşturmak için kullanın.
GET /v1/usage, Authorization başlığında yer alan API anahtarı için toplam token ve maliyet değerlerini döndürür. Gün veya saat bazında gruplayabilir, isteğe bağlı olarak modele göre ayırabilirsiniz. Başka bir anahtarın verilerini okumak mümkün değildir — bunun için panele giriş yapın.
Kimlik doğrulama
Kullanımını okumak istediğiniz Kunavo API anahtarını Bearer token olarak iletin. Uç nokta, yalnızca bu belirli anahtara faturalandırılan kullanımı döndürür — başka bir anahtarın verilerini istemek için herhangi bir parametre yoktur.
İstek
| Parametre | Gerekli | Varsayılan | Notlar |
|---|---|---|---|
start_date | yes | — | YYYY-MM-DD, UTC. Başlangıç ve bitiş tarihleri dahildir. Bugünün (UTC) tarihi veya öncesi olmalıdır. |
end_date | yes | — | YYYY-MM-DD, UTC. Başlangıç ve bitiş tarihleri dahildir. Bugünden sonraki bir tarih bugün olarak okunur; yanıt, kullanılan end_date değerini yineler. |
bucket | no | day | day, hour değerlerinden biri. |
group_by | no | (none) | Virgülle ayrılmış. Desteklenenler: model. Her aralık için tek satır almak üzere bu alanı belirtmeyin. |
bucket=day en çok 90 günü; bucket=hour en çok 7 günü kabul eder. Bu sınırların aşılması isteğin 400 invalid_request_error hatasıyla sonuçlanmasına yol açar — verileri birden fazla çağrıyla alın.tz= parametresi, mevcut hiçbir alanı değiştirmeden bu işlemi sunucu tarafında yapacak.Örnekler
Son 30 günün günlük toplamları, tüm modeller bir arada:
# Daily totals for the last 30 days
curl https://api.kunavo.com/v1/usage \
-G \
-H "Authorization: Bearer $KUNAVO_API_KEY" \
--data-urlencode "start_date=2026-04-28" \
--data-urlencode "end_date=2026-05-27"(Gün, model) başına bir satır:
# Per-model daily breakdown — one row per (day, model)
curl https://api.kunavo.com/v1/usage \
-G \
-H "Authorization: Bearer $KUNAVO_API_KEY" \
--data-urlencode "start_date=2026-05-01" \
--data-urlencode "end_date=2026-05-27" \
--data-urlencode "group_by=model"Python — aralıktaki değerleri tek bir sayıda toplama:
import os, datetime as dt, requests
today = dt.date.today()
start = today - dt.timedelta(days=29) # last 30 days inclusive
r = requests.get(
"https://api.kunavo.com/v1/usage",
headers={"Authorization": f"Bearer {os.environ['KUNAVO_API_KEY']}"},
params={
"start_date": start.isoformat(),
"end_date": today.isoformat(),
"group_by": "model",
},
timeout=30,
)
r.raise_for_status()
body = r.json()
# body["data"] is one row per (day, model). Sum cost across the window:
total_usd = sum(float(row["cost_usd"]) for row in body["data"])
print(f"Spent ${total_usd:.4f} on key {body['api_key']['name']}")Yanıt
200 OK — satır listesi içeren application/json. Etkinlik olmayan aralıklar atlanır; kesintisiz bir dizi gerekiyorsa eksik aralıkları istemci tamamlar.
{
"object": "list",
"api_key": {
"id": "k_abc123",
"name": "production",
"prefix": "sk-kn-aZ8x"
},
"start_date": "2026-05-01",
"end_date": "2026-05-27",
"bucket": "day",
"data": [
{
"bucket_start": "2026-05-01T00:00:00.000Z",
"model": "claude-sonnet-4-6",
"requests": 1284,
"errors": 7,
"input_tokens": 1532890,
"output_tokens": 245100,
"cached_input_tokens": 980000,
"cache_write_tokens": 12000,
"web_search_requests": 0,
"cost_usd": "3.452100"
},
{
"bucket_start": "2026-05-01T00:00:00.000Z",
"model": "gpt-5",
"requests": 88,
"errors": 0,
"input_tokens": 42000,
"output_tokens": 12300,
"cached_input_tokens": 0,
"cache_write_tokens": 0,
"web_search_requests": 0,
"cost_usd": "0.210400"
}
]
}| Alan | Tür | Anlam |
|---|---|---|
bucket_start | string (ISO 8601, UTC) | Bu satırın topladığı gün veya saatin başlangıcı. |
model | string | Model kısa adı. Yalnızca group_ olduğunda bulunur. |
requests | number | Bu aralıktaki başarılı çağrıların sayısı. |
errors | number | Hata, zaman aşımı veya iptal ile sonuçlanan çağrılar. Faturalandırılmaz. |
input_tokens | number | Toplam girdi token sayısı (önbelleğe alınmış ve önbelleğe yazılmış alt kümeleri içerir). |
output_ | number | Toplam çıktı token sayısı. |
cached_ | number | input_tokens kümesinin, üst akış istem önbelleğinden sunulan alt kümesi. |
cache_ | number | Bu pakette önbelleğe yazılan token'lar (yalnızca Anthropic; diğer yerlerde 0). |
web_ | number | Sunucu tarafındaki web aramaları; her biri token ücretlerine ek olarak faturalandırılır: GPT modelinde Claude'un /v1/messages üzerinden yaptığı aramalar ve OpenAI'nin web_search aracı üzerinden /v1/ ile yaptığı aramalar (diğer tüm durumlarda 0). |
cost_usd | string | Bu aralık için USD cinsinden tahsil edilen tutar, 6 ondalık basamak hassasiyetinde. Hassasiyeti korumak için string olarak sunulur; güvenle parseFloat() yapılabilir. |
Decimal()) ayrıştırmasını sağlar.İstemci tarafında önbelleğe alma
Uç nokta Cache-Control: private, max-age=60 üst bilgisini ayarlar. Çoğu istemci (tarayıcılar, oturum içeren istekler ve tarafınızdaki tüm HTTP önbellekleri), aynı parametrelerle yapılan isteklerin yanıtını 60 saniyelik bir aralıkta yeniden kullanır — bu, düzenli aralıklarla sorgulama yapan panolar için uygundur. Güncel bir yanıt almak için sorgu dizesini değiştirin (ör. bir &_=tsbustera ekleyin) veya kendi tarafınızda Cache-Control: no-cache gönderin.
Hatalar
| Durum | Kod | Ne zaman |
|---|---|---|
401 | authentication_ | Bearer anahtarı eksik, hatalı biçimlendirilmiş veya iptal edilmiş. |
400 | invalid_ | start_/end_ biçimi hatalı; bitiş tarihi başlangıç tarihinden önce; start_date bugünden sonra; aralık, kova sınırını aşıyor veya group_by değeri desteklenmiyor. |
500 | internal_ | Veritabanına erişilemiyor veya beklenmeyen bir hata oluştu. |
Dikkat edilmesi gerekenler
- Silinen anahtarlar. Bir API anahtarını iptal ettiğinizde, geçmiş kullanım satırlarındaki
api_key_idalanı (null olarak ayarlanır) silinir; bu nedenle geçmiş toplamlar bu uç nokta üzerinden artık alınamaz. Veriler, paneldeki hesabınızın toplam görünümünde kalmaya devam eder. Değiştirilemez bir anahtar başına denetim kaydına ihtiyacınız varsa iptal etmeden önce verileri alıp saklayın. - Gerçek zamana yakın. Satırlar, ilgili çağrı tamamlandıktan birkaç saniye içinde eklenir. Gecikme için garanti edilmiş bir üst sınır yoktur — faturanızla tam eşleşme gerekiyorsa dakika dakika sorgulamak yerine her gün bir önceki günün verilerini sorgulayın.
- Maliyet, faturalandırılan tutardır. Buradaki
cost_usd, cüzdan defterinizden düşülen tutarla aynıdır. Bu tutar, Faturalandırma bölümünde açıklananmax(catalog, upstream × markup)alt sınırını zaten yansıtır. Bu yanıtta ayrı bir "toptan satış" tutarı bulunmaz.
Sonraki adımlar
- Faturalandırma ve defter — her çağrı için
cost_usddeğerinin buraya yansımadan önce nasıl hesaplandığı. - Kimlik doğrulama — yeni API anahtarları oluşturma (proje başına bir tane).
- Panel kullanım görünümü — aynı verileri grafiklerle, çağrı başına ayrıntılarla ve tüm anahtarlarınızdaki hesap genelindeki toplamlarla sunar.