Referência da API · Sessões e Mensagens
API de Sessões e Mensagens de Chat
Crie, liste, renomeie, fixe, favorite e exclua sessões de chat, além de gerenciar mensagens individuais — com histórico de edições rastreado e opção de desfazer.
Endpoints de sessão
POST /api/v1/sessionsGET /api/v1/sessionsGET /api/v1/sessions/{session_id}/messagesPATCH /api/v1/sessions/{session_id}DELETE /api/v1/sessions/{session_id}Endpoints de mensagens
GET /api/v1/messages/{message_id}PATCH /api/v1/messages/{message_id}GET /api/v1/messages/{message_id}/historyPOST /api/v1/messages/{message_id}/undoDELETE /api/v1/messages/{message_id}Criar Sessão — Corpo da Requisição
{
"title": "Untitled Chat",
"kind": "chat",
"folder_id": null,
"agent_id": null,
"metadata": {}
}workspace_id não é aceito pelo cliente em runtimes pessoais, e caso exista deve corresponder ao contexto de runtime do workspace ativo — não é tratado como uma sobreposição arbitrária enviada pelo cliente.
Listar — Parâmetros de consulta e resposta
{
"items": [ { "id": "...", "title": "...", "pinned": false, "...": "..." } ],
"total": 12,
"limit": 50,
"offset": 0
}Atualizar Sessão (PATCH)
Pelo menos um campo deve estar presente no corpo da requisição — um PATCH vazio é rejeitado.
{
"pinned": true,
"starred": false
}Comportamentos da sessão
- Uma sessão pertence a exatamente um proprietário (um usuário, opcionalmente vinculado a um workspace) — isso é determinado pelo contexto de autenticação da requisição, não pela entrada do cliente.
- Excluir uma sessão é uma remoção lógica (deleted_at é definido); a sessão e suas mensagens permanecem no banco de dados, mas são excluídas de todas as consultas padrão.
- GET /sessions/{session_id}/messages retorna uma contagem de mensagens calculada em tempo real a partir das próprias mensagens, e não de um contador em cache.
- Os parâmetros de caminho session_id e message_id são validados como UUIDs — um ID malformado gera um erro de validação claro, não um erro de servidor.
- As sessões de demonstração do site de marketing são limitadas a 3 por usuário e retornam 403 quando esse limite é atingido.
Histórico de edições de mensagens e Desfazer
Toda edição do conteúdo ou do payload de uma mensagem é registrada antes de a alteração ser aplicada, preservando a versão anterior.
[
{
"id": "8f14e...",
"old_content": "Original message text",
"old_payload": null,
"edited_at": "2026-07-30T16:40:00Z"
}
]- Uma mensagem só pode ser editada ou excluída pelo proprietário da sessão a que pertence.
- Desfazer restaura a versão registrada mais recente e remove essa entrada do histórico — não volta além da última edição.
- Editar ou excluir uma mensagem não ajusta atualmente o campo de contagem em cache da sessão; esse campo sempre reflete a contagem em tempo real.
Modelos de erro
400
Solicitação inválida — por exemplo, corpo PATCH vazio ou nenhuma alteração detectada.
401
Autenticação ausente ou inválida.
404
Sessão ou mensagem não encontrada (ou não pertencente ao solicitante).
Exemplos
Criar sessão
curl -X POST "/api/v1/sessions" \
-H "Authorization: Bearer [token]" \
-H "Content-Type: application/json" \
-d '{"title": "New Chat", "kind": "chat"}'Fixar sessão
curl -X PATCH "/api/v1/sessions/[session_id]" \
-H "Authorization: Bearer [token]" \
-H "Content-Type: application/json" \
-d '{"pinned": true}'Editar mensagem
curl -X PATCH "/api/v1/messages/[message_id]" \
-H "Authorization: Bearer [token]" \
-H "Content-Type: application/json" \
-d '{"content": "Corrected message text"}'Desfazer a última edição
curl -X POST "/api/v1/messages/[message_id]/undo" \
-H "Authorization: Bearer [token]"