Skip to content

Yapay Zeka Oturumları

Oturumlar, çok turlu yapay zeka etkileşimleri için kalıcı konuşma bağlamlarıdır. Oturumlar düzenleme amacıyla arşivlemeyi ve sabitlemeyi destekler; yapay zeka sağlayıcılarının veri saklama politikalarına uymak için sonlandırıldıktan 30 gün sonra otomatik olarak kalıcı biçimde silinir.

Oturum Yaşam Döngüsü Adımları

  1. Bir oturum oluşturmak için POST /ai/sessions çağırın (assistantType, isteğe bağlı metadata ve ihtiyacınız olan birincil bağlam kapsamını ayarlayın).
  2. session.id değerini saklayın ve oturum başlığını, durumunu ve son etkinliğini göstermek için GET /ai/sessions/:id uç noktasını yoklayın.
  3. İstediğiniz düzenleme akışı için PATCH /ai/sessions/:id/pin / archive / unpin / unarchive kullanın, konuşma bittiğinde ise DELETE /ai/sessions/:id çağırın.
  4. Geçmişi yüklemek (GET /ai/sessions), SSE akışlarını sürdürmek veya arayüzünüzde messageCount değerine başvurmak için oturum kimliklerini saklayın.
javascript
const chainyId = process.env.CHAINY_ID; // bu oturumun kapsamlandığı Chainy'nin kimliği

const manageSession = async () => {
  const sessionRes = await fetch(`${BASE_URL}/ai/sessions`, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${TOKEN}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      title: "Chainabit onboarding",
      assistantType: "chao",
      primaryContextType: "chainy",
      primaryContextId: chainyId,
    }),
  });
  const session = (await sessionRes.json()).data;

  await fetch(`${BASE_URL}/ai/sessions/${session.id}/pin`, {
    method: "PATCH",
    headers: { Authorization: `Bearer ${TOKEN}` },
  });

  const refreshed = await fetch(
    `${BASE_URL}/ai/sessions/${session.id}`,
    { headers: { Authorization: `Bearer ${TOKEN}` } }
  );
  console.log("Session status:", (await refreshed.json()).data.status);
};

Uç Noktalar

YöntemYolAçıklamaKimlik DoğrulamaHız Sınırı
GET/ai/sessionsOturumları listelerJWT + Yetkilendirme60/dk
POST/ai/sessionsOturum oluştururJWT + Yetkilendirme20/dk
GET/ai/sessions/:idBir oturumu getirirJWT + Yetkilendirme60/dk
DELETE/ai/sessions/:idBir oturumu sonlandırırJWT + Yetkilendirme30/dk
PATCH/ai/sessions/:id/archiveBir oturumu arşivlerJWT + Yetkilendirme30/dk
PATCH/ai/sessions/:id/unarchiveArşivlenmiş bir oturumu geri yüklerJWT + Yetkilendirme30/dk
PATCH/ai/sessions/:id/pinBir oturumu sabitlerJWT + Yetkilendirme60/dk
PATCH/ai/sessions/:id/unpinBir oturumun sabitlemesini kaldırırJWT + Yetkilendirme60/dk
POST/workspaces/:workspaceId/ai/sessions/:sessionId/shareHerkese açık bir paylaşım bağlantısı oluşturur veya yeniden etkinleştirirJWT + Yetkilendirme20/dk
DELETE/workspaces/:workspaceId/ai/sessions/:sessionId/shareBir paylaşım bağlantısını iptal ederJWT + Yetkilendirme20/dk
GET/cs/:urlShortKısa URL ile paylaşılan bir oturumu çözümlerYok (herkese açık)60/60s

GET /ai/sessions

Açıklama

Kimliği doğrulanmış kullanıcının yapay zeka oturumlarını listeler. Varsayılan olarak active oturumları döndürür. Arşivlenmiş oturumları listelemek için ?status=archived gönderin. Sonuçlar ofset tabanlı sayfalanır ve q ile aranabilir.

Kimlik doğrulama: JWT Bearer belirteci + etkin yapay zeka yetkilendirmesi gerekir. Hız sınırı: 60/dk

İstek

Sorgu Parametreleri
ParametreTürAçıklama
limitintegerDöndürülecek oturum sayısı. Varsayılan 20, en fazla 50.
offsetintegerAtlanacak oturum sayısı. Varsayılan 0.
status"active" | "archived"Oturum durumuna göre filtreler. Varsayılan active.
chainyIdstring (uuid)İsteğe bağlı. Belirli bir Chainy (yapay zeka kişiliği) ile ilişkili oturumlara göre filtreler.
qstringİsteğe bağlı. Oturum başlıklarında veya tarih benzeri oturum zaman damgalarında arama yapar. En fazla 200 karakter.

Yanıt

Yanıt Örneği
json
{
  "data": [
    {
      "id": "cm5sess01",
      "title": "Spanish Learning Coach",
      "status": "active",
      "messageCount": 5,
      "pinnedAt": "2026-03-17T09:00:00.000Z",
      "archivedAt": null,
      "createdAt": "2026-03-17T10:00:00.000Z",
      "updatedAt": "2026-03-17T11:00:00.000Z"
    }
  ],
  "meta": {
    "limit": 20,
    "offset": 0,
    "total": 1,
    "totalCount": 1,
    "hasNextPage": false
  }
}
Yanıt Alanları
AlanTürAçıklama
idstringOturum kimliği
titlestring | nullOturum başlığı
statusstringactive veya archived
messageCountnumberOturumdaki mesaj sayısı
pinnedAtstring | nullSabitlenme anının ISO 8601 zaman damgası veya null
archivedAtstring | nullArşivlenme anının ISO 8601 zaman damgası veya null
createdAtstringISO 8601
updatedAtstringISO 8601

Kod Örnekleri

Aşağıdaki filtre örneğinde $CHAINY_ID yerine Chainy'lerinizden (yapay zeka kişilikleri) birinin id değerini kullanın.

bash
curl "https://api.chainabit.com/api/v1/ai/sessions?limit=20&offset=0" \
  -H "Authorization: Bearer $TOKEN"

# Arşivlenmiş oturumlar:
curl "https://api.chainabit.com/api/v1/ai/sessions?status=archived" \
  -H "Authorization: Bearer $TOKEN"

# Chainy'ye (yapay zeka kişiliği) göre filtreleme:
curl "https://api.chainabit.com/api/v1/ai/sessions?chainyId=$CHAINY_ID" \
  -H "Authorization: Bearer $TOKEN"

# Oturumlarda arama:
curl "https://api.chainabit.com/api/v1/ai/sessions?q=weekly%20planning" \
  -H "Authorization: Bearer $TOKEN"
javascript
const chainyId = process.env.CHAINY_ID; // filtrelenecek Chainy'nin kimliği

const res = await fetch(`${BASE_URL}/ai/sessions?limit=20&offset=0`, {
  headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data, meta } = await res.json();

// Arşivlenmiş oturumlar:
const archived = await fetch(`${BASE_URL}/ai/sessions?status=archived`, {
  headers: { Authorization: `Bearer ${TOKEN}` },
});

// Chainy'ye göre filtreleme:
const chainySpecific = await fetch(
  `${BASE_URL}/ai/sessions?chainyId=${chainyId}`,
  { headers: { Authorization: `Bearer ${TOKEN}` } }
);

// Başlığa veya tarihe göre arama:
const search = await fetch(`${BASE_URL}/ai/sessions?q=weekly%20planning`, {
  headers: { Authorization: `Bearer ${TOKEN}` },
});
python
import os
import requests

chainy_id = os.environ["CHAINY_ID"]  # filtrelenecek Chainy'nin kimliği

res = requests.get(
    f"{BASE_URL}/ai/sessions",
    params={"limit": 20, "offset": 0},
    headers={"Authorization": f"Bearer {TOKEN}"},
)
body = res.json()

# Arşivlenmiş oturumlar:
archived = requests.get(
    f"{BASE_URL}/ai/sessions",
    params={"status": "archived"},
    headers={"Authorization": f"Bearer {TOKEN}"},
)

# Chainy'ye göre filtreleme:
chainy_specific = requests.get(
    f"{BASE_URL}/ai/sessions",
    params={"chainyId": chainy_id},
    headers={"Authorization": f"Bearer {TOKEN}"},
)

search = requests.get(
    f"{BASE_URL}/ai/sessions",
    params={"q": "weekly planning"},
    headers={"Authorization": f"Bearer {TOKEN}"},
)

POST /ai/sessions

Açıklama

Yeni bir yapay zeka oturumu oluşturur.

Kimlik doğrulama: JWT Bearer belirteci + etkin yapay zeka yetkilendirmesi gerekir. Hız sınırı: 20/dk

İstek

İstek Gövdesi

Bilinmeyen özellikler reddedilir. İstek gövdesi yalnızca aşağıdaki alanları kabul eder.

AlanTürZorunluKısıtlarAçıklama
titlestringHayırEn fazla 120 karakterOturum başlığı
assistantTypestringHayır"chat" | "chao"Oturumun asistan türü. Chao davranışsal danışman oturumları için "chao" olarak ayarlayın. Varsayılan: "chat".
assistantPresetstringHayırBu oturuma uygulanacak adlandırılmış asistan ön ayarı
modelstringHayırKullanılacak tam ve etkin model_key, örneğin gemini-2.5-flash
providerstringHayırEn fazla 64 karakterTercih edilen sağlayıcı anahtarı. Kullanılamıyorsa etkin başka bir sağlayıcıya geri düşer.
effortModestringHayır"basic" | "thinking" | "pro"Üst düzey yönlendirme tercihi; orkestratör uyumlu bir model seçer.
modestringHayır"auto" | "approval" | "plan"Araç yürütme modu. Varsayılan olarak hesap tercihini (veya "approval") kullanır.
chainIdstringHayırUUIDBu oturumun kapsamlanacağı Chain
chainyIdstringHayırUUIDBu oturumun kapsamlanacağı Chainy
bitIdstringHayırUUIDBu oturumun kapsamlanacağı Bit
agentInstanceIdstringHayırUUIDBu oturumda kullanılacak aracı örneği
primaryContextTypestringHayır"chainy" | "chain" | "workspace" | "account"Birincil bağlam kapsamı (Chao oturumları).
primaryContextIdstringHayırUUIDBirincil bağlam varlığının UUID değeri. primaryContextType ayarlandığında zorunludur.
metadataobjectHayırOturumla birlikte saklanan serbest biçimli anahtar/değer üst verisi.

Yanıt

Yanıt Örneği
json
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "title": "Spanish Learning Coach",
    "status": "active",
    "sessionType": "chat",
    "mode": "approval",
    "startedAt": "2026-03-17T10:00:00.000Z",
    "lastActivityAt": "2026-03-17T10:00:00.000Z",
    "archivedAt": null,
    "pinnedAt": null,
    "metadata": {
      "title": "Spanish Learning Coach"
    }
  }
}

Yanıttaki metadata nesnesi seçilmiş bir anahtar kümesini sunar (title, assistantPreset, selectedModelKey, selectedModelProvider); bunların hiçbiri yoksa değeri null olur.

Kod Örnekleri

$CHAIN_ID yerine Chain'lerinizden birinin id değerini kullanın.

bash
curl -X POST https://api.chainabit.com/api/v1/ai/sessions \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Spanish Learning Coach",
    "chainId": "'"$CHAIN_ID"'",
    "metadata": {
      "goal": "Improve daily vocabulary retention"
    }
  }'
javascript
const chainId = process.env.CHAIN_ID; // bu oturumun kapsamlanacağı Chain'in kimliği

const res = await fetch(`${BASE_URL}/ai/sessions`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    title: "Spanish Learning Coach",
    chainId,
    metadata: {
      goal: "Improve daily vocabulary retention",
    },
  }),
});
const { data } = await res.json();
python
import os
import requests

chain_id = os.environ["CHAIN_ID"]  # bu oturumun kapsamlanacağı Chain'in kimliği

res = requests.post(
    f"{BASE_URL}/ai/sessions",
    headers={
        "Authorization": f"Bearer {TOKEN}",
        "Content-Type": "application/json",
    },
    json={
        "title": "Spanish Learning Coach",
        "chainId": chain_id,
        "metadata": {
            "goal": "Improve daily vocabulary retention",
        },
    },
)
data = res.json()["data"]
Chao Oturumu Oluşturma

Chao (Chainabit'in davranışsal danışmanı) tarafından desteklenen bir oturum oluşturmak için bir Chainy bağlamıyla birlikte assistantType: "chao" gönderin. $CHAINY_ID yerine koçluk yapılacak Chainy'nin id değerini kullanın.

bash
curl -X POST https://api.chainabit.com/api/v1/ai/sessions \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My Chainy Coach",
    "assistantType": "chao",
    "primaryContextType": "chainy",
    "primaryContextId": "'"$CHAINY_ID"'"
  }'
javascript
const chainyId = process.env.CHAINY_ID; // bu oturumun kapsamlandığı Chainy'nin kimliği

const res = await fetch(`${BASE_URL}/ai/sessions`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    title: "My Chainy Coach",
    assistantType: "chao",
    primaryContextType: "chainy",
    primaryContextId: chainyId,
  }),
});
const { data } = await res.json();
python
import os
import requests

chainy_id = os.environ["CHAINY_ID"]  # bu oturumun kapsamlandığı Chainy'nin kimliği

res = requests.post(
    f"{BASE_URL}/ai/sessions",
    headers={
        "Authorization": f"Bearer {TOKEN}",
        "Content-Type": "application/json",
    },
    json={
        "title": "My Chainy Coach",
        "assistantType": "chao",
        "primaryContextType": "chainy",
        "primaryContextId": chainy_id,
    },
)
data = res.json()["data"]

assistantType değeri "chao" olduğunda oturum, Chainy kapsamlı anıları ve üretkenlik bağlamını tüm yapay zeka etkileşimlerine otomatik olarak yükler.

Akıl Yürütme ve Araç Etkinliği

Chao oturumları, bir yanıt üretilirken güvenli etkinlik özetlerini akış olarak gönderebilir. Durum kartlarını göstermek için tool.started, tool.progress, tool.approval_required, tool.completed, tool.failed, tool.degraded, plan.step_added ve capability.resolved gibi olaylardaki payload.activity alanını kullanın.

Ham ve özel düşünce zinciri herkese açık bir arayüz sözleşmesi değildir. Bir iç/hata ayıklama oturumunda tanılama amaçlı cot.* olayları görünürse bunları isteğe bağlı üst veri olarak değerlendirin ve ham akıl yürütmeyi varsayılan olarak son kullanıcılara göstermeyin.

Kalıcı hale getirilen message.toolCalls, yeniden yükleme sonrasında araç kartlarını yeniden oluşturmak için kararlı kaynaktır. Bkz. Yapay Zeka Mesajları ve SSE Akışı.


GET /ai/sessions/:id

Açıklama

Tek bir oturumun ayrıntılarını getirir.

Kimlik doğrulama: JWT Bearer belirteci + etkin yapay zeka yetkilendirmesi gerekir. Hız sınırı: 60/dk

İstek

  • Yol parametreleri: id (Oturum kimliği)

Yanıt

Yanıt Örneği
json
{
  "data": {
    "id": "cm5sess01",
    "title": "Spanish Learning Coach",
    "status": "active",
    "pinnedAt": null,
    "archivedAt": null,
    "messageCount": 5,
    "createdAt": "2026-03-17T10:00:00.000Z",
    "updatedAt": "2026-03-17T11:00:00.000Z"
  }
}

Kod Örnekleri

$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.

bash
curl https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID \
  -H "Authorization: Bearer $TOKEN"
javascript
const sessionId = process.env.SESSION_ID; // Oturum Oluşturma yanıtındaki kimlik

const res = await fetch(`${BASE_URL}/ai/sessions/${sessionId}`, {
  headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await res.json();
python
import os
import requests

session_id = os.environ["SESSION_ID"]  # Oturum Oluşturma yanıtındaki kimlik

res = requests.get(
    f"{BASE_URL}/ai/sessions/{session_id}",
    headers={"Authorization": f"Bearer {TOKEN}"},
)
data = res.json()["data"]

DELETE /ai/sessions/:id

Açıklama

Bir oturumu sonlandırır. Oturum geçici olarak silinir ve artık yeni mesaj kabul etmez. Bu şekilde sonlandırılan oturumlar 30 günlük hareketsizlik sonrasında kalıcı olarak silinir.

Kimlik doğrulama: JWT Bearer belirteci + etkin yapay zeka yetkilendirmesi gerekir. Hız sınırı: 30/dk

İstek

  • Yol parametreleri: id (Oturum kimliği)

Yanıt

Yanıt Örneği
json
{
  "data": {
    "id": "cm5sess01",
    "ended": true,
    "endedAt": "2026-03-17T12:00:00.000Z"
  }
}

Kod Örnekleri

$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.

bash
curl -X DELETE https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID \
  -H "Authorization: Bearer $TOKEN"
javascript
const sessionId = process.env.SESSION_ID; // Oturum Oluşturma yanıtındaki kimlik

const res = await fetch(`${BASE_URL}/ai/sessions/${sessionId}`, {
  method: "DELETE",
  headers: { Authorization: `Bearer ${TOKEN}` },
});
python
import os
import requests

session_id = os.environ["SESSION_ID"]  # Oturum Oluşturma yanıtındaki kimlik

res = requests.delete(
    f"{BASE_URL}/ai/sessions/{session_id}",
    headers={"Authorization": f"Bearer {TOKEN}"},
)

PATCH /ai/sessions/:id/archive

Açıklama

Etkin bir oturumu arşivler. Arşivlenmiş oturumlar varsayılan listenin dışında tutulur ancak süresiz olarak saklanır. Arşivlenmiş oturumlar hiçbir zaman otomatik olarak silinmez.

Kimlik doğrulama: JWT Bearer belirteci + etkin yapay zeka yetkilendirmesi gerekir. Hız sınırı: 30/dk

İstek

  • Yol parametreleri: id (Oturum kimliği)

Yanıt

Yanıt Örneği
json
{
  "data": { "count": 1 }
}

Kod Örnekleri

$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.

bash
curl -X PATCH https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/archive \
  -H "Authorization: Bearer $TOKEN"
javascript
const sessionId = process.env.SESSION_ID; // Oturum Oluşturma yanıtındaki kimlik

const res = await fetch(`${BASE_URL}/ai/sessions/${sessionId}/archive`, {
  method: "PATCH",
  headers: { Authorization: `Bearer ${TOKEN}` },
});
python
import os
import requests

session_id = os.environ["SESSION_ID"]  # Oturum Oluşturma yanıtındaki kimlik

res = requests.patch(
    f"{BASE_URL}/ai/sessions/{session_id}/archive",
    headers={"Authorization": f"Bearer {TOKEN}"},
)

PATCH /ai/sessions/:id/unarchive

Açıklama

Arşivlenmiş bir oturumu etkin duruma geri döndürür.

Kimlik doğrulama: JWT Bearer belirteci + etkin yapay zeka yetkilendirmesi gerekir. Hız sınırı: 30/dk

İstek

  • Yol parametreleri: id (Oturum kimliği)

Yanıt

Yanıt Örneği
json
{
  "data": { "count": 1 }
}

Kod Örnekleri

$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.

bash
curl -X PATCH https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/unarchive \
  -H "Authorization: Bearer $TOKEN"
javascript
const sessionId = process.env.SESSION_ID; // Oturum Oluşturma yanıtındaki kimlik

const res = await fetch(`${BASE_URL}/ai/sessions/${sessionId}/unarchive`, {
  method: "PATCH",
  headers: { Authorization: `Bearer ${TOKEN}` },
});
python
import os
import requests

session_id = os.environ["SESSION_ID"]  # Oturum Oluşturma yanıtındaki kimlik

res = requests.patch(
    f"{BASE_URL}/ai/sessions/{session_id}/unarchive",
    headers={"Authorization": f"Bearer {TOKEN}"},
)

PATCH /ai/sessions/:id/pin

Açıklama

Bir oturumu sabitler. Sabitleme istemci tarafında bir düzenleme işaretidir ve oturum durumunu değiştirmez. Hem active hem de archived oturumlar sabitlenebilir.

Kimlik doğrulama: JWT Bearer belirteci + etkin yapay zeka yetkilendirmesi gerekir. Hız sınırı: 60/dk

İstek

  • Yol parametreleri: id (Oturum kimliği)

Yanıt

Yanıt Örneği
json
{
  "data": { "count": 1 }
}

Kod Örnekleri

$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.

bash
curl -X PATCH https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/pin \
  -H "Authorization: Bearer $TOKEN"
javascript
const sessionId = process.env.SESSION_ID; // Oturum Oluşturma yanıtındaki kimlik

const res = await fetch(`${BASE_URL}/ai/sessions/${sessionId}/pin`, {
  method: "PATCH",
  headers: { Authorization: `Bearer ${TOKEN}` },
});
python
import os
import requests

session_id = os.environ["SESSION_ID"]  # Oturum Oluşturma yanıtındaki kimlik

res = requests.patch(
    f"{BASE_URL}/ai/sessions/{session_id}/pin",
    headers={"Authorization": f"Bearer {TOKEN}"},
)

PATCH /ai/sessions/:id/unpin

Açıklama

Sabitlenmiş bir oturumun sabitlemesini kaldırır.

Kimlik doğrulama: JWT Bearer belirteci + etkin yapay zeka yetkilendirmesi gerekir. Hız sınırı: 60/dk

İstek

  • Yol parametreleri: id (Oturum kimliği)

Yanıt

Yanıt Örneği
json
{
  "data": { "count": 1 }
}

Kod Örnekleri

$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.

bash
curl -X PATCH https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/unpin \
  -H "Authorization: Bearer $TOKEN"
javascript
const sessionId = process.env.SESSION_ID; // Oturum Oluşturma yanıtındaki kimlik

const res = await fetch(`${BASE_URL}/ai/sessions/${sessionId}/unpin`, {
  method: "PATCH",
  headers: { Authorization: `Bearer ${TOKEN}` },
});
python
import os
import requests

session_id = os.environ["SESSION_ID"]  # Oturum Oluşturma yanıtındaki kimlik

res = requests.patch(
    f"{BASE_URL}/ai/sessions/{session_id}/unpin",
    headers={"Authorization": f"Bearer {TOKEN}"},
)

Bir Oturumu Paylaşma

Yalnızca oturum sahibi veya davet edilmiş bir insan katılımcı (bkz. Konuşma Katılımcıları ve Lensler) paylaşım bağlantısı oluşturabilir veya iptal edebilir. Paylaşım, bir çalışma alanı üzerinden erişilen Chao oturumlarıyla sınırlıdır.

POST /workspaces/:workspaceId/ai/sessions/:sessionId/share

Açıklama

Oturum için herkese açık, salt okunur bir paylaşım bağlantısı oluşturur. Zaten paylaşılmış bir oturumda bu çağrının yinelenmesi kopya oluşturmak yerine mevcut paylaşımı yeniden etkinleştirir — urlShort değişmez.

Kimlik doğrulama: JWT Bearer belirteci + etkin yapay zeka yetkilendirmesi gerekir (yalnızca oturum sahibi veya davet edilmiş insan katılımcı). Hız sınırı: 20/dk

İstek

  • Yol parametreleri: workspaceId, sessionId

Gövde yok.

Yanıt

Yanıt Örneği
json
{
  "data": {
    "shareUrl": "https://chainabit.com/cs/a3f2b9c1e4",
    "urlShort": "a3f2b9c1e4"
  }
}
Yanıt Alanları
AlanTürAçıklama
shareUrlstringPaylaşım bağlantısının tam herkese açık URL'si
urlShortstringHerkese açık URL'de ve GET /cs/:urlShort uç noktasında kullanılan kısa belirteç

Kod Örnekleri

$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.

bash
curl -X POST https://api.chainabit.com/api/v1/workspaces/$WORKSPACE_ID/ai/sessions/$SESSION_ID/share \
  -H "Authorization: Bearer $TOKEN"
javascript
const workspaceId = process.env.WORKSPACE_ID;
const sessionId = process.env.SESSION_ID; // Oturum Oluşturma yanıtındaki kimlik

const res = await fetch(
  `${BASE_URL}/workspaces/${workspaceId}/ai/sessions/${sessionId}/share`,
  { method: "POST", headers: { Authorization: `Bearer ${TOKEN}` } }
);
const { data } = await res.json();
console.log(data.shareUrl);
python
import os
import requests

workspace_id = os.environ["WORKSPACE_ID"]
session_id = os.environ["SESSION_ID"]  # Oturum Oluşturma yanıtındaki kimlik

res = requests.post(
    f"{BASE_URL}/workspaces/{workspace_id}/ai/sessions/{session_id}/share",
    headers={"Authorization": f"Bearer {TOKEN}"},
)
data = res.json()["data"]
print(data["shareUrl"])

DELETE /workspaces/:workspaceId/ai/sessions/:sessionId/share

Açıklama

Oturumun etkin paylaşım bağlantısını iptal eder. Önceki urlShort değeri hemen çözümlenmeyi bırakır.

Kimlik doğrulama: JWT Bearer belirteci + etkin yapay zeka yetkilendirmesi gerekir (yalnızca oturum sahibi veya davet edilmiş insan katılımcı). Hız sınırı: 20/dk

İstek

  • Yol parametreleri: workspaceId, sessionId

Yanıt

Yanıt Örneği
json
{
  "data": { "revoked": true }
}

Kod Örnekleri

bash
curl -X DELETE https://api.chainabit.com/api/v1/workspaces/$WORKSPACE_ID/ai/sessions/$SESSION_ID/share \
  -H "Authorization: Bearer $TOKEN"
javascript
const workspaceId = process.env.WORKSPACE_ID;
const sessionId = process.env.SESSION_ID; // Oturum Oluşturma yanıtındaki kimlik

const res = await fetch(
  `${BASE_URL}/workspaces/${workspaceId}/ai/sessions/${sessionId}/share`,
  { method: "DELETE", headers: { Authorization: `Bearer ${TOKEN}` } }
);
const { data } = await res.json();
python
import os
import requests

workspace_id = os.environ["WORKSPACE_ID"]
session_id = os.environ["SESSION_ID"]  # Oturum Oluşturma yanıtındaki kimlik

res = requests.delete(
    f"{BASE_URL}/workspaces/{workspace_id}/ai/sessions/{session_id}/share",
    headers={"Authorization": f"Bearer {TOKEN}"},
)
data = res.json()["data"]

GET /cs/:urlShort

Açıklama

Paylaşılan bir oturumu kısa belirteci ile çözümler. Bu uç nokta herkese açıktır ve kimlik doğrulaması gerektirmez. İptal edilmiş, süresi dolmuş ve hatalı biçimlendirilmiş belirteçlerin tümü genel bir 404 Not Found yanıtına çözümlenir — yanıt bu durumları asla birbirinden ayırmaz.

Kimlik doğrulama: Yok (herkese açık). Hız sınırı: 60 saniyede 60 istek.

İstek

Yanıt

Yanıt Örneği
json
{
  "data": {
    "title": "Spanish Learning Coach",
    "messages": [
      {
        "id": "msg_01",
        "role": "user",
        "content": "How am I doing with my Morning Run chain?",
        "createdAt": "2026-03-17T10:00:00.000Z"
      }
    ]
  }
}
Yanıt Alanları
AlanTürAçıklama
titlestring | nullOturum başlığı
messagesarrayHer biri id, role, content, createdAt içeren oturum mesajları

Kod Örnekleri

bash
curl https://api.chainabit.com/api/v1/cs/a3f2b9c1e4
javascript
const urlShort = "a3f2b9c1e4"; // bir paylaşım yanıtının data.urlShort değerinden

const res = await fetch(`${BASE_URL}/cs/${urlShort}`);
const { data } = await res.json();
python
import requests

url_short = "a3f2b9c1e4"  # bir paylaşım yanıtının data.urlShort değerinden

res = requests.get(f"{BASE_URL}/cs/{url_short}")
data = res.json()["data"]

Veri Saklama

DELETE /ai/sessions/:id ile sonlandırılan oturumlar geçici olarak silinir ve 30 günlük hareketsizlik sonrasında kalıcı olarak kaldırılır. Oturum içindeki tüm mesajlar aynı anda silinir.

Bir oturumu süresiz olarak saklamak için silmeden önce PATCH /ai/sessions/:id/archive ile arşivleyin — arşivlenmiş oturumlar hiçbir zaman otomatik olarak silinmez.

Built with purpose.