RESTful API ile haberlere, kategorilere ve trendlere programatik erişim.
Tüm API istekleri Authorization header'ı gerektirir:
Authorization: Bearer kn_your_api_key_here
API anahtarı almak için site yöneticisiyle iletişime geçin.
https://api.kantan.news/
Her API anahtarının dakika başına istek limiti vardır (varsayılan: 100/dk).
Limit aşıldığında 429 Too Many Requests yanıtı döner.
Tüm yanıtlar JSON formatındadır:
{
"success": true,
"data": [ ... ],
"meta": {
"page": 1,
"per_page": 20,
"total": 1250,
"total_pages": 63
}
}
/news.php
Yayınlanmış haberleri listeler. Filtreleme, arama ve sayfalama destekler.
| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
id | int | — | Tek haber getir (ID ile) |
page | int | 1 | Sayfa numarası |
per_page | int | 20 | Sayfa başına sonuç (maks: 50) |
category | string | — | Kategoriye göre filtrele |
search | string | — | Başlıkta arama |
sort | string | latest | Sıralama: latest, oldest, popular |
since | date | — | Bu tarihten sonraki haberler (ISO 8601) |
curl -H "Authorization: Bearer kn_xxx" \
"https://api.kantan.news/news.php?category=Teknoloji&per_page=5"
/news.php?id={id}
Tek bir haberin tüm detaylarını (içerik dahil) getirir.
{
"success": true,
"data": {
"id": 123,
"title": "Haber Başlığı",
"slug": "haber-basligi",
"content": "<p>HTML içerik...</p>",
"image_url": "uploads/images/abc.jpg",
"original_link": "https://source.com/article",
"category": "Teknoloji",
"social_summary": "Kısa özet...",
"tags": ["yapay zeka", "teknoloji"],
"views": 1250,
"published_at": "2026-02-25 12:00:00",
"url": "https://kantan.news/article/haber-basligi"
}
}
/categories.php
Tüm kategorileri ve her kategorideki haber sayısını listeler.
{
"success": true,
"data": [
{ "id": 1, "name": "Teknoloji", "slug": "teknoloji", "post_count": 245 },
{ "id": 2, "name": "Yapay Zeka", "slug": "yapay-zeka", "post_count": 180 }
]
}
/trends.php
Kategorilere göre trend etiketleri listeler.
category | string | Opsiyonel — belirli kategori |
{
"success": true,
"data": {
"Teknoloji": [
{ "tag": "yapay zeka", "count": 45 },
{ "tag": "nvidia", "count": 32 }
],
"Oyun": [
{ "tag": "steam", "count": 28 }
]
}
}
1. Uygulamanız → Google/X login (kendi client ID'niz ile)
2. Google/X → id_token veya access_token döner
3. Uygulamanız → POST /api/v1/auth.php (token + API key)
4. Kantan.news → Token'ı doğrular, kullanıcı oluşturur/bulur
5. Kantan.news → access_token (24 saat) + refresh_token (30 gün) döner
6. Sonraki isteklerde → X-User-Token header'ı ile kullanıcı tanınır
/auth.php
action: google
Google id_token ile kullanıcı girişi yapar.
POST /api/v1/auth.php
Authorization: Bearer <API_KEY>
Content-Type: application/json
{
"action": "google",
"id_token": "eyJhbGciOiJSUzI1NiIs...",
"device_info": "iOS 18 / iPhone 16" // opsiyonel
}
{
"success": true,
"data": {
"user": {
"id": 42,
"name": "Ahmet Yılmaz",
"email": "[email protected]",
"avatar": "https://lh3.googleusercontent.com/...",
"role": "user"
},
"access_token": "kut_a1b2c3d4e5f6...",
"refresh_token": "krt_x9y8z7w6v5u4...",
"expires_at": "2026-02-26 17:00:00",
"token_type": "Bearer"
}
}
/auth.php
action: x
X (Twitter) OAuth 2.0 access_token ile kullanıcı girişi yapar.
{
"action": "x",
"access_token": "AAAA...ZZZZ",
"device_info": "Android 15 / Pixel 9"
}
/auth.php
action: refresh
Süresi dolan access_token'ı yenilemek için refresh_token kullanır. Yeni bir token çifti döner.
{
"action": "refresh",
"refresh_token": "krt_x9y8z7w6v5u4..."
}
Access token: 24 saat · Refresh token: 30 gün geçerli.
/auth.php
action: me
Mevcut kullanıcı profilini getirir.
{
"action": "me",
"user_token": "kut_a1b2c3d4e5f6..."
}
/auth.php
action: logout
Kullanıcı token'ını iptal eder (çıkış yapar).
{
"action": "logout",
"user_token": "kut_a1b2c3d4e5f6..."
}
Login sonrası kullanıcı bazlı işlemler için her istekte iki header gönderin:
Authorization: Bearer <API_KEY> // Proje kimliği
X-User-Token: kut_a1b2c3d4e5f6... // Kullanıcı kimliği
| Kod | Durum | Açıklama |
|---|---|---|
401 | Unauthorized | Geçersiz veya eksik API anahtarı |
403 | Forbidden | Deaktif edilmiş API anahtarı |
404 | Not Found | İstenen kaynak bulunamadı |
429 | Too Many Requests | Hız sınırı aşıldı |
500 | Server Error | Sunucu hatası |