API Dokümantasyonu

RESTful API ile haberlere, kategorilere ve trendlere programatik erişim.

v1.0

Kimlik Doğrulama

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.

Base URL

https://api.kantan.news/

Hız Sınırlaması

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.

Yanıt Formatı

Tüm yanıtlar JSON formatındadır:

{
  "success": true,
  "data": [ ... ],
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 1250,
    "total_pages": 63
  }
}

Endpoint'ler

GET /news.php

Yayınlanmış haberleri listeler. Filtreleme, arama ve sayfalama destekler.

Parametreler

Parametre Tip Varsayılan Açıklama
idintTek haber getir (ID ile)
pageint1Sayfa numarası
per_pageint20Sayfa başına sonuç (maks: 50)
categorystringKategoriye göre filtrele
searchstringBaşlıkta arama
sortstringlatestSıralama: latest, oldest, popular
sincedateBu tarihten sonraki haberler (ISO 8601)

Örnek

curl -H "Authorization: Bearer kn_xxx" \
  "https://api.kantan.news/news.php?category=Teknoloji&per_page=5"
GET /news.php?id={id}

Tek bir haberin tüm detaylarını (içerik dahil) getirir.

Yanıt

{
  "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"
  }
}
GET /categories.php

Tüm kategorileri ve her kategorideki haber sayısını listeler.

Yanıt

{
  "success": true,
  "data": [
    { "id": 1, "name": "Teknoloji", "slug": "teknoloji", "post_count": 245 },
    { "id": 2, "name": "Yapay Zeka", "slug": "yapay-zeka", "post_count": 180 }
  ]
}
GET /trends.php

Kategorilere göre trend etiketleri listeler.

Parametreler

categorystringOpsiyonel — belirli kategori

Yanıt

{
  "success": true,
  "data": {
    "Teknoloji": [
      { "tag": "yapay zeka", "count": 45 },
      { "tag": "nvidia", "count": 32 }
    ],
    "Oyun": [
      { "tag": "steam", "count": 28 }
    ]
  }
}

Kullanıcı Kimlik Doğrulama (Social Login)

Akış Diyagramı

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

POST /auth.php action: google

Google id_token ile kullanıcı girişi yapar.

İstek

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
}

Yanıt

{
  "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"
  }
}
POST /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"
}
POST /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.

POST /auth.php action: me

Mevcut kullanıcı profilini getirir.

{
  "action": "me",
  "user_token": "kut_a1b2c3d4e5f6..."
}
POST /auth.php action: logout

Kullanıcı token'ını iptal eder (çıkış yapar).

{
  "action": "logout",
  "user_token": "kut_a1b2c3d4e5f6..."
}

Kullanıcı Bazlı İstekler

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

Hata Kodları

Kod Durum Açıklama
401UnauthorizedGeçersiz veya eksik API anahtarı
403ForbiddenDeaktif edilmiş API anahtarı
404Not Foundİstenen kaynak bulunamadı
429Too Many RequestsHız sınırı aşıldı
500Server ErrorSunucu hatası