Sessions
Crie execuções stateful, envie eventos do usuário e leia o histórico de uma session.
#Endpoints
| Método | Caminho | Descrição |
|---|---|---|
| POST | /v1/projects/:projectId/sessions | Cria uma session para um agent. |
| POST | /v1/projects/:projectId/sessions/:id/events | Ingere eventos do usuário. |
| GET | /v1/projects/:projectId/sessions/:id/artifacts | Entregáveis da session agrupados por nome (versão mais recente + URL assinada). |
| PATCH | /v1/projects/:projectId/sessions/:id | Renomeia a session (`title`; `null` remove o título). |
| POST | /v1/projects/:projectId/sessions/:id/archive | Arquiva a session. |
| DELETE | /v1/projects/:projectId/sessions/:id | Remove a session. |
| GET | /v1/projects/:projectId/sessions/:id/events | Lista eventos por `afterSeq`. |
| GET | /v1/projects/:projectId/sessions/:id | Lê metadados e status da session. |
| GET | /v1/projects/:projectId/sessions | Lista sessions por cursor e filtros. |
#Criar session
{
"agent": { "id": "agent_...", "version": 3 },
"title": "Atendimento #123",
"metadata": { "customerId": "cus_123" },
"resources": [{ "memoryStore": "ms_...", "mode": "read-only" }],
"vaultIds": ["vault_..."]
}agent também aceita apenas o ID para usar a versão atual. Para reprodutibilidade, prefira informar { id, version }.
#Ambiente, cofres e memória
environmentId, vaultIds e resources seguem a precedência explícito da chamada > padrão do agent > padrão da conta, resolvida na criação da session.
O sinal de "explícito" é a presença do campo, não o conteúdo:
| No corpo | Efeito |
|---|---|
| campo ausente | Cai no padrão do agent e, na falta dele, no padrão da conta. |
vaultIds: [] / resources: [] | Afirmação explícita "sem cofre / sem memória" — vence o padrão do agent. |
environmentId: null | Afirmação explícita "ambiente base da conta". |
A session é autocontida depois de nascer: mudar o padrão do agent não altera nenhuma session existente.
#Ingerir eventos
{
"events": [
{
"type": "user.message",
"content": [{ "type": "text", "text": "Explique a pendência do sinistro." }],
"idempotencyKey": "claim-123-turn-1"
}
]
}Eventos ingeríveis:
| Tipo | Uso |
|---|---|
user.message | Mensagem ou instrução do usuário. |
user.interrupt | Solicita interrupção da execução atual. |
user.custom_tool_result | Responde uma custom tool executada pelo seu backend. |
user.tool_confirmation | Aprova ou nega uma tool que exigiu confirmação. |
#Histórico
GET /v1/projects/:projectId/sessions/:id/events?afterSeq=0&limit=100Resposta:
{
"data": [],
"hasMore": true,
"nextAfterSeq": 100
}Use nextAfterSeq como próximo afterSeq até hasMore ser false.
#Listagem
GET /sessions aceita limit, cursor, agent, status e filtros de metadata no formato metadata[chave]=valor.
GET /v1/projects/:projectId/sessions?status=idle&metadata[customerId]=cus_123#Renomear
PATCH /v1/projects/:projectId/sessions/:id{ "title": "Edital ANS 2026" }title é aparado nas pontas (1–200 caracteres) e null remove o título — a session volta ao
rótulo padrão da interface. É só um rótulo: não escreve no log, não acorda o worker e funciona também
em session arquivada, porque corrigir o nome de algo que já terminou é o caso mais comum.
No SDK: await client.sessions.rename('sess_...', 'Edital ANS 2026').