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ı
- Bir oturum oluşturmak için
POST /ai/sessionsçağırın (assistantType, isteğe bağlımetadatave ihtiyacınız olan birincil bağlam kapsamını ayarlayın). session.iddeğerini saklayın ve oturum başlığını, durumunu ve son etkinliğini göstermek içinGET /ai/sessions/:iduç noktasını yoklayın.- İstediğiniz düzenleme akışı için
PATCH /ai/sessions/:id/pin/archive/unpin/unarchivekullanın, konuşma bittiğinde iseDELETE /ai/sessions/:idçağırın. - Geçmişi yüklemek (
GET /ai/sessions), SSE akışlarını sürdürmek veya arayüzünüzdemessageCountdeğerine başvurmak için oturum kimliklerini saklayın.
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öntem | Yol | Açıklama | Kimlik Doğrulama | Hız Sınırı |
|---|---|---|---|---|
| GET | /ai/sessions | Oturumları listeler | JWT + Yetkilendirme | 60/dk |
| POST | /ai/sessions | Oturum oluşturur | JWT + Yetkilendirme | 20/dk |
| GET | /ai/sessions/:id | Bir oturumu getirir | JWT + Yetkilendirme | 60/dk |
| DELETE | /ai/sessions/:id | Bir oturumu sonlandırır | JWT + Yetkilendirme | 30/dk |
| PATCH | /ai/sessions/:id/archive | Bir oturumu arşivler | JWT + Yetkilendirme | 30/dk |
| PATCH | /ai/sessions/:id/unarchive | Arşivlenmiş bir oturumu geri yükler | JWT + Yetkilendirme | 30/dk |
| PATCH | /ai/sessions/:id/pin | Bir oturumu sabitler | JWT + Yetkilendirme | 60/dk |
| PATCH | /ai/sessions/:id/unpin | Bir oturumun sabitlemesini kaldırır | JWT + Yetkilendirme | 60/dk |
| POST | /workspaces/:workspaceId/ai/sessions/:sessionId/share | Paylaşım bağlantısı oluşturur veya yeniden etkinleştirir (noIndex verilmezse herkese açık) | JWT + Yetkilendirme | 20/dk |
| PATCH | /workspaces/:workspaceId/ai/sessions/:sessionId/share | Etkin bir paylaşımı herkese açık ile yalnızca bağlantı arasında değiştirir | JWT + Yetkilendirme | 20/dk |
| DELETE | /workspaces/:workspaceId/ai/sessions/:sessionId/share | Bir paylaşım bağlantısını iptal eder | JWT + Yetkilendirme | 20/dk |
| GET | /cs/:urlShort | Kısa URL ile paylaşılan bir oturumu çözümler | Yok (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
| Parametre | Tür | Açıklama |
|---|---|---|
limit | integer | Döndürülecek oturum sayısı. Varsayılan 20, en fazla 50. |
offset | integer | Atlanacak oturum sayısı. Varsayılan 0. |
status | "active" | "archived" | Oturum durumuna göre filtreler. Varsayılan active. |
chainyId | string (uuid) | İsteğe bağlı. Belirli bir Chainy (yapay zeka kişiliği) ile ilişkili oturumlara göre filtreler. |
q | string | İ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
{
"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ı
| Alan | Tür | Açıklama |
|---|---|---|
id | string | Oturum kimliği |
title | string | null | Oturum başlığı |
status | string | active veya archived |
messageCount | number | Oturumdaki mesaj sayısı |
pinnedAt | string | null | Sabitlenme anının ISO 8601 zaman damgası veya null |
archivedAt | string | null | Arşivlenme anının ISO 8601 zaman damgası veya null |
createdAt | string | ISO 8601 |
updatedAt | string | ISO 8601 |
Kod Örnekleri
Aşağıdaki filtre örneğinde $CHAINY_ID yerine Chainy'lerinizden (yapay zeka kişilikleri) birinin id değerini kullanın.
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"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}` },
});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.
| Alan | Tür | Zorunlu | Kısıtlar | Açıklama |
|---|---|---|---|---|
title | string | Hayır | En fazla 120 karakter | Oturum başlığı |
assistantType | string | Hayır | "chat" | "chao" | Oturumun asistan türü. Chao davranışsal danışman oturumları için "chao" olarak ayarlayın. Varsayılan: "chat". |
assistantPreset | string | Hayır | — | Bu oturuma uygulanacak adlandırılmış asistan ön ayarı |
model | string | Hayır | — | Kullanılacak tam ve etkin model_key, örneğin gemini-2.5-flash |
provider | string | Hayır | En fazla 64 karakter | Tercih edilen sağlayıcı anahtarı. Kullanılamıyorsa etkin başka bir sağlayıcıya geri düşer. |
effortMode | string | Hayır | "basic" | "thinking" | "pro" | Üst düzey yönlendirme tercihi; orkestratör uyumlu bir model seçer. |
mode | string | Hayır | "auto" | "approval" | "plan" | Araç yürütme modu. Varsayılan olarak hesap tercihini (veya "approval") kullanır. |
chainId | string | Hayır | UUID | Bu oturumun kapsamlanacağı Chain |
chainyId | string | Hayır | UUID | Bu oturumun kapsamlanacağı Chainy |
bitId | string | Hayır | UUID | Bu oturumun kapsamlanacağı Bit |
agentInstanceId | string | Hayır | UUID | Bu 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. |
primaryContextType | string | Hayır | "chainy" | "chain" | "workspace" | "account" | Birincil bağlam kapsamı (Chao oturumları). |
primaryContextId | string | Hayır | UUID | Birincil bağlam varlığının UUID değeri. primaryContextType ayarlandığında zorunludur. |
metadata | object | Hayır | — | Oturumla birlikte saklanan serbest biçimli anahtar/değer üst verisi. |
Yanıt
Yanıt Örneği
{
"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.
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"
}
}'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();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.
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"'"
}'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();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
{
"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.
curl https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID \
-H "Authorization: Bearer $TOKEN"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();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
{
"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.
curl -X DELETE https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID \
-H "Authorization: Bearer $TOKEN"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}` },
});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
{
"data": { "count": 1 }
}Kod Örnekleri
$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.
curl -X PATCH https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/archive \
-H "Authorization: Bearer $TOKEN"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}` },
});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
{
"data": { "count": 1 }
}Kod Örnekleri
$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.
curl -X PATCH https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/unarchive \
-H "Authorization: Bearer $TOKEN"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}` },
});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
{
"data": { "count": 1 }
}Kod Örnekleri
$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.
curl -X PATCH https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/pin \
-H "Authorization: Bearer $TOKEN"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}` },
});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
{
"data": { "count": 1 }
}Kod Örnekleri
$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.
curl -X PATCH https://api.chainabit.com/api/v1/ai/sessions/$SESSION_ID/unpin \
-H "Authorization: Bearer $TOKEN"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}` },
});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 kitle | noIndex | Kimler bulabilir |
|---|---|---|
| Herkese açık | false | Bağlantıya sahip olan herkes açabilir ve arama motorları konuşmayı dizine ekleyebilir. |
| Yalnızca bağlantı | true | Yalnı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ı):
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
noIndex | boolean | Hayır | false 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
{
"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ı
| Alan | Tür | Açıklama |
|---|---|---|
id | string | Paylaşım bağlantısının tanımlayıcısı |
shareUrl | string | Paylaşım bağlantısının tam URL'si |
urlShort | string | URL'de ve GET /cs/:urlShort uç noktasında kullanılan kısa belirteç |
noIndex | boolean | Herkese açık paylaşım için false, yalnızca bağlantı için true |
openCount | integer | Bağlantının kaç kez açıldığı |
Kod Örnekleri
$SESSION_ID yerine Oturum Oluşturma yanıtındaki id değerini kullanın.
curl -X POST https://api.chainabit.com/api/v1/workspaces/$WORKSPACE_ID/ai/sessions/$SESSION_ID/share \
-H "Authorization: Bearer $TOKEN"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);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:
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
noIndex | boolean | Evet | Herkese 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
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}'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 onlyimport 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 onlyDELETE /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
{
"data": { "revoked": true }
}Kod Örnekleri
curl -X DELETE https://api.chainabit.com/api/v1/workspaces/$WORKSPACE_ID/ai/sessions/$SESSION_ID/share \
-H "Authorization: Bearer $TOKEN"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();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
- Yol parametreleri:
urlShort(bir paylaşım yanıtındakidata.urlShortdeğerinden)
Yanıt
Yanıt Örneği
{
"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ı
| Alan | Tür | Açıklama |
|---|---|---|
title | string | null | Oturum başlığı |
messages | array | Her biri id, role, content, createdAt içeren oturum mesajları |
Kod Örnekleri
curl https://api.chainabit.com/api/v1/cs/a3f2b9c1e4const 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();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.