Tek anahtar.
Her kısa link.
ouo.io, aylink.co, shorte.st ve kayıtlı diğer kısaltıcıları gerçek adresine programatik olarak çözün. JSON gönderin, JSON alın; kimlik doğrulama tek bir başlıktan ibaret.
- senkron bekleme penceresi
- 10 sn
- toplu istekte maks. URL
- 50
- desteklenen alan adı
- 44
curl -sS -X POST https://api.kisalinkatla.com/resolve \ -H "X-API-Key: $BYPASS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://ouo.io/2yK4Pq"}'{ "status": "success", "url": "https://ouo.io/2yK4Pq", "result_url": "https://example.com/article", "engine": "ouo", "lane": "heavy", "safety_status": null, "cached": false, "elapsed_ms": 8421, "job_id": "7c1a9f3e-6b02-4a1d-9f41-2ac5d0e7b913"}İlk çağrı üç adımda.
Aşağıdaki üç blok olduğu gibi çalışır. Anahtarınızı yazın, kopyalayın, yapıştırın.
Makine-okunur:OpenAPIMarkdown— AI ve kod asistanları için
API anahtarı yalnızca X-API-Key başlığıyla gönderilir. Bearer token olarak gönderilen anahtar web oturumu sanılır ve 401 ile reddedilir; bu yanıt yapılandırılmış zarfı taşımaz, yalnızca {"detail": "…"} döner. Entegrasyonlarda en sık yapılan hata budur.
- 1
Anahtarını oluştur
Hesabına giriş yap ve anahtar sayfasından bir anahtar üret. Anahtar bp_ ile başlar ve yalnızca bir kez gösterilir; kaybedersen iptal edip yenisini oluştur. Aynı anda en fazla 3 aktif anahtarın olabilir.
Anahtar sayfasına gitshellexport BYPASS_API_KEY="bp_xxxxxxxx" - 2
İlk çağrını yap
Senkron uç nokta 10 saniyeye kadar bekler. İş bu sürede biterse sonucu doğrudan döndürür; bitmezse 202 ve bir job_id verir.
curl · POST /resolvecurl -sS -X POST https://api.kisalinkatla.com/resolve \-H "X-API-Key: $BYPASS_API_KEY" \-H "Content-Type: application/json" \-d '{"url": "https://ouo.io/2yK4Pq"}' - 3
Asenkron iş için poll döngüsü
Ağır şerit (ouo.io, aylink.co, cpmlink, shorte.st, cuty.io) tarayıcı çalıştırır ve genelde 10–60 saniye sürer; en kötü durumda iki deneme + zaman aşımı ladder'ı (45/60/75 sn) nedeniyle birkaç dakika bulabilir. Bu işleri /bypass ile kuyruğa alıp /job/{job_id} ile sorgulayın. Önerilen: 2 saniyede bir, her turda 1,5 kat artan aralık (maks. 10 sn).
curl · POST /bypass → GET /job/{job_id}# 1) İşi kuyruğa al (enqueue) → job_idJOB_ID=$(curl -sS -X POST https://api.kisalinkatla.com/bypass \-H "X-API-Key: $BYPASS_API_KEY" \-H "Content-Type: application/json" \-d '{"url": "https://ouo.io/2yK4Pq"}' \| python3 -c 'import sys, json; print(json.load(sys.stdin)["job_id"])')# 2) Terminal duruma kadar 2 sn aralıkla sor (poll kotadan DÜŞMEZ)while true; doBODY=$(curl -sS https://api.kisalinkatla.com/job/$JOB_ID -H "X-API-Key: $BYPASS_API_KEY")STATUS=$(printf '%s' "$BODY" | python3 -c 'import sys, json; print(json.load(sys.stdin)["status"])')echo "$STATUS"case "$STATUS" insuccess|dead) printf '%s\n' "$BODY"; break ;;esacsleep 2done
Uç noktaların tamamı.
Müşteriye açık uç noktalar bunlardır; canlı ve makine-okunur listesi GET /api-info çıktısındaki endpoints alanıdır. Buradaki kota maliyeti sözleşmedir: çağrı başına 1 birim, toplu istekte URL başına 1 birim, sorgulama (poll) uçları 0.
Senkron çözümleme — 10 sn'ye kadar bekler, aşılırsa 202 + job_id döner.
{ "url": "https://ouo.io/2yK4Pq"}{ "status": "success", "url": "https://ouo.io/2yK4Pq", "result_url": "https://example.com/article", "engine": "ouo", "lane": "heavy", "safety_status": null, "cached": false, "elapsed_ms": 8421, "job_id": "7c1a9f3e-6b02-4a1d-9f41-2ac5d0e7b913"}- 200Sonuç hazır.
- 20210 sn doldu; job_id ile /job/{job_id} sorgulanmalı.
- 400invalid_url — URL https:// ile başlamalı, en fazla 2048 karakter.
- 401missing_api_key / invalid_api_key
- 403api_key_disabled
- 422Desteklenmeyen alan adı, ölü link veya kalıcı başarısızlık. Kota iade edilir.
- 429rate_limited (30/dk) veya quota_exceeded (günlük plan limiti).
- Cache isabetinde cached: true, elapsed_ms: 0 ve job_id: null döner — bu da normal bir 200 yanıtıdır.
- safety_status alanı VirusTotal taramasını taşır. Tarama şu an yalnızca premium web oturumları için çalışır; API anahtarıyla gelen isteklerde bu alan null döner.
- Ölü link (hedef kaldırılmış/erişilemez) 422 ile reddedilir ve düşen kota birimi otomatik iade edilir; başarısız bir iş kaydı oluşmaz.
Asenkron çözümleme — işi kuyruğa alır ve anında job_id döner.
{ "url": "https://ouo.io/2yK4Pq"}{ "status": "started", "job_id": "7c1a9f3e-6b02-4a1d-9f41-2ac5d0e7b913", "lane": "heavy", "message": "Job queued."}- 200status: "started" (kuyruğa alındı) veya cache isabetinde status: "success".
- 400invalid_url
- 401missing_api_key / invalid_api_key
- 403api_key_disabled
- 422Desteklenmeyen alan adı veya ölü link — kota iade edilir.
- 429rate_limited / quota_exceeded
- Cache isabetinde status: "success" + cached: true ile sonuç anında döner; job_id yerine result_url alırsınız. İstemcinizin iki şekli de karşılaması gerekir.
- Bellek-içi cache isabetinde düşen 1 kota birimi otomatik iade edilir; veritabanı cache isabetinde kota düşer.
- lane alanı işin hangi şeritte çalıştığını söyler: fast (HTTP tabanlı, saniyeler) veya heavy (tarayıcı tabanlı, daha uzun).
Bir işin durumunu ve sonucunu sorgular. Kotadan düşmez.
{ "job_id": "7c1a9f3e-6b02-4a1d-9f41-2ac5d0e7b913", "status": "success", "lane": "heavy", "attempt": 1, "max_attempts": 2, "result_url": "https://example.com/article", "engine_used": "ouo", "safety_status": null, "created_at": "2026-09-17T14:08:21.412000", "completed_at": "2026-09-17T14:08:29.833000"}- 200İş bulundu.
- 404İş yok ya da bu anahtara ait değil.
- status değerleri: pending → processing → success | dead (aradaki yeniden denemelerde retrying). Terminal durumlar: success ve dead.
- dead veya retrying durumunda gövdeye last_error nesnesi eklenir.
- Sahiplik kontrolü vardır: başka bir anahtarın işi sorgulandığında 404 döner (kimliğin var olup olmadığı sızdırılmaz).
- Önerilen aralık 2 sn, her turda 1,5 kat backoff, üst sınır 10 sn.
GET /job/{job_id} için geriye dönük uyumluluk takma adı.
// GET /job/{job_id} ile birebir aynı gövde.// Yeni entegrasyonlarda /job/{job_id} kullanın.- 200İş bulundu.
- 404İş yok ya da bu anahtara ait değil.
- Yanıt gövdesi /job/{job_id} ile birebir aynıdır ve bu uç kaldırılmayacaktır, ancak yeni entegrasyonlarda /job/{job_id} kullanın.
Toplu çözümleme — tek çağrıda en fazla 50 URL kuyruğa alır.
{ "urls": [ "https://ouo.io/2yK4Pq", "https://aylink.co/abc123" ]}{ "batch_id": "b7a3c1d0-91e4-4d2b-8f77-0c5a9e31ab42", "count": 2, "jobs": [ { "url": "https://ouo.io/2yK4Pq", "job_id": "7c1a9f3e-6b02-4a1d-9f41-2ac5d0e7b913", "lane": "heavy", "status": "pending" }, { "url": "https://aylink.co/abc123", "job_id": "2fd5a7c8-1b34-49e0-a0c6-71b8e2d4f905", "lane": "heavy", "status": "pending" } ]}- 200Tüm işler kuyruğa alındı.
- 401missing_api_key / invalid_api_key
- 403api_key_disabled
- 42250'den fazla URL, tekrarlı URL, desteklenmeyen alan adı veya şema hatası. Kota düşmez.
- 429quota_exceeded — kalan kota batch için yetersiz.
- Limit tüm planlarda aynıdır: 50 URL. Plan başına farklı bir toplu istek boyutu yoktur.
- Aynı URL bir istekte iki kez gönderilemez (422 doğrulama hatası).
- Kota tüm batch için peşinen ve atomik olarak rezerve edilir: yetmiyorsa hiçbir birim düşmez ve 429 quota_exceeded döner. 50'den fazla URL, tekrarlı URL veya desteklenmeyen alan adı şema doğrulamasında 422 ile reddedilir ve hiç kota düşmez.
- İşler tek tek /job/{job_id} ile de sorgulanabilir; toplu görünüm için /batch/{batch_id} kullanın.
Bir batch'in tüm işlerini ve agregat durumunu döndürür. Kotadan düşmez.
{ "batch_id": "b7a3c1d0-91e4-4d2b-8f77-0c5a9e31ab42", "status": "processing", "total": 2, "done": 1, "successful": 1, "failed": 0, "jobs": [ { "job_id": "7c1a9f3e-6b02-4a1d-9f41-2ac5d0e7b913", "url": "https://ouo.io/2yK4Pq", "status": "success", "lane": "heavy", "result_url": "https://example.com/article", "engine_used": "ouo", "safety_status": null, "completed_at": "2026-09-17T14:08:29.833000" }, { "job_id": "2fd5a7c8-1b34-49e0-a0c6-71b8e2d4f905", "url": "https://aylink.co/abc123", "status": "processing", "lane": "heavy", "result_url": null, "engine_used": null, "safety_status": null, "completed_at": null } ]}- 200Batch bulundu.
- 401invalid_api_key — anahtar gönderildi ama geçersiz/pasif.
- 404Batch yok ya da bu anahtara ait değil.
- status: processing (devam eden iş var) · complete (hepsi başarılı) · partial (en az biri başarısız).
- Yalnızca isteği gönderen anahtarın işleri görünür; başka bir anahtarın batch'i sorgulanırsa 404 döner.
Anahtarın son 20 işlemi (başarılı + ölü), en yeni önce. Kotadan düşmez.
[ { "url": "https://ouo.io/2yK4Pq", "result_url": "https://example.com/article", "lane": "heavy", "engine": "ouo", "status": "success", "safety_status": null, "elapsed_ms": 8421, "ts": "2026-09-17T14:08:21.412000" }]- 200Liste döndü (boş olabilir).
- 401missing_api_key / invalid_api_key
- limit parametresi 1–20 aralığındadır, varsayılan 20.
- Yalnızca API anahtarıyla erişilir; web oturumu bu ucu kullanamaz.
Sözleşmenin makine-okunur özeti: plan limitleri, batch limiti, rate limit, hata kodları, uç nokta listesi ve desteklenen alan adları.
{ "service": "ByPass API", "version": "1.0.0", "docs_url": "https://www.kisalinkatla.com/developers", "auth": { "header": "X-API-Key", "keys_url": "https://kisalinkatla.com/developers/keys", "max_active_keys_per_user": 3 }, "limits": { "plans": { "free": { "requests_per_day": 50, "unlimited": false }, "starter": { "requests_per_day": 500, "unlimited": false }, "pro": { "requests_per_day": 5000, "unlimited": false }, "business": { "requests_per_day": 50000, "unlimited": false }, "website": { "requests_per_day": null, "unlimited": true } }, "batch_max_urls": 50, "rate_limit_per_minute": 30, "premium_hourly_limit": 100, "free_daily_limit": 10, "quota_reset": { "cadence": "daily", "timezone": "UTC", "at": "00:00", "next_reset_at": 1758153600 } }, "rate_limit_headers": [ "X-RateLimit-Limit", "X-RateLimit-Remaining", "X-RateLimit-Reset" ], "endpoints": [ /* … */ ], "error_codes": [ /* … */ ], "supported_domains": { "count": 44, "heavy": [ /* … */ ], "fast": [ /* … */ ] }}- 200Her zaman.
- Kimlik doğrulama gerektirmez ve kotadan düşmez.
- Limitleri kodunuza sabitlemek yerine buradan okuyun: değerler doğrudan backend sabitlerinden (constants.py) türetilir, dolayısıyla asla bu sayfayla veya gerçekle çelişmez.
- quota_reset.next_reset_at alanı kotanızın yenileneceği bir sonraki UTC gece yarısının unix epoch değeridir.
Kopyala, yapıştır, çalıştır.
Üç akış, üç dil. Örnekler yazıldığı gibi çalışır: doğru başlık adı, doğru temel URL, 429 ve Retry-After yönetimi dahil. Anahtarı ortam değişkeninden okuyun; koda gömmeyin. Kabuk örnekleri işletim sistemine göre değişir; aşağıdan seçin.
Hızlı şerit linkleri için en pratik yol: tek çağrı, tek yanıt. 10 saniyede bitmezse 202 gelir ve poll akışına düşersiniz.
Önce anahtarı bir ortam değişkenine yazın — curl, Python ve JavaScript örneklerinin hepsi bu değişkeni okur:
export BYPASS_API_KEY="bp_xxxxxxxx"# 200 → sonuç hazır · 202 → iş sürüyor (job_id ile poll et)# 429 → Retry-After başlığındaki saniye kadar beklecurl -sS -i -X POST https://api.kisalinkatla.com/resolve \ -H "X-API-Key: $BYPASS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://ouo.io/2yK4Pq"}'Tek anahtar. Tek başlık.
Anahtar üretme ve iptal işlemleri /developers/keys sayfasından yapılır. Anahtarlar sunucuda SHA-256 ile hashlenerek saklanır; ham değeri yalnızca oluşturulduğu anda görürsünüz.
- OluşturmaGiriş yaptıktan sonra anahtar sayfasından üretilir. Ham anahtar tek seferlik gösterilir; sonrasında yalnızca maskeli hâli listelenir.
- Aktif anahtar sayısıKullanıcı başına en fazla 3 aktif anahtar — plandan bağımsızdır. Dördüncüsü için önce bir anahtarı iptal edin.
- İptalAnahtar sayfasından tek tıkla iptal edilir. İptal edilen anahtarla yapılan istek 403 api_key_disabled döner.
- Plan tanımlamaStarter/Pro satın alımı Paddle üzerinden tamamlandığında plan, ödemeyi yapan hesabın anahtarlarına otomatik tanımlanır. Ölçek planı için bize yazın.
API anahtarıyla yapılan tüm isteklerin yanıtında bu üç başlık döner:
- X-RateLimit-LimitPlanın günlük istek limiti. Sınırsız planda literal olarak unlimited.
- X-RateLimit-RemainingBugün kalan istek hakkı. Sınırsız planda unlimited.
- X-RateLimit-ResetKotanın yenileneceği bir sonraki UTC gece yarısı (unix epoch, saniye).
Kota, hız ve kapsam.
Günlük kota UTC gece yarısında sıfırlanır. Aşağıdaki tablo backend'deki plan tablosuyla birebir aynıdır; entegrasyonunuzda sabitlemek yerine GET /api-info çıktısını okumanızı öneririz.
- IP başına hız limitiDakikada 30 istek. Aşımda 429 rate_limited + Retry-After: 60.
- Toplu istekÇağrı başına en fazla 50 URL — tüm planlarda aynı. Her URL 1 kota birimi.
- Kota maliyeti/resolve ve /bypass çağrı başına 1 birim; /job, /status, /batch/{batch_id}, /history ve /api-info 0 birim.
- Kota iadesiÖlü link (422), dead durumunda biten iş ve bellek-içi cache isabetinde düşen birim otomatik iade edilir.
GET /api-info kimlik doğrulama istemez, kotadan düşmez ve tüm limitleri backend sabitlerinden türeterek yayınlar. Bir limit değiştiğinde önce burası değişir.
# Auth gerekmez, kotadan düşmez — limitleri koda gömmek yerine buradan okuyun.curl -sS https://api.kisalinkatla.com/api-infoWebhook/geri çağrı bildirimi yok; sonucu GET /job/{job_id} ile poll ederek alırsınız. Resmî SDK, IP izin listesi ve SSO da bulunmuyor.
Tek zarf, sabit kodlar.
Kimlik ve kota hataları yapılandırılmış bir zarfla döner. error.code makine tarafından okunacak sabit değerdir; error.message insana yöneliktir ve değişebilir. Kod yazarken message'a değil code'a bakın.
HTTP/1.1 429 Too Many RequestsRetry-After: 33120X-RateLimit-Limit: 500X-RateLimit-Remaining: 0X-RateLimit-Reset: 1758153600{ "error": { "code": "quota_exceeded", "message": "Daily quota exhausted for the 'starter' plan (500/500 requests); it resets at UTC midnight. Upgrade your plan at https://kisalinkatla.com/developers/keys", "retryable": true, "docs_url": "https://kisalinkatla.com/developers/keys", "plan": "starter", "daily_limit": 500, "reset_at": 1758153600 }, "detail": "Daily quota exhausted for the 'starter' plan (500/500 requests); it resets at UTC midnight. Upgrade your plan at https://kisalinkatla.com/developers/keys"}Geriye dönük uyumluluk: kimlik/kota hatalarında zarfın yanında eski detail alanı da gönderilmeye devam ediyor. Yeni kodda error.code kullanın; detail alanı eskimiştir (2026-09-17).
- 422 · dead_urlÖn kontrol linki ölü olarak işaretlediğinde gövde {"detail": {"error": "dead_url", "reason": "…"}} biçimindedir. Kota iade edilir, iş kuyruğa hiç girmez.
- 422 · doğrulamaDesteklenmeyen alan adı veya bozuk URL şema katmanında yakalanırsa FastAPI'nin standart {"detail": [ … ]} listesi döner. HTTP kodu yine 422'dir.
- 422 · toplu istek boyutuToplu istekte 50'den fazla URL şema doğrulamasında yakalanır ve standart {"detail": [ … ]} listesiyle 422 döner. Koddaki 400 batch_too_large kolu bu yüzden pratikte hiç tetiklenmez.
- 404İş veya batch yok ya da bu anahtara ait değil.
44 alan adı, tek şema.
Şerit, işin nasıl çözüleceğini belirler: fast şerit saf HTTP'dir ve saniyeler sürer; heavy şerit gerçek tarayıcı çalıştırır, daha uzun sürer ve asenkron akışla kullanılmalıdır. Listenin canlı hâli GET /api-info → supported_domains alanındadır.
Listede olmayan bir alan adı gönderirseniz istek 422 ile reddedilir ve kotanızdan düşmez.
Günlük kota, sabit fiyat
Kullanıcı başına ücret yok. Kota her gün UTC 00:00'da sıfırlanır. İstediğiniz an yükseltin ya da bırakın.
Prototipler ve API'yi denemek için.
- Hesap başına günlük 50 istek
- 3 aktif anahtara kadar (kota ortak)
- Toplu istek: 50 URL
- Tüm kayıtlı kısaltıcılar
Küçük projeler ve büyüyen entegrasyonlar için.
- Günlük 500 istek
- 3 aktif anahtara kadar
- Toplu istek: 50 URL
- E-posta desteği
Üretimde, düzenli trafiği olan ürünler için.
- Günlük 5.000 istek
- 3 aktif anahtara kadar
- Toplu istek: 50 URL
- E-posta desteği · 24 saat
Yüksek hacimli ekipler için — plan elle tanımlanır.
- Günlük 50.000 istek
- 3 aktif anahtara kadar
- Toplu istek: 50 URL
- Öncelikli e-posta desteği
Kota dolunca otomatik olarak 429 + Retry-After döner — ücretli aşım yoktur, istekler sessizce faturalanmaz.
Sözleşme günlüğü.
İstek veya yanıt şekli değiştiğinde eski şekil burada tarihiyle birlikte eskimiş olarak kalır.
- Eklendi: Public OpenAPI 3 şeması https://www.kisalinkatla.com/openapi.json adresinde (aynı şema api.kisalinkatla.com/openapi.json'da). AI ve kod asistanları için düz Markdown referansı: /developers.md.
- Değişti: GET /api-info yanıtındaki docs_url artık https://www.kisalinkatla.com/developers (önceden yönlendirmeli apex adres). Alan adı ve tipi aynı.
- Düzeltildi (dokümantasyon): Bearer token olarak gönderilen anahtar 401 missing_api_key değil, zarfsız bir 401 döndürür. API anahtarlı çağrılarda message alanları İngilizcedir; örnekler buna göre güncellendi.
- Düzeltildi (dokümantasyon): Kuyrukta dead durumunda biten işin kota birimi de iade edilir.
- Düzeltildi (dokümantasyon): Toplu istekte 50'den fazla URL 400 batch_too_large değil, şema doğrulamasında 422 döner; desteklenmeyen alan adı da şema katmanında reddedilir ve kota hiç düşmez. POST /batch/bypass, GET /batch/{batch_id} ve GET /history artık public OpenAPI şemasında.
- Kaldırıldı (dokümantasyon): webhook_url alanı hiçbir zaman bildirim göndermedi; artık belgelenmiyor. Sonuç yalnızca poll ile alınır.
- Eklendi: GET /api-info — kimlik doğrulama istemeyen, kotadan düşmeyen sözleşme özeti (plan limitleri, batch limiti, rate limit, hata kodları, desteklenen alan adları).
- Eklendi: POST /batch/bypass ve GET /batch/{batch_id} artık X-API-Key ile kullanılabiliyor. Önceden yalnızca premium web oturumu kabul ediliyordu; API anahtarı olan müşteriler toplu isteği hiç kullanamıyordu.
- Eklendi: Kimlik ve kota hataları yapılandırılmış zarfla dönüyor — {"error": {"code", "message", "retryable", "docs_url"}}.
- Eklendi: API anahtarıyla yapılan tüm isteklerde X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset başlıkları.
- Eskimiş: hata gövdesindeki detail alanı. Geriye dönük uyumluluk için gönderilmeye devam ediyor; yeni kod error.code okumalı.
- Eskimiş: GET /status/{id}. Çalışmaya devam ediyor, yeni entegrasyonlar GET /job/{job_id} kullanmalı.
- Düzeltildi (dokümantasyon): Plana göre değişen toplu istek boyutu ve anahtar sayısı hiçbir zaman var olmadı. Toplu istek tüm planlarda 50 URL, aktif anahtar sınırı tüm planlarda 3.
Beş dakikada ilk çağrı.
Ücretsiz plan, kredi kartı yok. Saf HTTP: curl, fetch veya requests yeter.
Reklamlı kısa linkler için bypass API'si.