API Documentation
Solver.tr REST API — Cloudflare Turnstile token çözümü, OCR/captcha tanıma, bakiye ve kullanım istatistikleri.
https://api.solver.tr adresine yapılmalıdır.
Kimlik Doğrulama
API anahtarınızı apikey query parametresi, X-API-Key header'ı veya POST body içinde apiKey alanı ile gönderin.
GET /v1/turnstile/solve?apikey=YOUR_API_KEY&url=...&sitekey=...
X-API-Key: YOUR_API_KEY
Faturalama Modeli
Her istek önce aktif paket kotanızdan düşülür. Kota bittiğinde PAYG devreye girer ve USD cüzdanınızdan kesilir. Başarısız Turnstile/OCR isteklerinde ücret alınmaz.
| Parametre | Açıklama |
|---|---|
| billingSource | Yanıtta: entitlement, payg veya legacy |
| walletUsd | Güncel USD cüzdan bakiyesi (solve/ocr yanıtlarında) |
| balance | Legacy token bakiyesi (geriye dönük uyumluluk) |
Rate Limits
Limitler hesap türüne ve aktif pakete göre değişebilir.
| Limit | Değer | Açıklama |
|---|---|---|
| requests/minute | 500 | Dakikada maksimum istek |
| concurrent | 100 | Eşzamanlı istek |
Turnstile Solve
Cloudflare Turnstile challenge'ını çözer ve token döndürür. v1 ve v2 aynı parametreleri kullanır.
| Parametre | Tip | Açıklama |
|---|---|---|
| urlzorunlu | string | Turnstile widget'ının bulunduğu sayfa URL'i |
| sitekeyzorunlu | string | Cloudflare site key |
| apikeyzorunlu | string | API anahtarınız |
| actionopsiyonel | string | Turnstile action |
| cdataopsiyonel | string | Turnstile cData |
| proxyopsiyonel | string | username:password@ip:port |
| useragentopsiyonel | string | Özel User-Agent |
| txtopsiyonel | boolean | true → yalnızca token (plain text) |
{
"success": true,
"token": "0.QP6HPnK4UxEb3N9bLFUTfbXh7HLf...",
"requestId": "abd27dbe-f35e-47bd-9a2c-...",
"balance": 998,
"walletUsd": 12.50,
"billingSource": "entitlement",
"responseTime": 3817
}OCR Solve
Captcha/görsel içindeki metni tanır. Multipart (image) veya JSON (imageBase64) ile gönderilebilir. Maks. 5MB.
| Parametre | Tip | Açıklama |
|---|---|---|
| imagezorunlu* | file | Multipart alan adı: captcha görseli (PNG/JPG) |
| imageBase64zorunlu* | string | JSON body — base64 encoded görsel (* biri zorunlu) |
| apiKeyzorunlu | string | Header veya JSON body |
| modelopsiyonel | string | OCR model adı (worker destekliyorsa) |
| workeropsiyonel | string | Belirli worker'a yönlendirme (debug) |
| txtopsiyonel | boolean | true → yalnızca tanınan metin (plain text) |
{
"success": true,
"text": "A7K9M2",
"confidence": 0.98,
"model": "default",
"processing_ms": 842,
"requestId": "...",
"walletUsd": 11.98,
"billingSource": "payg",
"responseTime": 850
}Turnstile Pool
Önceden üretilmiş token havuzundan anında token alır. Havuz boşsa canlı çözüme düşer.
| Parametre | Tip | Açıklama |
|---|---|---|
| qzorunlu | string | Havuz slug (örn. site adı) |
| apikeyzorunlu | string | API anahtarınız |
| txtopsiyonel | boolean | Plain text token yanıtı |
GET https://api.solver.tr/v1/turnstile/pool?q=POOL_SLUG&apikey=YOUR_KEY
Balance
USD cüzdan, paket kotları, PAYG fiyatları ve aktif entitlement'ları döndürür.
{
"balance": 15420,
"walletUsd": 25.50,
"walletUsdCents": 2550,
"paygPrices": { "turnstile": 4, "ocr": 2 },
"billing": {
"turnstile": { "quotaRemaining": 100000, "hasUnlimited": false },
"ocr": { "quotaRemaining": 500, "hasUnlimited": false }
},
"entitlements": [],
"isActive": true
}Usage Stats
Toplam, başarılı ve başarısız istek istatistiklerinizi getirir.
{
"success": true,
"totalRequests": 5420,
"successfulRequests": 5380,
"failedRequests": 40,
"successRate": 99.26
}Rate Limit Status
Anlık rate limit durumunuzu ve kalan kotayı gösterir.
GET https://api.solver.tr/v1/rate-limit-status?apikey=YOUR_KEY
cURL — Turnstile
curl -G "https://api.solver.tr/v1/turnstile/solve" \ --data-urlencode "url=https://example.com" \ --data-urlencode "sitekey=0x4AAAAAAA..." \ --data-urlencode "apikey=YOUR_API_KEY"
cURL — OCR
curl -X POST "https://api.solver.tr/v1/ocr" \ -H "X-API-Key: YOUR_API_KEY" \ -F "image=@captcha.png"
curl -X POST "https://api.solver.tr/v1/ocr" \ -H "Content-Type: application/json" \ -d '{"imageBase64":"...","apiKey":"YOUR_KEY"}'
JavaScript
const res = await fetch('https://api.solver.tr/v1/turnstile/solve', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': 'YOUR_KEY' }, body: JSON.stringify({ url: 'https://example.com', sitekey: '0x4AAA...' }) }); const data = await res.json();
Python
import requests with open('captcha.png', 'rb') as f: r = requests.post( 'https://api.solver.tr/v1/ocr', headers={'X-API-Key': 'YOUR_KEY'}, files={'image': f} ) print(r.json()['text'])