Chat API Reference
Kompletna dokumentacja endpointów API modułu Chat.
Base URL
http://localhost:8080Endpoints
1. Get Chat Page
Zwraca stronę główną Chat z listą workerów.
Endpoint: GET /chat
Response: HTML page
Przykład:
curl http://localhost:8080/chat2. Get Chat Session Page
Zwraca stronę szczegółów sesji.
Endpoint: GET /chat/{uuid}
Parameters:
uuid(path) - UUID sesji
Response: HTML page
Przykład:
curl http://localhost:8080/chat/abc123-def456-...3. Get Workers
Zwraca listę dostępnych workerów.
Endpoint: GET /api/chat/workers
Response:
[
{
"name": "SemBot Frontend (angular)",
"path": "/Users/user/Projects/sembot-angular",
"tags": ["sbf"],
"docker_compose_path": "/path/to/docker/sembot-angular",
"git_repository": "[email protected]:org/sembot-angular.git",
"git_branch": "master",
"mcp": {
"check": ["node --version"],
"servers": [...]
}
}
]Przykład:
curl http://localhost:8080/api/chat/workers4. Create Session
Tworzy nową sesję chat dla wybranego workera.
Endpoint: POST /api/chat/sessions
Request Body:
{
"worker_id": "SemBot Frontend (angular)"
}Response:
{
"session": {
"uuid": "abc123-def456-...",
"worker": {
"name": "SemBot Frontend (angular)",
...
},
"messages": [],
"created_at": "2025-10-06T10:30:00Z",
"updated_at": "2025-10-06T10:30:00Z",
"is_active": true,
"message_count": 0,
"preferred_executor": "claude",
"model": ""
},
"redirect_url": "/chat/abc123-def456-..."
}Przykład:
curl -X POST http://localhost:8080/api/chat/sessions \
-H "Content-Type: application/json" \
-d '{"worker_id":"SemBot Frontend (angular)"}'5. Get Session
Zwraca szczegóły sesji z pełną historią wiadomości.
Endpoint: GET /api/chat/sessions/{uuid}
Parameters:
uuid(path) - UUID sesji
Response:
{
"uuid": "abc123-def456-...",
"worker": {
"name": "SemBot Frontend (angular)",
...
},
"messages": [
{
"id": "msg-001",
"timestamp": "2025-10-06T12:04:03Z",
"question": {
"content": "która jest godzina?",
"role": "user",
"timestamp": "2025-10-06T12:04:03Z"
},
"answer": {
"content": "Aktualna godzina to 12:04.",
"role": "claude",
"worker_name": "SemBot Frontend (angular)",
"executor": "claude",
"model": "claude-sonnet-4-5-20250929",
"output_path": "/path/to/llm_outputs/claude_20251006_120403.json",
"timestamp": "2025-10-06T12:04:08Z"
}
}
],
"metadata": {
"session_id": "abc123-def456-...",
"task_id": "TASK-001",
"task_link": "https://github.com/org/repo/issues/123",
"title": "Implementacja modułu...",
"description": "Opis konwersacji...",
"author": "712020:499ddb09-7cab-4147-910d-d38e7b2fa575",
"workers": ["SemBot Frontend (angular)"],
"executor": "claude",
"model": "claude-sonnet-4-5-20250929",
"docker_worker": "sbf",
"created_at": "2025-10-06T10:30:00Z",
"updated_at": "2025-10-06T12:16:00Z",
"is_active": true,
"message_count": 15,
"author_mapping": {
"task": {
"name": "712020:499ddb09-7cab-4147-910d-d38e7b2fa575",
"url": "[email protected]:712020:499ddb09-7cab-4147-910d-d38e7b2fa575"
},
"git": {
"name": "tkowalski29",
"url": "[email protected]:tkowalski29"
},
"chat": {
"name": "tkowalski",
"url": "https://discord.com/users/tkowalski"
},
"realname": {
"name": "Tomasz Kowalski",
"url": ""
}
}
},
"created_at": "2025-10-06T10:30:00Z",
"updated_at": "2025-10-06T12:16:00Z",
"is_active": true,
"message_count": 15,
"preferred_executor": "claude",
"model": "claude-sonnet-4-5-20250929"
}Przykład:
curl http://localhost:8080/api/chat/sessions/abc123-def456-...6. List Sessions
Zwraca listę wszystkich aktywnych sesji.
Endpoint: GET /api/chat/sessions
Response:
[
{
"uuid": "abc123-def456-...",
"worker": {...},
"messages": [...],
"created_at": "2025-10-06T10:30:00Z",
"updated_at": "2025-10-06T12:16:00Z",
"is_active": true,
"message_count": 15
}
]Przykład:
curl http://localhost:8080/api/chat/sessions7. Recent Sessions
Zwraca listę ostatnich sesji posortowaną po updated_at.
Endpoint: GET /api/chat/recent-sessions
Response:
[
{
"uuid": "abc123-def456-...",
"worker_name": "SemBot Frontend (angular)",
"last_message": "2025-10-06T12:16:00Z"
}
]Przykład:
curl http://localhost:8080/api/chat/recent-sessions8. Send Message
Wysyła wiadomość do workera w ramach sesji.
Endpoint: POST /api/chat/sessions/{uuid}/messages
Parameters:
uuid(path) - UUID sesji
Request Body:
{
"message": "która jest godzina?"
}Response:
{
"id": "msg-001",
"timestamp": "2025-10-06T12:04:08Z",
"question": {
"content": "która jest godzina?",
"role": "user",
"timestamp": "2025-10-06T12:04:03Z"
},
"answer": {
"content": "Aktualna godzina to 12:04.",
"role": "claude",
"worker_name": "SemBot Frontend (angular)",
"executor": "claude",
"model": "claude-sonnet-4-5-20250929",
"output_path": "/path/to/llm_outputs/claude_20251006_120403.json",
"timestamp": "2025-10-06T12:04:08Z"
}
}Przykład:
curl -X POST http://localhost:8080/api/chat/sessions/abc123-def456-.../messages \
-H "Content-Type: application/json" \
-d '{"message":"która jest godzina?"}'9. Get Session Status
Zwraca aktualny status sesji.
Endpoint: GET /api/chat/sessions/{uuid}/status
Parameters:
uuid(path) - UUID sesji
Response:
{
"is_active": true,
"message_count": 15,
"last_activity": "2025-10-06T12:16:00Z",
"executor": "claude",
"model": "claude-sonnet-4-5-20250929"
}Przykład:
curl http://localhost:8080/api/chat/sessions/abc123-def456-.../status10. Close Session
Zamyka sesję (ustawia is_active: false).
Endpoint: POST /api/chat/sessions/{uuid}/close
Parameters:
uuid(path) - UUID sesji
Response:
{
"message": "Session closed successfully"
}Przykład:
curl -X POST http://localhost:8080/api/chat/sessions/abc123-def456-.../close11. Update Preferred Executor
Aktualizuje preferowany executor dla sesji.
Endpoint: PUT /api/chat/sessions/{uuid}/executor
Parameters:
uuid(path) - UUID sesji
Request Body:
{
"executor": "claude"
}Response:
{
"message": "Executor preference updated successfully"
}Przykład:
curl -X PUT http://localhost:8080/api/chat/sessions/abc123-def456-.../executor \
-H "Content-Type: application/json" \
-d '{"executor":"claude"}'12. Update Model
Aktualizuje model AI dla sesji.
Endpoint: PUT /api/chat/sessions/{uuid}/model
Parameters:
uuid(path) - UUID sesji
Request Body:
{
"model": "claude-sonnet-4-5-20250929"
}Response:
{
"message": "Model preference updated successfully"
}Przykład:
curl -X PUT http://localhost:8080/api/chat/sessions/abc123-def456-.../model \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-4-5-20250929"}'13. Get Chat Metadata
Zwraca plik chat.json z metadanymi sesji.
Endpoint: GET /api/chat/sessions/{uuid}/metadata
Parameters:
uuid(path) - UUID sesji
Response:
{
"session_id": "abc123-def456-...",
"task_id": "TASK-001",
"task_link": "https://github.com/org/repo/issues/123",
"title": "Implementacja modułu...",
"description": "Opis konwersacji...",
"author": "712020:499ddb09-7cab-4147-910d-d38e7b2fa575",
"workers": ["SemBot Frontend (angular)"],
"executor": "claude",
"model": "claude-sonnet-4-5-20250929",
"docker_worker": "sbf",
"created_at": "2025-10-06T10:30:00Z",
"updated_at": "2025-10-06T12:16:00Z",
"is_active": true,
"message_count": 15,
"author_mapping": {
"task": {...},
"git": {...},
"chat": {...},
"realname": {...}
}
}Przykład:
curl http://localhost:8080/api/chat/sessions/abc123-def456-.../metadata14. Get LLM Outputs
Zwraca listę plików output LLM dla sesji.
Endpoint: GET /api/chat/sessions/{uuid}/outputs
Parameters:
uuid(path) - UUID sesji
Response:
[
{
"filename": "claude_20251006_120403.json",
"path": "/path/to/.chat/abc123.../llm_outputs/claude_20251006_120403.json",
"size": 4231
},
{
"filename": "claude_20251006_120510.json",
"path": "/path/to/.chat/abc123.../llm_outputs/claude_20251006_120510.json",
"size": 3847
}
]Przykład:
curl http://localhost:8080/api/chat/sessions/abc123-def456-.../outputs15. Get LLM Output File
Zwraca zawartość konkretnego pliku output LLM.
Endpoint: GET /api/chat/sessions/{uuid}/outputs/{filename}
Parameters:
uuid(path) - UUID sesjifilename(path) - Nazwa pliku (np.claude_20251006_120403.json)
Response:
{
"filename": "claude_20251006_120403.json",
"path": "/path/to/.chat/abc123.../llm_outputs/claude_20251006_120403.json",
"raw_output": "{\"type\":\"system\",\"subtype\":\"init\",...}\n{\"type\":\"assistant\",...}\n{\"type\":\"result\",...}",
"size": 4231
}Przykład:
curl http://localhost:8080/api/chat/sessions/abc123-def456-.../outputs/claude_20251006_120403.json16. Render LLM Output
Renderuje output LLM jako sformatowany HTML.
Endpoint: GET /api/chat/sessions/{uuid}/outputs/{filename}/render
Parameters:
uuid(path) - UUID sesjifilename(path) - Nazwa pliku
Response: HTML (text/html)
Przykład:
curl http://localhost:8080/api/chat/sessions/abc123-def456-.../outputs/claude_20251006_120403.json/renderOutput (sformatowany HTML):
<div class="claude-output">
<div class="system-message">
<strong>System:</strong> Session initialized
</div>
<div class="assistant-message">
<strong>Assistant:</strong> Aktualna godzina to 12:04.
</div>
<div class="result-message">
<strong>Result:</strong> Success (4231ms, $0.038)
</div>
</div>Docker Management Endpoints
17. Get Docker Status
Sprawdza status kontenera Docker dla sesji.
Endpoint: GET /api/chat/sessions/{uuid}/docker/status
Parameters:
uuid(path) - UUID sesji
Response:
{
"running": true,
"worker_tag": "sbf",
"container_name": "chat-abc123-def456-..."
}Przykład:
curl http://localhost:8080/api/chat/sessions/abc123-def456-.../docker/status18. Start Docker Container
Uruchamia kontener Docker dla sesji.
Endpoint: POST /api/chat/sessions/{uuid}/docker/start
Parameters:
uuid(path) - UUID sesji
Response:
{
"success": true,
"message": "Docker container started"
}Przykład:
curl -X POST http://localhost:8080/api/chat/sessions/abc123-def456-.../docker/start19. Restart Docker Container
Restartuje kontener Docker dla sesji.
Endpoint: POST /api/chat/sessions/{uuid}/docker/restart
Parameters:
uuid(path) - UUID sesji
Response:
{
"success": true,
"message": "Docker container restarted"
}Przykład:
curl -X POST http://localhost:8080/api/chat/sessions/abc123-def456-.../docker/restart20. Stop Docker Container
Zatrzymuje kontener Docker dla sesji.
Endpoint: POST /api/chat/sessions/{uuid}/docker/stop
Parameters:
uuid(path) - UUID sesji
Response:
{
"success": true,
"message": "Docker container stopped"
}Przykład:
curl -X POST http://localhost:8080/api/chat/sessions/abc123-def456-.../docker/stop21. Get Docker Logs
Pobiera logi z kontenera Docker.
Endpoint: GET /api/chat/sessions/{uuid}/docker/logs
Parameters:
uuid(path) - UUID sesji
Response: Plain text (text/plain)
[2025-10-06 12:04:03] 📦 Installing dependencies...
[2025-10-06 12:04:05] ✅ git installed
[2025-10-06 12:04:06] ⬇️ Installing Claude CLI...
[2025-10-06 12:04:10] ✅ Claude CLI installed
[2025-10-06 12:04:11] 🔑 Setting up SSH...
[2025-10-06 12:04:12] 📂 Cloning repositories...
[2025-10-06 12:04:20] ✅ Cloned: sembot-angular
[2025-10-06 12:04:21] ✅ Container readyPrzykład:
curl http://localhost:8080/api/chat/sessions/abc123-def456-.../docker/logsError Responses
Wszystkie endpointy mogą zwrócić następujące błędy:
400 Bad Request
{
"error": "Invalid request body"
}Przyczyny:
- Nieprawidłowy JSON w request body
- Brak wymaganych pól
- Nieprawidłowe wartości parametrów
404 Not Found
{
"error": "Session not found"
}Przyczyny:
- Sesja o podanym UUID nie istnieje
- Plik został usunięty
- Worker nie istnieje
500 Internal Server Error
{
"error": "Failed to start Docker: ..."
}Przyczyny:
- Błąd serwera
- Problem z Docker
- Błąd zapisu do pliku
- Błąd wykonania Claude CLI
Rate Limiting
API nie ma obecnie limitów, ale zaleca się:
- Maksymalnie 10 request/s na sesję
- Timeout dla długich operacji (np. Docker start): 120s
Webhook Notifications
Chat może wysyłać powiadomienia przez webhook:
Konfiguracja:
server:
chat:
webhook_url: "https://webhook.url"Payload:
{
"event": "message_sent",
"session_id": "abc123-def456-...",
"message_id": "msg-001",
"timestamp": "2025-10-06T12:04:08Z",
"question": "która jest godzina?",
"answer": "Aktualna godzina to 12:04."
}Events:
session_created- nowa sesja utworzonamessage_sent- nowa wiadomość wysłanasession_closed- sesja zamkniętadocker_started- kontener Docker uruchomionydocker_stopped- kontener Docker zatrzymany
Przykłady użycia
Complete workflow: Utworzenie sesji i wysłanie wiadomości
# 1. Pobierz listę workerów
curl http://localhost:8080/api/chat/workers
# 2. Utwórz sesję
SESSION_RESPONSE=$(curl -X POST http://localhost:8080/api/chat/sessions \
-H "Content-Type: application/json" \
-d '{"worker_id":"SemBot Frontend (angular)"}')
SESSION_UUID=$(echo $SESSION_RESPONSE | jq -r '.session.uuid')
# 3. Wyślij wiadomość
curl -X POST http://localhost:8080/api/chat/sessions/$SESSION_UUID/messages \
-H "Content-Type: application/json" \
-d '{"message":"która jest godzina?"}'
# 4. Pobierz szczegóły sesji
curl http://localhost:8080/api/chat/sessions/$SESSION_UUID
# 5. Pobierz metadata
curl http://localhost:8080/api/chat/sessions/$SESSION_UUID/metadata
# 6. Zamknij sesję
curl -X POST http://localhost:8080/api/chat/sessions/$SESSION_UUID/closePraca z Docker
# 1. Sprawdź status
curl http://localhost:8080/api/chat/sessions/$SESSION_UUID/docker/status
# 2. Uruchom kontener (jeśli nie działa)
curl -X POST http://localhost:8080/api/chat/sessions/$SESSION_UUID/docker/start
# 3. Sprawdź logi
curl http://localhost:8080/api/chat/sessions/$SESSION_UUID/docker/logs
# 4. Zatrzymaj kontener
curl -X POST http://localhost:8080/api/chat/sessions/$SESSION_UUID/docker/stopNastępne kroki
- Konfiguracja → - jak skonfigurować workery i executory
- Użytkowanie → - przewodnik użytkownika
- Docker → - szczegóły Docker executor
- Troubleshooting → - rozwiązywanie problemów