Biz har kuni yig'adigan hakaton, startap dasturi va IT-tanlov e'lonlarini o'z saytingiz, botingiz yoki ilovangizda ishlating. API bepul; kalit so'rov orqali beriladi va sayt egasi ruxsat bergandan keyin ishlaydi.
Authorization: Bearer hf_live_…Asosiy manzil: https://hack.xous.uz/api/v1/ · Javoblar JSON (UTF-8) · Vaqtlar ISO 8601, Toshkent vaqti bilan.
| So'rov | Nima qaytaradi |
|---|---|
GET /api/v1/hackathons/ | Hakatonlar ro'yxati (sahifalab). Muddati yaqinlari birinchi. |
GET /api/v1/hackathons/<id>/ | Bitta hakaton: to'liq tavsif, qatnashish shartlari, talablar. |
GET /api/v1/usage/ | Kalitingiz limiti va bugun nechta so'rov qilganingiz. |
| Parametr | Qiymat |
|---|---|
status | open (standart) — ro'yxatdan o'tish ochiq · past — o'tganlar · all |
region | uz — O'zbekiston · intl — xalqaro |
kind | hackathon · startup (startap dasturi) · contest (IT-tanlov) |
q | Nomdan qidirish |
updated_since | Shu vaqtdan keyin o'zgarganlar, masalan 2026-10-01. Sinxronlash uchun qulay: har safar oxirgi vaqtni yuboring |
page, page_size | Sahifa (1 dan) va hajmi (1–100, standart 20). Keyingi sahifa havolasi javobning next maydonida |
{
"count": 42,
"page": 1,
"page_size": 20,
"next": "https://hack.xous.uz/api/v1/hackathons/?page=2",
"results": [
{
"id": 118,
"title": "AI Hackathon Namangan",
"kind": "hackathon", // hackathon | startup | contest
"region": "uz", // uz | intl
"state": "closing_soon", // open | closing_soon | closed | unknown
"organiser": "IT Park",
"url": "https://…", // ro'yxatdan o'tish / asl e'lon
"page_url": "https://hack.xous.uz/h/118/",
"registration_closes_at": "2026-10-24T23:59:00+05:00",
"starts_at": "2026-10-26T09:00:00+05:00",
"ends_at": "2026-10-27T18:00:00+05:00",
"format": "offline", // online | offline | hybrid | unknown
"city": "Namangan",
"team_size_min": 2, "team_size_max": 5,
"prize": "50 mln so'm",
"themes": [],
"updated_at": "2026-10-19T10:12:00+05:00"
// … registration_opens_at, submission_deadline_at, results_at, venue, country_code, announced_at, first_seen_at
}
]
}
Bitta hakaton (/hackathons/<id>/) shu maydonlarga qo'shimcha description, eligibility, requirements, submission_requirements ni ham beradi.
curl -H "Authorization: Bearer $HACKFINDER_KEY" \ "https://hack.xous.uz/api/v1/hackathons/?region=uz&status=open"
import os, requests
response = requests.get(
"https://hack.xous.uz/api/v1/hackathons/",
params={"region": "uz", "status": "open"},
headers={"Authorization": "Bearer " + os.environ["HACKFINDER_KEY"]},
timeout=20,
)
response.raise_for_status()
for item in response.json()["results"]:
print(item["title"], item["registration_closes_at"], item["url"])
const response = await fetch("https://hack.xous.uz/api/v1/hackathons/?status=open", {
headers: { Authorization: `Bearer ${process.env.HACKFINDER_KEY}` },
});
if (response.status === 429) {
const wait = response.headers.get("Retry-After"); // soniya
}
const { results } = await response.json();
Har kalitga: daqiqasiga 60 va sutkasiga 5000 so'rov. Har javobda qolgan limit sarlavhalarda keladi:
X-RateLimit-Remaining, X-RateLimit-Daily-Remaining. Limit tugasa 429 va Retry-After (soniya) qaytadi — shuncha kuting.
Ko'proq kerak bo'lsa, so'rovda yozing.
Maslahat: ro'yxatni tez-tez so'ramang — ma'lumot soatiga bir necha marta yangilanadi. Javobni o'zingizda saqlab, updated_since bilan faqat o'zgarganlarini oling.
| Kod | error.code | Sabab |
|---|---|---|
| 400 | bad_parameter, key_in_url | Parametr noto'g'ri yoki kalit URL ichida yuborilgan |
| 401 | missing_key, invalid_key | Kalit yo'q yoki noto'g'ri |
| 403 | key_revoked | Kalit o'chirilgan |
| 404 | not_found | Bunday hakaton yo'q |
| 429 | rate_limited | Limit tugadi, Retry-After ga qarang |
{"error": {"code": "rate_limited", "message": "Daqiqalik limit tugadi."}}
.env) saqlang. Brauzerdan to'g'ridan-to'g'ri so'rov ishlamaydi (CORS yopiq): o'z serveringiz orqali oling.?key=) yubormang — qabul qilinmaydi.url maydonidagi asl havolaga yo'naltiring.