Cihan Haber Ajansı
Geliştirici Portalı
CHA içeriklerini kendi sitenize, uygulamanıza veya iş zekası panonuza taşıyın.
Kimlik Doğrulama
Kamuya açık uçlar için kimlik doğrulama gerekmez. Kurumsal /api/public/wire/* uçları için Müşteri Portalınızdan API anahtarı üretin.
X-API-Key: cha_... # veya Authorization: Bearer cha_...
REST · Kurumsal Wire (kimlik doğrulamalı)
GET /api/public/wire/articles ?limit=20&offset=0 &category=politika &wire_type=flash|urgent|analysis|opinion|interview|photo|video|podcast &license=editorial|commercial|royalty_free|exclusive ®ion=TR&priority=3&breaking=true &from=2026-01-01T00:00:00Z&to=2026-12-31T23:59:59Z &q=Türkiye
Yanıt: { data, meta: { limit, offset, count, remaining } }. Başlıklar: X-RateLimit-Limit, X-RateLimit-Remaining. 429 durumunda Retry-After.
REST · Kamuya Açık Haberler
GET /api/public/articles?limit=20&category=politika&breaking=true
JSON Feed / RSS / Sitemaps
GET /api/public/feed.json GET /rss.xml GET /news-sitemap.xml GET /image-sitemap.xml GET /video-sitemap.xml GET /api/public/podcasts.xml GET /sitemap.xml
Hata Kodları
- 401 · missing_api_key · invalid_api_key · expired_api_key
- 403 · inactive_subscription
- 429 · rate_limited
- 500 · server_error
Örnek — Node.js
const res = await fetch("https://cihanhaberajansi.com/api/public/wire/articles?limit=5&breaking=true", {
headers: { "X-API-Key": process.env.CHA_API_KEY },
});
if (res.status === 429) console.warn("Retry-After:", res.headers.get("Retry-After"));
const { data, meta } = await res.json();
console.log(meta.remaining, data);Örnek — Python
import os, requests
r = requests.get(
"https://cihanhaberajansi.com/api/public/wire/articles",
params={"limit": 10, "wire_type": "flash"},
headers={"X-API-Key": os.environ["CHA_API_KEY"]},
)
r.raise_for_status()
for a in r.json()["data"]:
print(a["title"])Örnek — Webhook doğrulama (HMAC-SHA256)
import { createHmac, timingSafeEqual } from "crypto";
const sig = req.headers["x-cha-signature"];
const expected = createHmac("sha256", process.env.CHA_WEBHOOK_SECRET)
.update(rawBody).digest("hex");
if (!timingSafeEqual(Buffer.from(sig), Buffer.from(expected)))
throw new Error("Invalid signature");Hız Limitleri
- Trial: 100/gün · Basic: 1.000/gün
- Professional: 10.000/gün · Enterprise: 100.000/gün
- Kamu: 50.000/gün · Özel: sözleşmeye bağlı
