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 | Herkese açık bir paylaşım bağlantısı oluşturur veya yeniden etkinleş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 |
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
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
{
"data": {
"shareUrl": "https://chainabit.com/cs/a3f2b9c1e4",
"urlShort": "a3f2b9c1e4"
}
}Yanıt Alanları
| Alan | Tür | Açıklama |
|---|---|---|
shareUrl | string | Paylaşım bağlantısının tam herkese açık URL'si |
urlShort | string | Herkese 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.
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"])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
{
"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.