Skip to content

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:

bash
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.

bash
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')"
javascript
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;
python
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

json
{
  "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.

bash
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?"}'
javascript
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;
python
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

json
{
  "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:

bash
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.

bash
curl "$BASE_URL/ai/sessions/$SESSION_ID/messages/$MESSAGE_ID/stream" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: text/event-stream"
python
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 ​

Built with purpose.