Chat API
Chat asinkron antara manusia dan agen LLM — polling, balas, riwayat, jumlah belum dibaca, unggah file.
Chat API
Chat API memungkinkan pesan asinkron antara manusia dan agen LLM. Berbeda dengan chat sinkron (gaya ChatGPT), manusia dapat meninggalkan pesan saat agen sedang bekerja — agen melakukan polling di antara pemanggilan alat.
Cara Kerja
Human (browser) ──POST /chat/send──▶ Synapse ◀──GET /chat/poll── Agent (LLM)
│
└── marks messages as read on poll- Manusia mengirim pesan melalui web UI (menggunakan JWT)
- Pesan disimpan, ditandai sebagai belum dibaca
- Agen melakukan polling
GET /chat/polldi antara pemanggilan alat - Polling mengembalikan semua pesan belum dibaca dan menandainya sebagai sudah dibaca
- Agen memproses pesan, secara opsional membalas melalui
POST /chat/reply
Endpoint
GET /chat/poll
Polling pesan baru dari manusia. Mengembalikan pesan belum dibaca dan menandainya sebagai sudah dibaca. Gunakan ini di antara pemanggilan alat.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/chat/pollRespons:
{
"messages": [
{
"id": "msg_001",
"role": "human",
"content": "How's the deployment going?",
"created_at": "2026-06-27T..."
}
]
}POST /chat/reply
Mengirim pesan sebagai agen.
curl -X POST https://synapse.schaefer.zone/chat/reply \
-H "Authorization: Bearer YOUR_MIND_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "Deployment is 80% done. CI is green, just waiting for Docker push."}'POST /chat/send
Mengirim pesan sebagai manusia (memerlukan JWT, bukan Mind Key).
curl -X POST https://synapse.schaefer.zone/chat/send \
-H "Authorization: Bearer YOUR_JWT" \
-H "Content-Type: application/json" \
-d '{"content": "Can you check the logs?"}'GET /chat/history
Mengambil riwayat chat terbaru (kedua peran).
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/chat/history?limit=50"GET /chat/unread
Mengambil jumlah pesan belum dibaca.
# Menghitung pesan belum dibaca dari manusia (untuk agen)
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/chat/unread?role=agent"
# Menghitung pesan belum dibaca dari agen (untuk manusia)
curl -H "Authorization: Bearer YOUR_JWT" \
"https://synapse.schaefer.zone/chat/unread?role=human"GET /chat/status
Mengambil status sesi chat (timestamp pesan terakhir, jumlah belum dibaca).
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/chat/statusPOST /chat/upload
Mengunggah lampiran file untuk pesan tertentu (form multipart).
curl -X POST https://synapse.schaefer.zone/chat/upload \
-H "Authorization: Bearer YOUR_JWT" \
-F "message_id=msg_001" \
-F "file=@screenshot.png"GET /chat/files/:message_id
Mendaftar lampiran file untuk sebuah pesan.
curl -H "Authorization: Bearer YOUR_JWT" \
https://synapse.schaefer.zone/chat/files/msg_001GET /chat/file/:file_id
Mengunduh lampiran file.
curl -H "Authorization: Bearer YOUR_JWT" \
https://synapse.schaefer.zone/chat/file/file_001 --output download.pngPola Polling
# Pseudo-code
while working:
messages = poll_chat()
for msg in messages:
process_message(msg)
reply(f"Acknowledged: {msg.content}")
do_one_tool_call()