Hızlı Başlangıç
Bu rehber sizi dört adımda sıfırdan akışlı bir AI yanıtına ulaştırır. Sonunda kimlik doğrulaması yapmış, bir AI oturumu oluşturmuş, bir mesaj göndermiş ve akış halinde bir yanıt almış olacaksınız.
Bu adımlar için doğrulanmış bir hesap, AI erişimi, kişisel kapsamlı bir geliştirici token'ı, curl ve jq gerekir. Token oluşturma adımları Geliştirici Erişimi sayfasındadır. Aşağıdaki değişim işlemi oturum uç noktaları için kısa ömürlü bir erişim token'ı verir.
Ortam Değişkenleri
Bu sayfadaki herhangi bir örneği çalıştırmadan önce bunları ayarlayın:
export BASE_URL="https://api.chainabit.com/api/v1"
export DEVELOPER_TOKEN="YOUR_DEVELOPER_TOKEN"
export TOKEN="$(curl --fail-with-body -sS -X POST "$BASE_URL/auth/developer-tokens/exchange" \
-H "Content-Type: application/json" \
-d "{\"token\":\"$DEVELOPER_TOKEN\"}" | jq -er '.data.tokens.accessToken')"Yalnızca bir kuruluşa bağlı token'lar kişisel oturuma çevrilemez. Mevcut bir girişten alınmış erişim token'ını da kullanabilirsiniz; bkz. Kimlik Doğrulama.
Adım 1: Bir AI Oturumu Oluşturun
Oturum, kalıcı bir konuşma dizisidir. Tanımlamak için bir başlıkla bir tane oluşturun.
SESSION_RESPONSE="$(curl --fail-with-body -sS -X POST "$BASE_URL/ai/sessions" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title": "My First Session"}')"
printf '%s\n' "$SESSION_RESPONSE" | jq .
export SESSION_ID="$(printf '%s\n' "$SESSION_RESPONSE" | jq -er '.data.id')"const response = await fetch(`${BASE_URL}/ai/sessions`, {
method: 'POST',
headers: {
Authorization: `Bearer ${TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ title: 'My First Session' }),
});
const { data } = await response.json();
const SESSION_ID = data.id;import requests
response = requests.post(
f"{BASE_URL}/ai/sessions",
json={"title": "My First Session"},
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = response.json()["data"]
SESSION_ID = data["id"]Yanıt 201 Created
{
"data": {
"id": "<session-uuid>",
"title": "My First Session",
"titleGenerationState": "resolved",
"status": "active",
"sessionType": "chat",
"mode": "auto",
"visibility": "private",
"startedAt": "<ISO-8601 timestamp>",
"lastActivityAt": "<ISO-8601 timestamp>",
"archivedAt": null,
"pinnedAt": null,
"chainyId": null,
"metadata": { "title": "My First Session" },
"privacyMode": "standard",
"temporary": false,
"temporaryExpiresAt": null,
"temporaryRetentionDays": null,
"temporaryContextMode": null
}
}cURL komutu, dönen data.id değerini sonraki adım için SESSION_ID olarak dışa aktarır.
Adım 2: Bir Mesaj Gönderin
Oturuma bir mesaj gönderin. API düz metin içeriği kabul eder.
curl -X POST "$BASE_URL/ai/sessions/$SESSION_ID/messages" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"content": "What can I build with the Chainabit API?"}'const response = await fetch(
`${BASE_URL}/ai/sessions/${SESSION_ID}/messages`,
{
method: 'POST',
headers: {
Authorization: `Bearer ${TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ content: 'What can I build with the Chainabit API?' }),
}
);
const { data } = await response.json();
const MESSAGE_ID = data.assistantMessage.id;import requests
response = requests.post(
f"{BASE_URL}/ai/sessions/{SESSION_ID}/messages",
json={"content": "What can I build with the Chainabit API?"},
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = response.json()["data"]
MESSAGE_ID = data["assistantMessage"]["id"]Yanıt 201 Created
{
"data": {
"sessionId": "sess_01HQ3K5N2P4R7T9V1X3Z5A7C9E",
"userMessage": {
"id": "msg_01HQ3K7R2S5T8V2Y4A6C8E1G3I",
"role": "user",
"content": "What can I build with the Chainabit API?",
"createdAt": "2026-05-04T10:00:05.000Z"
},
"assistantMessage": {
"id": "msg_01HQ3K8S3T6U9W3Z5B7D0F2H4J",
"role": "assistant",
"content": "",
"status": "pending",
"createdAt": "2026-05-04T10:00:05.100Z"
},
"run": { "id": "run_01HQ3K9T4U7V0X4A6C8E1G3I5K", "status": "queued" },
"effortDowngrade": null
}
}Bu uç nokta hem kullanıcı mesajını hem asistan mesajını, artı yanıtı üretecek çalıştırmayı (run) oluşturur ve döndürür — bir sonraki adımda kullanıcı mesajının değil, asistan mesajının ID'sini akışa alırsınız:
export MESSAGE_ID="msg_01HQ3K8S3T6U9W3Z5B7D0F2H4J"Adım 3: Yanıtı Akış Halinde Alın
AI yanıtını gerçek zamanlı almak için bir sunucu-gönderimli olay (SSE) akışı açın.
curl "$BASE_URL/ai/sessions/$SESSION_ID/messages/$MESSAGE_ID/stream" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: text/event-stream"import requests
with requests.get(
f"{BASE_URL}/ai/sessions/{SESSION_ID}/messages/{MESSAGE_ID}/stream",
headers={"Authorization": f"Bearer {TOKEN}", "Accept": "text/event-stream"},
stream=True,
) as r:
for line in r.iter_lines():
if line:
print(line.decode())SSE Çıktısı
Tarayıcının yerleşik EventSource API'si gereken Authorization başlığını ayarlayamaz. İstek başlıklarını destekleyen bir akış HTTP istemcisi kullanın.
Her akıştaki ilk çerçeve bir bağlantı ön bilgisidir; sonrasındaki her olay, type'a özgü bir payload alanı taşıyan numaralandırılmış bir zarf içinde gelir:
event: stream.connected
data: {"runId": "run_01HQU..."}
id: 1
event: message.delta
data: {"eventId":1,"type":"message.delta","runId":"run_01HQU...","timestamp":"2026-05-04T10:00:06.000Z","payload":{"delta":"You can build"},"v":1}
id: 2
event: message.delta
data: {"eventId":2,"type":"message.delta","runId":"run_01HQU...","timestamp":"2026-05-04T10:00:06.100Z","payload":{"delta":" AI-agent workflows,"},"v":1}
id: 3
event: message.completed
data: {"eventId":3,"type":"message.completed","runId":"run_01HQU...","timestamp":"2026-05-04T10:00:07.000Z","payload":{"runId":"run_01HQU...","messageId":"msg_01HQ3K7R2S5T8V2Y4A6C8E1G3I","content":"You can build AI-agent workflows, integrate connectors, and automate pipelines."},"v":1}Tam yanıtı oluşturmak için message.delta olaylarının payload.delta alanını toplayın. message.completed geldiğinde akışı kapatın — deltaları birleştirmek yerine doğrudan kullanmak isterseniz tam metin payload.content içinde de bulunur.
Sırada Ne Var
- Geliştirici Erişimi sayfasından doğru kapsamlara sahip bir API anahtarı edinin.
- Kimlik Doğrulama sayfasında JWT oturum kimlik doğrulamasını anlayın.
- İlk AI Oturumunuzu Çalıştırın rehberinde tam bir AI oturumu eğitimini adım adım izleyin.
- Tüm oturum, mesaj ve akış uç noktaları için eksiksiz AI API Referansı belgesine göz atın.