Akış ve imleç
GET /v1/akis servis edilen içeriğin olaylarını eskiden yeniye verir. Her olay bir DisOlay'dır:
{ "olay_id": "…", "imlec": "MjAyNi0xMC0wN1Qx…", "olay": "duzeltme", "zaman": "2026-10-07T11:19:00Z",
"icerik": "haber", "haber": { "no": "H-001230", "surum_no": 2 }, "varlik": null }olay | Ne |
|---|---|
yeni | İlk servis |
duzeltme | Haberin yeni sürümü (duzeltmeler ve surum_no) |
iptal | İptal: yayından kaldırın (govde, spot, medya boş) |
guncelleme | Servisteki medyanın bilgisi ya da kırpması değişti (yalnızca olay=guncelleme istenirse) |
Döngü
- İlk istekte imleç vermeyin: son 24 saatten (ya da
baslangic'tan) başlar; en çok 7 gün geri gidilir. Daha eskisi için/v1/haberlerve/v1/ara. - Yanıttaki
sonraki_imlec'i saklayın ve bir sonraki istekte?imlec=olarak verin. devami_vardoğruysa hemen yeniden sorun; yanlışsa en erken 10 saniye bekleyin. Daha sık soran dakikalık sınıra takılır.- Aynı olay iki kez gelebilir:
olay_id'yi saklayıp ayıklayın, düzeltmeyisurum_nobüyükse uygulayın.
curl -s "https://api.<alan>/v1/akis?boyut=50" -H "Authorization: Bearer $YHA_ANAHTAR"
curl -s "https://api.<alan>/v1/akis?imlec=$IMLEC" -H "Authorization: Bearer $YHA_ANAHTAR"import time, requests
OTURUM = requests.Session(); OTURUM.headers["Authorization"] = f"Bearer {ANAHTAR}"
imlec = oku_imlec()
while True:
y = OTURUM.get("https://api.<alan>/v1/akis", params={"imlec": imlec, "boyut": 100}, timeout=30)
if y.status_code == 429: time.sleep(int(y.headers.get("Retry-After", "10"))); continue
y.raise_for_status(); g = y.json()
for olay in g["ogeler"]: isle(olay)
if g["sonraki_imlec"]: imlec = g["sonraki_imlec"]; yaz_imlec(imlec)
if not g["devami_var"]: time.sleep(10)Süzgeçler
icerik (haber, fotograf, video), kategori_id (virgüllü), il_id, oncelik (flas, onemli, normal), olay (varsayılan yeni,duzeltme,iptal), paket_id, boyut (en çok 100).
Embargo
Önceden verilen embargolu içerik servis anında embargo: { "zaman", "suruyor": true } ile gelir. Saatinden önce yayımlamayın; yazılımınız embargo.zaman'ı beklemelidir.
Medya
haber.medya yalnızca paketinizin açtığı medyayı taşır. Dosyayı GET /v1/varliklar/:id/dosya?secenek=web ile alın: 303 ile süreli, imzalı bir adrese yönlendirilirsiniz (curl -L). Kopya hazırlanıyorsa 202 ve Retry-After gelir. İndirilen fotoğraf ve video aylık indirme kotasına girer (aynı dosya 24 saat içinde yeniden indirilirse düşmez). Seçenekler: fotoğrafta kucuk, web, orijinal; videoda 1080p, 720p, 480p.
360° görüntüleyici
360° içerik (tur: foto_360, video_360; numara YHA-360-000412) paketinizde 360° türü açıksa gelir. Nesnede kuresel: { "izdusum": "esdikdortgen", "acilis": { "yon", "egim", "yakinlik" }, "goruntuleyici_adresi" } vardır; açılar derecedir (yön 0 kuzey, saat yönünde; eğim −90…90; yakınlık 30…120 yatay görüş açısı). Seçenekler: 360° fotoğrafta kucuk, kapak (açılış yönünden düz kare), web (eşdikdörtgen 4096 × 2048), orijinal; 360° videoda 3840x1920, 1920x960 (kaynaktan büyük kalite yoktur) ve kapak. Eşdikdörtgen dosyalarda 360° bilgisi (fotoğrafta GPano, videoda Spherical Video V2 ve V1 açılış yönü) korunur; ses stereodur.
Kendi görüntüleyicinizi ajansın döşemeleriyle kurmak için GET /v1/varliklar/:id/goruntuleyici (kapsam icerik.indir; bir API çağrısı) görüntüleyici yanıtını verir: fotoğrafta doseme.adres_kalibi ({seviye}/{sutun}/{satir} yer tutuculu, 512 × 512 JPEG) ve seviyeler, videoda video.adres (gömme kopyası, 2560 × 1280, ilerlemeli MP4). Döşeme istekleri API kotasına girmez; jeton başına dakikalık sınıra girer (429 yavasla). Jeton süresi dolunca (doseme.bitis_zamani) uç yeniden çağrılır; anahtar iptal edilince ya da abonelik düşünce döşeme adresleri en geç 60 saniyede 403 verir. 360° olmayan içerikte 409 kuresel_degil.
Listeler
/v1/haberler, /v1/varliklar ve /v1/ara yeniden eskiye sıralı, imleçlidir: { "ogeler", "sonraki_imlec", "devami_var" }. Sayfa numarası ve toplam sayı yoktur. Ayrıntı uçları ETag verir; If-None-Match ile 304 alırsınız.