Kılavuzlar
Kurallar
Her yerde geçerli olan birkaç kural. Bir kez öğrenip bir daha dönmeyin.
Temel adres
Tek bir API adresi yok. Lydira her veri ikamet bölgesi için ayrı bir sunucu çalıştırır, her birinin kendi veritabanı vardır ve hesabınız bunlardan yalnız birinde durur. Bir hücrede üretilen anahtar diğerinde çözülmez:
Adresi Lydira sekmenizin adres çubuğundan alın. Ayarlar → API anahtarları sayfası da anahtarın yanında yazar; doğru olduğundan emin olabileceğiniz tek yer orasıdır. Sonra bu sayfanın üstünden seçin, buradaki bütün örnekler o adrese geçsin. Kendi sunucunuzda ya da özel alan adında çalışıyorsanız adres sizindir; yerelde
Bu adresin altında her şey
401 unauthorized alırsınız, yani yanlış adres değil bozuk anahtar gibi görünür. Bir öğleden sonranızı yemeden önce tanımaya değer bir hata.
Adresi Lydira sekmenizin adres çubuğundan alın. Ayarlar → API anahtarları sayfası da anahtarın yanında yazar; doğru olduğundan emin olabileceğiniz tek yer orasıdır. Sonra bu sayfanın üstünden seçin, buradaki bütün örnekler o adrese geçsin. Kendi sunucunuzda ya da özel alan adında çalışıyorsanız adres sizindir; yerelde
http://localhost:3000 olur.
Bu adresin altında her şey
/api/v1 içinde yaşar. Tarayıcı adreslerinin aksine yolda dil ve hesap numarası yoktur, çünkü hangi hesap olduğunuzu anahtar zaten söylüyor.https://YOUR-CELL.lydira.com/api/v1/customers| Bölge | Adres | Sunucular | Hesap numarası |
|---|---|---|---|
| Türkiye | tr.lydira.com | TR | 10000000–19999999 |
| Europe / Rest of world | eu.lydira.com | DE | 20000000–29999999 |
| Americas | us.lydira.com | US | 30000000–39999999 |
Tarayıcı adresinizdeki hesap numarası hangi hücrede olduğunuzu kimseye sormadan söyler; bantlar birbirine girmez.
Zarflar
Liste, satırlarını her zaman
data altına koyar. Kayıt listesi yanında page taşır; sınırlı bir liste taşımaz, çünkü yürünecek bir şey yoktur. Bir seyahatin günleri, hesabın koltukları, rapor kataloğu böyledir. Bazı yanıtlar koleksiyonun yanına bağlam koyar, gelen kutusundaki unread_count gibi. İki yanıtta ise zarf hiç yoktur, çünkü nesnenin kendisi yanıttır: GET /api/v1/me ve rapor sonucu.{
"data": [ … ],
"page": { "next_cursor": "…", "has_more": true, "limit": 25 }
}Sayfalama
Sayfa numarası değil cursor. Üstüne bir satır yazıldığı anda sayfa numarası kayar, cursor kaymaz.
has_more true olduğu sürece aynı isteği ?cursor= ile tekrarlayın. ?limit= 1 ile 100 arasını alır, varsayılanı 25'tir. Cursor'lar opaktır. Ayrıştırmayın, kendiniz üretmeyin.cursor = None
while True:
params = {"limit": 100, **({"cursor": cursor} if cursor else {})}
page = requests.get(url, headers=headers, params=params).json()
for row in page["data"]:
handle(row)
if not page["page"]["has_more"]:
break
cursor = page["page"]["next_cursor"]İdempotency
Her yazma isteği
Idempotency-Key başlığı taşıyabilir. Kendi ürettiğiniz, en fazla 255 karakterlik benzersiz bir dize. İsteğe bağlıdır; göndermezseniz hiçbir şey değişmez. Gönderirseniz aynı isteğin tekrarı yeniden yazmak yerine ilk çağrının yanıtını birebir döndürür ve Idempotent-Replay: true ekler. Yalnızca başarılı sonuç hatırlanır, yani düşen bir yazma anahtarı yeniden denemeye serbest bırakır. Aynı anahtarı farklı bir gövde ya da yol için kullanmak 422 idempotency_key_reuse döner; ilk çağrı hâlâ koşarken tekrarlamak Retry-After ile birlikte 409 idempotency_conflict döner. Anahtarlar hesabınıza özeldir ve 7 gün saklanır.Idempotency-Key: 8f14e45f-ea2c-4f33-9a3b-6d0c1b7e5a90Hız sınırı
Çözülebilir bir anahtar taşıyan her isteğin yanıtı, retler dahil, bütçesini bildirir.
X-RateLimit-Reset, pencerenin döndüğü ve Remaining değerinin Limit'e geri çıktığı UTC saniyesidir. Bildirilen rakam sizinle 429 arasındaki en dar tavandır; aktarım yazmalarında bu, hesabınızın hızı değil, o uçların kendi dakikada 30 sınırıdır. Kullanılabilir anahtar taşımayan bir istek hiçbir bütçeye ulaşmamıştır, bu başlıkları da taşımaz.X-RateLimit-Limit: 600
X-RateLimit-Remaining: 587
X-RateLimit-Reset: 1773483660
# 429'da aynı üçü ve ek olarak:
Retry-After: 18Tarih, para, null
Zaman damgaları ISO-8601, tarihler
YYYY-AA-GG biçimindedir. Para ondalık bir metindir, float değil; böylece JSON'dan geçerken hiçbir şey yuvarlanmaz. Para ya da kişisel veri alanındaki null iki ayrı şey anlatabilir ve ikisini ayırmak işinize yarar: değer gerçekten yoktur, ya da anahtarınızın rolü onu göremiyordur. İkincisiyse kayıt bunu genelde söyler; mesajlardaki content_masked alanı buna örnektir.{
"price_amount": "1250.00",
"currency": "EUR",
"start_date": "2026-03-14",
"updated_at": "2026-03-14T09:30:00Z"
}