API Dokümantasyonu

Linkqink REST API ile kısa linkleri programatik olarak oluşturun, güncelleyin ve tıklama istatistiklerine erişin. Herhangi bir platformdan (CRM, e-posta aracı, no-code otomasyon, kendi backend'iniz) entegre edebilirsiniz.

Base URL

https://api.linkqink.com

Kimlik

Bearer / x-api-key

Format

JSON

Kimlik Doğrulama

Tüm korumalı uçlar bir API token ister. Token'ı Panel → API Anahtarları bölümünden oluşturursunuz. Token yalnızca bir kez gösterilir; güvenli saklayın. Token'ı iki şekilde gönderebilirsiniz:

Authorization header

Authorization: Bearer linkqink_xxx_yyy

x-api-key header

x-api-key: linkqink_xxx_yyy

No-code platformlar (Zapier, Make vb.) için pratik.

Token'ınızı test etmek için GET /api/health çağırın — yanıttaki authenticated: true token'ın geçerli olduğunu gösterir.

cURL
curl -X GET "https://api.linkqink.com/api/health" \
  -H "Authorization: Bearer $LINKQINK_TOKEN"

Hızlı Başlangıç

En basit entegrasyon: bir uzun URL gönderin, kısa link geri alın. Slug otomatik üretilir ve varsayılan projeye/domaine bağlanır.

cURL
curl -X POST "https://api.linkqink.com/api/shortlinks/quick" \
  -H "Authorization: Bearer $LINKQINK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://uzun-adres.com/kampanya/2026"}'
201 Created
{
  "id": "clx0abc123",
  "slug": "Ab3xK9Zq",
  "shortUrl": "https://gg0go.com/Ab3xK9Zq",
  "targetTemplate": "https://uzun-adres.com/kampanya/2026",
  "status": "active",
  "domain": {
    "domain": "gg0go.com"
  },
  "createdAt": "2026-08-20T10:00:00.000Z"
}

Her oluşturma ve detay yanıtı kullanıma hazır bir shortUrl alanı döner — domain ve slug'ı kendiniz birleştirmenize gerek yok.

Yanıt & Hatalar

Başarılı yanıtlar doğrudan JSON nesnesi/dizisi döner. Hatalarda error alanı ve uygun HTTP durum kodu döner.

Hata örneği
{
  "error": "Unauthorized"
}
200 / 201Başarılı
400Geçersiz istek / doğrulama hatası
401Token yok veya geçersiz
404Kayıt bulunamadı
410Link devre dışı
500Sunucu hatası

Dinamik Parametreler

Hedef şablonda {ad} biçiminde yer tutucular kullanabilirsiniz. Ziyaretçi kısa linke bir query parametresiyle geldiğinde bu değer şablona yerleştirilir. Böylece tek bir sabit kısa link, her ziyaret için farklı bir hedefe yönlenir.

Şablon (oluştururken)

https://www.domain.com/#/?action=reset_password&rdcode={rdcode}

Ziyaret edilen kısa link

https://gg0go.com/sifre-sifirla?rdcode=ABC123

Yönlendirilen hedef

https://www.domain.com/#/?action=reset_password&rdcode=ABC123

Güvenlik: proje değişkenleri (ör. {BASE_URL}) her zaman gelen query parametrelerinden önceliklidir; sabit değişkenler dışarıdan ezilemez.

CORS & Limitler

  • •CORS: Tüm /api uçları tarayıcıdan çağrılabilir (Access-Control-Allow-Origin: *). Token header ile gönderildiğinden ve cookie kullanılmadığından bu güvenlidir. Yine de token'ı istemci tarafında ifşa etmeyin — gizli işlemleri sunucudan çağırın.
  • •Preflight: OPTIONS istekleri otomatik yanıtlanır.
  • •Hız limiti: Şu an katı bir istek limiti yoktur; adil kullanım beklenir. Yüksek hacimli entegrasyonlar için istekleri toplu/aralıklı gönderin.
  • •Token kapsamı: Bir token, onu oluşturan kullanıcının tüm projelerine erişir. Her entegrasyon için ayrı token oluşturun; sızıntı durumunda ilgili token'ı silin.

Endpoint Referansı

Public = kimlik gerektirmez · Token = Bearer veya x-api-key gerekir.

MethodEndpointAçıklamaKimlik
GET/api/healthBağlantı ve token doğrulama testiPublic
POST/api/shortlinks/quickTek adımda kısa link oluştur (otomatik slug)Token
GET/api/shortlinks/quickVarsayılan projenin linklerini listeleToken
GET/api/projectsProjeleri listeleToken
POST/api/projectsYeni proje oluşturToken
GET/api/projects/:idProje detayıToken
PATCH/api/projects/:idProje güncelle (base URL / değişken)Token
GET/api/projects/:id/domainsProjeye ait domainlerToken
GET/api/projects/:id/shortlinksProjedeki linkleri listeleToken
POST/api/projects/:id/shortlinksŞablonlu kısa link oluşturToken
GET/api/projects/:id/variablesProje değişkenleriToken
POST/api/projects/:id/variablesDeğişken ekleToken
PATCH/api/projects/:id/variables/:keyDeğişken güncelleToken
DELETE/api/projects/:id/variables/:keyDeğişken silToken
GET/api/shortlinks/:idLink detayıToken
PATCH/api/shortlinks/:idLink güncelleToken
DELETE/api/shortlinks/:idLink silToken
GET/api/shortlinks/:id/clicksTıklama olayları (?stats=1, ?hours=48)Token
GET/api/shortlinks/:id/analyticsLink analitiğiToken
GET/api/analytics/project/:idProje tıklama istatistikleriToken

Örnek İşlemler

GET Projeleri listele

Link oluşturmadan önce hedef proje ve domain kimliklerini buradan alın.

cURL
curl -X GET "https://api.linkqink.com/api/projects" \
  -H "Authorization: Bearer $LINKQINK_TOKEN"

POST Şablonlu (parametreli) link oluştur

{rdcode} yer tutucusu, ziyaretçinin URL'sindeki ?rdcode= değerinden doldurulur.

cURL
curl -X POST "https://api.linkqink.com/api/projects/PROJECT_ID/shortlinks" \
  -H "Authorization: Bearer $LINKQINK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"slug":"sifre-sifirla","name":"Şifre sıfırlama","targetTemplate":"https://www.domain.com/#/?action=reset_password&rdcode={rdcode}","domainId":"DOMAIN_ID"}'

GET Tıklama istatistikleri

Son 48 saatteki tıklama özetini alın (?stats=1&hours=48).

cURL
curl -X GET "https://api.linkqink.com/api/shortlinks/LINK_ID/clicks?stats=1&hours=48" \
  -H "Authorization: Bearer $LINKQINK_TOKEN"
200 OK
{
  "hasMore": false,
  "nextCursor": null,
  "stats": {
    "total": 1280,
    "last24h": 96,
    "prev24h": 74,
    "last7d": 512,
    "prev7d": 430,
    "last30d": 1280,
    "hourly": [
      {
        "hour": "2026-08-20T09:00:00.000Z",
        "count": 12
      }
    ]
  }
}

GET Detaylı analitik kırılımı

Ülke, referer, cihaz, tarayıcı, işletim sistemi, dil ve IP bazında dağılım artı trafik kalitesi (bot oranı). range =24h · 7d · 30d · all, ?bots=1 botları dahil eder.

cURL
curl -X GET "https://api.linkqink.com/api/shortlinks/LINK_ID/analytics?range=7d" \
  -H "Authorization: Bearer $LINKQINK_TOKEN"
200 OK
{
  "range": "7d",
  "total": 512,
  "byCountry": [
    {
      "key": "TR",
      "count": 340
    },
    {
      "key": "DE",
      "count": 88
    }
  ],
  "byDevice": [
    {
      "key": "mobile",
      "count": 300
    },
    {
      "key": "desktop",
      "count": 212
    }
  ],
  "byBrowser": [
    {
      "key": "Chrome",
      "count": 410
    }
  ],
  "byOS": [
    {
      "key": "Android",
      "count": 250
    }
  ],
  "byReferer": [
    {
      "key": "instagram.com",
      "count": 190
    }
  ],
  "byLanguage": [
    {
      "key": "tr",
      "count": 360
    }
  ],
  "byIp": [
    {
      "key": "203.0.113.5",
      "count": 4,
      "isBot": false
    }
  ],
  "quality": {
    "total": 512,
    "uniqueIps": 430,
    "botCount": 18,
    "repeatIps": 52
  }
}