Kısa yanıt
LLMWebSearch API hangi hataları döndürebilir ve bunlar ücretlendirilir mi?
LLMWebSearch altı HTTP hatasına sahiptir: 400 invalid_parameter, 401 invalid_api_key, 402 insufficient_credits, 429 rate_limited, 502 search_failed ve 504 search_timeout. Hiçbiri ücretlendirilmez. Okunamayan sayfalar bunun yerine 200 içinde bir content_status gösterir. Çalışan bir arama 1 kredi tutar, Ekim 2026 itibarıyla $1,20/1K arama itibarıyla. KYC yok; kripto ile ödeme.
Hangi HTTP hataları var?
Gövde her zaman {"error": {"code": "…", "message": "…"}} olur. Hiçbir hata kredi kullanmaz.
| HTTP | code | Neden | Yeniden denensin mi? |
|---|---|---|---|
| 400 | invalid_parameter | Zorunlu bir parametre eksik veya bir değer aralık dışında | Hayır: isteği düzeltin |
| 401 | invalid_api_key | API anahtarı eksik, yanlış veya iptal edilmiş | Hayır: anahtarı kontrol edin |
| 402 | insufficient_credits | Bakiye bu çağrının ücretini karşılayamıyor | Hayır: bir paket satın alın |
| 429 | rate_limited | Hesabın izin verdiğinden dakikada daha fazla çağrı | Evet, bir aradan sonra |
| 502 | search_failed | Arama tamamlanamadı | Evet, backoff ile |
| 504 | search_timeout | 30 saniye içinde arama sonucu yok | Evet, backoff ile |
Sayfa durumu hatadan nasıl farklıdır?
Sayfa durumu tek bir sonucu tanımlar, çağrıyı değil. Arama çalıştı, sonuçlar orada ve credits_used her zamanki gibi ayarlandı. Sadece o sayfanın içeriği eksik ve content_status nedeni söylüyor: blocked_by_robots, blocked_by_site_policy, target_refused, fetch_failed, fetch_timeout veya unsupported_content.
Bunları tüm aramayı yeniden denemek için hata olarak görmeyin. Diğer sonuçları, eksik sayfanın snippet'ini veya farklı bir kaynağı kullanın. Yanıt formatı sayfası her durumu bir tabloda açıklar.
Neden bir reddetme etrafında asla yeniden denemiyorsunuz?
Çünkü reddetme sitenin cevabıdır ve biz buna saygı duyarız. Okuyucumuz robots.txt'ye uyar: kendini LLMWebSearch olarak tanıtır, bir sitenin onun için ya da tüm robotlar için yazdığı kurallara uyar ve okumasına izin verilmeyen her sayfanın içeriğini dışarıda bırakır. robots.txt dosyasında Content-Signal: ai-input=no ayarlayan bir site, sayfalarını sonuçlarınızın içeriğinden uzak tutar. Bir site okuyucumuzu 403, 429 veya bir challenge sayfasıyla reddettiğinde, bunu sitenin durumunu target_status içinde belirterek target_refused olarak raporlarız.
Bir site okuyucumuzu geri çevirdiğinde sonuç, içerik olmadan ve sitenin durumuyla döner: CAPTCHA'ları asla çözmeyiz, hesaplara giriş yapmayız veya bir engeli ya da ödeme duvarını aşmaya çalışmayız. Başka bir kimlik veya gizlenmiş bir tarayıcıyla da yeniden denemeyiz. Agent'ınız böyle bir sayfada döngüye girmemeli: sonuç değişmez ve site hayır dedi.
Kodum ne zaman yeniden denemeli?
Yalnızca 429, 502 ve 504 üzerinde. Bekleyin, sonra tekrar deneyin, her seferinde bekleme süresini ikiye katlayın ve paralel çalışanların aynı anda yeniden denememesi için biraz rastgelelik ekleyin. Üç ila beş deneme yeterlidir; sonrasında hatayı raporlayın.
400, 401 veya 402 için asla yeniden denemeyin: bir şeyi değiştirene kadar aynı istek aynı cevabı verir. Sayfalar için, fetch_failed ve fetch_timeout daha sonra yeni bir arama veya bir /extract çağrısı ile işe yarayabilir. target_refused, blocked_by_robots ve blocked_by_site_policy kesindir.
import os
import random
import time
import requests
API = "https://llmwebsearch.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]}
RETRY_ON = {429, 502, 504}
def search(body, attempts=5):
delay = 1.0
for attempt in range(1, attempts + 1):
resp = requests.post(API, headers=HEADERS, json=body, timeout=60)
if resp.status_code == 200:
return resp.json()
err = resp.json().get("error", {})
if resp.status_code not in RETRY_ON or attempt == attempts:
raise RuntimeError(f"{resp.status_code} {err.get('code')}: {err.get('message')}")
time.sleep(delay + random.uniform(0, delay / 2))
delay = min(delay * 2, 30)
data = search({"q": "how to rotate api keys without downtime"})
unread = [r["url"] for r in data["results"] if r["content_status"] not in ("ok", "not_requested")]
print("credits:", data["credits_used"], "| pages not read:", unread)
402 insufficient_credits durumunda ne yapmalıyım?
Durdurun ve bakiye yükleyin. Çağrı çalıştırılmadı ve hiçbir ücret alınmadı. Uzun bir işin ortasında durmamak için önce ücretsiz olan GET https://llmwebsearch.com/api/v1/credits ile bakiyenizi kontrol edin ve planladığınız arama sayısıyla karşılaştırın. read değeri 3'ün üzerinde olan bir aramanın 2 kredi gerektirdiğini unutmayın.
Krediler kripto bakiyenizle satın alınan paketlerden gelir. Arama kredilerinin son kullanma tarihi yoktur: bu ay kullanmadığınız krediler gelecek yıl da orada durur.
Rate limit'in altında nasıl kalırım?
Kendi kodunuzda aynı anda çalışan çağrı sayısını sınırlayın. Her hesabın dashboard'da gösterilen bir dakika başına çağrı limiti vardır; destek ekibine sorun, yükseltilebilir. Küçük bir paralel çalışan havuzu, çoğu agent için dört ila sekiz, ani yükselmeler olmadan istikrarlı bir hız sağlar. Python ve Node.js sayfaları böyle bir havuzu gösterir.
429 aldığınızda, bir sonraki denemeden önce duraklayın, hemen tekrar göndermeyin. Hemen yeniden denemek sadece daha fazla reddedilen çağrı ekler.
Hatalar: sık sorulan sorular
Tüm sayfaları reddedilen bir arama yine de bir krediye mal olur mu?
Evet, eğer arama kendisi çalıştıysa: sıralanmış sonuçları ve snippet'leri hâlâ alırsınız. Bir aramanın fiyatı, sayfalarının kaçının okunabildiğine bağlı değildir.
401 iptal edilmiş bir anahtardan mı kaynaklanır?
Olabilir. İptal edilmiş bir anahtar, bir yazım hatası, eksik bir Bearer öneki veya bize hiç ulaşmayan bir header, hepsi 401 invalid_api_key verir. Her agent, uygulama veya ekip arkadaşı için bir API anahtarı oluşturun ve dashboard'dan diğerlerine dokunmadan istediğinizi iptal edin.
Bir sayfa neden fetch_timeout döndürdü?
Sayfalar paralel olarak okunur ve 15 saniyeden uzun süren bir sayfa, tüm yanıtı geciktirmemesi için içerik olmadan döndürülür. Yavaş siteler bazen daha sonraki bir denemede yanıt verir.
Başarısız çağrılarımı görebilir miyim?
Evet. Dashboard geçmişi, başarısız olanlar dahil, çağrılarınızı 30 gün boyunca durumları ve kredileriyle listeler. Başarısız çağrılar 0 kredi gösterir.