Veb qidiruv (Keenable)
Internetdan qidirish va sahifalarni o‘qish — to‘g‘ridan-to‘g‘ri kodingizdan, modellar uchun ishlatadigan kalitning o‘zi bilan. Ikki yo‘li bor: /v1/chat/completions orqali oddiy model sifatida yoki sof JSON qaytaradigan alohida uchlar orqali.
Narxi
Har bir so‘rov uchun 0,005 $ — ya’ni 1000 so‘rov uchun 5 $.
Narx chaqiruv bo‘yicha: bitta chaqiruv bitta so‘rov, qancha natija qaytishidan qat’i nazar. 50 ta manba topish bitta manba topish bilan bir xil turadi.
Muvaffaqiyatsiz so‘rovlar uchun pul yechilmaydi — na qidiruvning nosozligi uchun, na noto‘g‘ri parametrlar uchun.
| nima | qancha hisoblanadi |
|---|---|
| 1 ta natija qaytargan qidiruv | 1 so‘rov |
| 50 ta natija qaytargan qidiruv | 1 so‘rov |
| sahifani o‘qish | 1 so‘rov |
| har qanday turdagi xato | 0 |
Birinchi yo‘l — model sifatida
Cursor, Claude Code, OpenCode va boshqa har qanday OpenAI mijozida bironta ham o‘zgartirishsiz ishlaydi: modelni tanlashning o‘zi kifoya.
Modellar:
| model | nima qiladi |
|---|---|
keenable/search | internetdan qidiradi, parchalari bilan manbalar ro‘yxatini qaytaradi |
keenable/read | sahifani o‘qiydi va matnini markdown ko‘rinishida qaytaradi |
Qidiruv
curl https://nordrouter.com/v1/chat/completions \
-H "Authorization: Bearer $NORDROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "keenable/search",
"messages": [{"role": "user", "content": "bugungi bitkoin kursi"}]
}'Javob sifatida oddiy yordamchi xabari keladi, unda manbalar ro‘yxati bo‘ladi: sarlavha, e’lon qilingan sana, to‘liq manzil va har biriga parcha.
Sahifani o‘qish
Xabardagi birinchi so‘z — manzil. Undan keyin o‘sha sahifada aynan nima qiziqtirayotganini qo‘shishingiz mumkin.
curl https://nordrouter.com/v1/chat/completions \
-H "Authorization: Bearer $NORDROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "keenable/read",
"messages": [{"role": "user", "content": "https://uz.wikipedia.org/wiki/Tokio aholi soni"}]
}'Ko‘rsatmasiz butun sahifa markdown ko‘rinishida qaytadi. Ko‘rsatma bilan esa faqat so‘raganingiz: natija keyin modelga o‘tadigan bo‘lsa, bu tezroq va sizning tomoningizdagi tokenlar bo‘yicha sezilarli arzonroq.
Ko‘rsatma nimaga kerak
Vikipediya maqolasi o‘n minglab belgidan iborat. Sizga bitta raqam kerak bo‘lsa, ko‘rsatma ham vaqtni, ham keyingi qadamning tokenlarini tejaydi.
Python
from openai import OpenAI
client = OpenAI(
api_key="sizning-kalitingiz",
base_url="https://nordrouter.com/v1",
)
found = client.chat.completions.create(
model="keenable/search",
messages=[{"role": "user", "content": "shu haftadagi sun’iy intellekt yangiliklari"}],
)
print(found.choices[0].message.content)Ikkinchi yo‘l — alohida uchlar
Agar sizga oqma matn emas, maydonlar, sanalar va saralagichlar bilan natija kerak bo‘lsa, JSON’ni oling.
POST /v1/search
curl https://nordrouter.com/v1/search \
-H "Authorization: Bearer $NORDROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "neyron tarmoqlar yangiliklari",
"max_results": 5,
"published_after": "7d"
}'Parametrlar:
| parametr | turi | sukut bo‘yicha | nima qiladi |
|---|---|---|---|
query | satr | majburiy | nimani qidirish kerak |
site | satr | — | faqat shu domenda qidirish, masalan kun.uz |
max_results | son | 10 | nechta natija, 1 dan 50 gacha |
snippet_max_chars | son | — | parchaning uzunligi, 180 dan 10 000 belgigacha |
published_after | satr | — | shu paytdan keyin e’lon qilingan materiallar |
published_before | satr | — | undan oldin e’lon qilinganlari |
acquired_after | satr | — | indeksga keyinroq tushganlari |
acquired_before | satr | — | indeksga oldinroq tushganlari |
query_time | satr | — | indeksda o‘sha paytdagi holatiga ko‘ra qidirish |
Sanalar uch ko‘rinishda qabul qilinadi: 2026-08-01, to‘liq ISO 8601 vaqt tamg‘asi yoki nisbiy ko‘rinishda — 30min, 12h, 7d, 3mo, 1y.
E’lon qilish va indeksga tushish bir narsa emas
published_* materialning o‘z sanasi bo‘yicha saralaydi, acquired_* esa sahifa indeksga tushgan sana bo‘yicha. Bu farq muhim: sahifani e’lon sanasiga tegmasdan qayta yozish mumkin. Agar sizga «bir kun ichida tarmoqda nima paydo bo‘ldi» kerak bo‘lsa, acquired_after dan foydalaning.
Javob:
{
"query": "neyron tarmoqlar yangiliklari",
"count": 5,
"results": [
{
"title": "Maqola sarlavhasi",
"url": "https://example.com/article",
"description": "Qisqacha tavsif",
"snippet": "Sahifa matnidan parcha…",
"published_at": "2026-08-25T10:30:00Z",
"acquired_at": "2026-08-25T11:02:00Z"
}
]
}GET /v1/fetch
curl -G https://nordrouter.com/v1/fetch \
-H "Authorization: Bearer $NORDROUTER_KEY" \
--data-urlencode "url=https://example.com/article" \
--data-urlencode "prompt=narxlar jadvalini ajratib ol"Parametrlar:
| parametr | turi | sukut bo‘yicha | nima qiladi |
|---|---|---|---|
url | satr | majburiy | sahifaning manzili |
max_chars | son | 50 000 | nechta belgi qaytarilsin |
prompt | satr | — | aynan nimani ajratib olish kerak, 2000 belgigacha |
live | true / false | false | indeksdan emas, to‘g‘ridan-to‘g‘ri saytdan olish |
Javob:
{
"url": "https://example.com/article",
"title": "Sarlavha",
"description": "Tavsif",
"author": "Muallif",
"content": "# Sahifa matni markdown ko‘rinishida…",
"published_at": 1787777084
}live qachon kerak
Indeksdan sahifa tezroq keladi, lekin indeksda hamma narsa ham yo‘q. Sahifa yangi bo‘lsa yoki qidiruv robotlaridan yopilgan bo‘lsa, live=true qo‘ying — u holda sahifa to‘g‘ridan-to‘g‘ri saytdan o‘qiladi. Narxi o‘sha-o‘sha.
Cheklovlar
| tezlik | har bir kalit uchun sekundiga 2 so‘rov |
| parchaning uzunligi | 180 dan 10 000 belgigacha |
| bir chaqiruvdagi natijalar | 50 tagacha |
| o‘qishdagi ko‘rsatmaning uzunligi | 2000 belgigacha |
Tezlikdan oshib ketilsa, Retry-After sarlavhasi bilan 429 qaytadi — bir soniyadan keyin takrorlang.
Xatolar
| kod | ma’nosi | nima qilish kerak |
|---|---|---|
400 | query yoki url yo‘q, yoki manzilda http:// yo‘q | so‘rovni to‘g‘rilang |
401 | kalit qabul qilinmadi | Authorization ni tekshiring |
402 | balans tugadi | shaxsiy kabinetdan to‘ldiring |
429 | juda tez-tez | bir soniyadan keyin takrorlang |
502 | qidiruv javob bermadi | takrorlang; pul yechilmadi |
503 | qidiruv vaqtincha ishlamayapti | biz shug‘ullanyapmiz; pul yechilmadi |
Ko‘p beriladigan savollar
Bo‘sh natija uchun pul yechiladimi? Ha, agar qidiruv ishlagan va halol qilib «hech narsa topilmadi» deb javob bergan bo‘lsa — ish bajarilgan. Faqat xatolar bepul.
Oqim (streaming) qilish mumkinmi? Yo‘q va kerak ham emas: natijalar bir bo‘lakda, soniyaning ulushida keladi.
Tokenlar sanaladimi? Narx chaqiruv bo‘yicha, tokenlar unga ta’sir qilmaydi. Shunga qaramay ular model javobida ko‘rsatiladi — mijoz kutubxonalari javobni bo‘sh deb hisoblamasligi uchun.
search/… modellaridan farqi nimada? Ular avval qidiradi, so‘ng topilganini til modeli bilan javobga aylantiradi — siz ikkita ish uchun to‘laysiz. Bu yerda esa xom natijani olasiz va u bilan nima qilishni o‘zingiz hal qilasiz.