Geliştiriciler
fir.lat API
Panelde yapabildiğin her şeyi kendi sistemlerinden yap: link oluştur, hedefini güncelle, durdur, istatistikleri çek. API erişimi Ekip ve Kurumsal paketlerde; anahtarını Panel > API sayfasından oluştur.
Kimlik doğrulama
Her istekte anahtarını Authorization başlığında gönder:
Authorization: Bearer fl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Temel adres: https://fir.lat/api/v1 · Gövde ve yanıtlar JSON (UTF-8). Başarılı yanıt {"ok":true,"data":...}, hata {"ok":false,"error":{"code":"...","message":"..."}} biçimindedir.
Uç noktalar
| GET | /me | Hesap, paket ve kullanım bilgisi |
| GET | /links | Linkleri listele · page, per_page (≤100), q, status, campaign, slug |
| POST | /links | Link oluştur |
| GET | /links/{id} | Tek link |
| PATCH | /links/{id} | Güncelle (yalnızca gönderdiğin alanlar değişir) · alternatif: POST /links/{id}/update |
| POST | /links/{id}/pause | Yönlendirmeyi durdur |
| POST | /links/{id}/activate | Yeniden etkinleştir |
| POST | /links/{id}/archive | Arşivle |
| DELETE | /links/{id} | Sil (kısa ad bir daha kullanılamaz) · alternatif: POST /links/{id}/delete |
| GET | /links/{id}/stats | Link istatistikleri · days (paketindeki geçmiş süresi kadar) |
| GET | /stats | Çalışma alanı özeti · days, campaign |
Link oluşturma
curl -X POST https://fir.lat/api/v1/links \
-H "Authorization: Bearer fl_live_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://ornek.com/kampanya",
"slug": "ekim",
"title": "Ekim kampanyası",
"campaign": "ekim-2026",
"tags": ["instagram", "reklam"],
"utm_source": "instagram",
"utm_medium": "social"
}'
| url | Zorunlu. http(s) hedef adres. |
| slug | Özel kısa ad (3-50, a-z 0-9 - _). Boşsa rastgele üretilir. Özel ad özelliği paketinde olmalı. |
| title, campaign, note | Düzen alanları. |
| tags | Dizi ya da virgülle ayrılmış metin. |
| utm_source / utm_medium / utm_campaign | Hedefe UTM parametresi ekler. |
| expires_at | 2026-12-31 ya da 2026-12-31T23:59 |
| click_limit | Bu sayıya ulaşınca yönlendirme durur. |
| password | Şifreli link (PATCH'te null şifreyi kaldırır). |
Yanıt (201):
{"ok":true,"data":{"id":42,"slug":"ekim","short_url":"https://fir.lat/ekim","qr_url":"https://fir.lat/ekim?qr=1",
"target_url":"https://ornek.com/kampanya?utm_source=instagram&utm_medium=social","title":"Ekim kampanyası",
"campaign":"ekim-2026","tags":["instagram","reklam"],"status":"active","clicks":0,"unique_clicks":0,"qr_clicks":0, ...}}
Hata kodları ve sınırlar
| 401 unauthorized | Anahtar yok, geçersiz ya da iptal edilmiş. |
| 402 plan_limit · plan_feature | Paket limiti ya da özelliği yetersiz. |
| 403 plan_no_api | Paketinde API yok. |
| 404 not_found | Link bulunamadı. |
| 409 slug_taken | Kısa ad kullanımda. |
| 422 url_invalid · url_blocked · slug_invalid ... | Doğrulama hatası; message alanı açıklar. |
| 429 rate_limited · quota_exceeded | Dakikalık sınır ya da aylık kota. Retry-After başlığına uy. |
Her yanıtta X-RateLimit-Limit ve X-RateLimit-Remaining başlıkları bulunur. Kısa linkler her zaman 302 ile yönlenir; QR taramaları ?qr=1 ile ayrı sayılır.