API qo'llanma
So'rov yuborasiz — serverda claude CLI ishga tushadi — natija qaytadi.
1. Kalit oling
Dashboard dan API kalit yarating. Kalit
cak_ bilan boshlanadi va faqat bir marta ko'rsatiladi.
export API_KEY=cak_...
2. Autentifikatsiya
Har bir so'rovda X-API-Key header yuboriladi:
curl /v1/chat \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "Salom"}'
3. Oddiy so'rov
POST /v1/chat — javob tayyor bo'lguncha kutadi.
{
"prompt": "Python da fibonachchi funksiyasini yoz",
"model": "sonnet"
}
Javob:
{
"ok": true,
"session_id": "18735400-6cb8-4c87-ae70-382fd73d7ce0",
"result": "def fib(n): ...",
"num_turns": 1,
"duration_ms": 8084,
"total_cost_usd": 0.019,
"usage": { "input_tokens": 10, "output_tokens": 479 }
}
4. Suhbatni davom ettirish
Javobdagi session_id ni keyingi so'rovga qo'shsangiz, Claude
oldingi kontekstni eslab qoladi:
{
"prompt": "Endi unga testlar yoz",
"session_id": "18735400-6cb8-4c87-ae70-382fd73d7ce0"
}
5. Uzoq so'rovlar — job navbati
Katta vazifalar uchun POST
/v1/jobs ishlating: javob darhol qaytadi, natijani keyin
olasiz. Timeout muammosi bo'lmaydi.
# 1. Navbatga qo'yish
curl -X POST /v1/jobs \
-H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
-d '{"prompt": "Butun loyihani refactor qil", "cwd": "my-app",
"permission_mode": "acceptEdits"}'
# → {"id": "7c1e...", "status": "queued"}
# 2. Natijani so'rash
curl /v1/jobs/7c1e... -H "X-API-Key: $API_KEY"
# → {"status": "succeeded", "result": "...", "cost_usd": 0.42}
Holatlar: queued → running →
succeeded | failed | timeout |
canceled
6. Streaming (SSE)
POST /v1/chat/stream —
javob token-token keladi.
const res = await fetch("/v1/chat/stream", {
method: "POST",
headers: { "X-API-Key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ prompt: "Uzun maqola yoz" }),
});
const reader = res.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
console.log(decoder.decode(value)); // event: ... / data: {...}
}
Hodisa turlari: system, stream_event (matn
bo'laklari), assistant, result,
saved, done, error.
7. Fayllar bilan ishlash
Claude fayl yaratishi/tahrirlashi uchun ikki maydon kerak:
{
"prompt": "hello.txt yarat, ichida SALOM DUNYO yozilsin",
"cwd": "demo",
"permission_mode": "acceptEdits"
}
cwd — server workspace'i ichidagi papka (avtomatik
yaratiladi, tashqariga chiqib bo'lmaydi).
permission_mode dontAsk bo'lsa tahrirlar rad
etiladi, acceptEdits bo'lsa ruxsat beriladi.
So'rov maydonlari
| Maydon | Tur | Izoh |
|---|---|---|
| prompt | string | Majburiy. Claude ga yuboriladigan matn |
| session_id | uuid | Oldingi suhbatni davom ettirish |
| model | string | opus / sonnet / haiku |
| cwd | string | Workspace ichidagi papka |
| system_prompt | string | Default system promptga qo'shiladi |
| permission_mode | string | dontAsk, acceptEdits, plan… |
| allowed_tools | string[] | ["Read", "Grep", "Bash(git *)"] |
| disallowed_tools | string[] | Taqiqlangan toollar |
| max_turns | int | Agent nechta qadam bosishi mumkin |
| timeout | int | Sekundlarda |
Barcha endpointlar
| Metod | Yo'l | Vazifasi |
|---|---|---|
| POST | /v1/chat | So'rov yuborib javobni kutish |
| POST | /v1/chat/stream | Javobni SSE orqali olish |
| POST | /v1/jobs | Navbatga qo'yish |
| GET | /v1/jobs | Joblar ro'yxati (?status=) |
| GET | /v1/jobs/{id} | Job holati va natijasi |
| DELETE | /v1/jobs/{id} | Bekor qilish (faqat queued) |
| GET | /v1/sessions | Sessiyalar (?q= qidiruv) |
| GET | /v1/sessions/{id}/messages | Suhbat tarixi |
| DELETE | /v1/sessions/{id} | Sessiyani o'chirish |
| GET | /v1/usage | Xarajat statistikasi (?days=) |
| GET | /health | Server, CLI va DB holati |
To'liq interaktiv hujjat: Swagger UI
Xato kodlari
| Kod | Ma'nosi |
|---|---|
| 401 | Kalit yo'q, noto'g'ri yoki bekor qilingan |
| 402 | Kunlik yoki oylik budjet tugagan |
| 404 | Sessiya/job topilmadi yoki sizniki emas |
| 409 | Job allaqachon boshlangan — bekor qilib bo'lmaydi |
| 413 | Prompt juda uzun |
| 422 | So'rov formati noto'g'ri |
| 502 | CLI xato qaytardi |
| 504 | Timeout |
Xato javoblari doim shu ko'rinishda: {"ok": false, "error": "sabab"}