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/sharePaylaşım bağlantısı oluşturur veya yeniden etkinleştirir (noIndex verilmezse herkese açık)JWT + Yetkilendirme20/dk
PATCH/workspaces/:workspaceId/ai/sessions/:sessionId/shareEtkin bir paylaşımı herkese açık ile yalnızca bağlantı arasında değiş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ır—Bu oturuma uygulanacak adlandırılmış asistan ön ayarı
modelstringHayır—Kullanı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. Oturumun çalışma alanında kullanılabilir, etkin bir ajan olmalıdır (o çalışma alanının bir ajanı ya da tüm hesapla paylaşılan bir ajan); aksi halde 400.
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ır—Oturumla 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 ​

Paylaşım bağlantısını yalnızca oturum sahibi oluşturabilir, değiştirebilir veya iptal edebilir. Davet edilen katılımcılar ve çalışma alanı üyeleri oturumda iş birliği yapabilir ancak oturumu yayımlayamaz (bkz. Konuşma Katılımcıları ve Lensler). Paylaşım, bir çalışma alanı üzerinden erişilen Chao oturumlarıyla sınırlıdır.

Her paylaşım bağlantısının iki hedef kitleden biri vardır:

Hedef kitlenoIndexKimler bulabilir
Herkese açıkfalseBağlantıya sahip olan herkes açabilir ve arama motorları konuşmayı dizine ekleyebilir.
Yalnızca bağlantıtrueYalnızca bağlantıya sahip kişiler açabilir. Arama motorlarından konuşmayı dizine eklememeleri istenir.

Yeni bir paylaşım herkese açıktır. Sahip, bir paylaşımı istediği zaman PATCH ile yalnızca bağlantıya çevirebilir; bağlantı aynı kalır. Arama motorlarının daha önce aldığı kopyalar, onları yenileyene kadar kalabilir.

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

Açıklama ​

Oturum için salt okunur bir paylaşım bağlantısı oluşturur. noIndex değeri verilmezse paylaşım herkese açık olur. Zaten paylaşılmış bir oturumda bu çağrının yinelenmesi kopya oluşturmak yerine mevcut paylaşımı döndürür — urlShort değişmez ve mevcut bir paylaşım, farklı bir noIndex değeri göndermediğiniz sürece hedef kitlesini korur. İptal edilmiş bir paylaşım, istediğiniz hedef kitleyle (hiçbiri gönderilmezse herkese açık) yeniden etkinleştirilir.

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

İstek ​

  • Yol parametreleri: workspaceId, sessionId
  • Gövde (isteğe bağlı):
AlanTürZorunluAçıklama
noIndexbooleanHayırfalse paylaşımı herkese açık, true yalnızca bağlantı yapar. Yeni bir paylaşım için varsayılanı (herkese açık) kullanmak ya da mevcut bir paylaşımın hedef kitlesini korumak için göndermeyin.

Yanıt ​

Yanıt Örneği ​
json
{
  "data": {
    "id": "5e3a1c0d-8b7f-4e2a-9c61-0d4f7a2b9e13",
    "shareUrl": "https://chainabit.com/cs/5e3a1c0d-8b7f-4e2a-9c61-0d4f7a2b9e13?share=a3f2b9c1e4",
    "urlShort": "a3f2b9c1e4",
    "noIndex": false,
    "openCount": 0
  }
}
Yanıt Alanları ​
AlanTürAçıklama
idstringPaylaşım bağlantısının tanımlayıcısı
shareUrlstringPaylaşım bağlantısının tam URL'si
urlShortstringURL'de ve GET /cs/:urlShort uç noktasında kullanılan kısa belirteç
noIndexbooleanHerkese açık paylaşım için false, yalnızca bağlantı için true
openCountintegerBağlantının kaç kez açıldığı

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"])

PATCH /workspaces/:workspaceId/ai/sessions/:sessionId/share ​

Açıklama ​

Oturumun etkin paylaşımını herkese açık ile yalnızca bağlantı arasında değiştirir. Bağlantı ve urlShort değişmez. Paylaşımın zaten sahip olduğu hedef kitleyi göndermek işlem yapmaz. Bu uç nokta hiçbir zaman paylaşım oluşturmaz veya yeniden etkinleştirmez: etkin paylaşımı olmayan bir oturum 404 döndürür.

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

İstek ​

  • Yol parametreleri: workspaceId, sessionId
  • Gövde:
AlanTürZorunluAçıklama
noIndexbooleanEvetHerkese açık için false, yalnızca bağlantı için true. Başka herhangi bir değer 400 döndürür.

Yanıt ​

Yanıt, POST ile aynı biçimdedir. Hedef kitleyi doğrulamak için noIndex alanını kullanın; openCount bu uç noktada bildirilmez ve her zaman 0 olur.

Kod Örnekleri ​

bash
curl -X PATCH https://api.chainabit.com/api/v1/workspaces/$WORKSPACE_ID/ai/sessions/$SESSION_ID/share \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"noIndex": true}'
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: "PATCH",
    headers: { Authorization: `Bearer ${TOKEN}`, "Content-Type": "application/json" },
    body: JSON.stringify({ noIndex: true }),
  }
);
const { data } = await res.json();
console.log(data.noIndex); // true: link only
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.patch(
    f"{BASE_URL}/workspaces/{workspace_id}/ai/sessions/{session_id}/share",
    headers={"Authorization": f"Bearer {TOKEN}"},
    json={"noIndex": True},
)
print(res.json()["data"]["noIndex"])  # True: link only

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