Referência da API

Automations

Agende um prompt para um agent executar sozinho, com a versão, o ambiente, os cofres e a memória que você escolher.

Uma automation dispara um prompt para um agent em horários definidos por cron (ou sob demanda). Cada disparo cria uma session e vira um run consultável.

#Endpoints

MétodoCaminhoDescrição
POST/v1/projects/:projectId/automationsCria a automation e registra a agenda.
GET/v1/projects/:projectId/automationsLista automations por cursor.
GET/v1/projects/:projectId/automations/:idLê uma automation.
PATCH/v1/projects/:projectId/automations/:idAltera campos; só os presentes mudam.
DELETE/v1/projects/:projectId/automations/:idRemove a automation e a agenda.
POST/v1/projects/:projectId/automations/:id/runDispara agora (202).
GET/v1/projects/:projectId/automations/:id/runsLista os disparos por cursor.
POST/v1/projects/:projectId/automations/parse-scheduleConverte uma descrição em linguagem natural para cron.

#Criar automation

json
{
  "name": "Relatório diário de pendências",
  "agentId": "agent_...",
  "agentVersion": 7,
  "prompt": "Liste as pendências abertas e resuma o que mudou desde ontem.",
  "trigger": { "type": "schedule", "cron": "0 8 * * 1-5", "timezone": "America/Sao_Paulo" },
  "environmentId": "env_...",
  "vaultIds": ["vault_..."],
  "resources": [
    { "memoryStoreId": "ms_...", "memoryStoreName": "Procedimentos", "mode": "read-write" }
  ]
}
CampoTipoObservação
namestring1 a 200 caracteres.
agentIdstringAgent que executa. Obrigatório na criação; o PATCH não troca de agent.
agentVersionnumberPin de versão. Ausente ou null = versão corrente no momento do disparo.
promptstringAté 20000 caracteres. É a mensagem que abre a session.
triggerobjectschedule (com cron, timezone, overlap, jitterSeconds) ou manual.
enabledbooleanPadrão true.
environmentIdstringAmbiente da session do disparo. null = ambiente base.
vaultIdsarrayAté 16 cofres. Aceita id (vault_...) ou nome; a resposta traz sempre id.
resourcesarrayAté 16 mounts de memória. memoryStoreId aceita id (ms_...) ou nome.

memoryStoreName é obrigatório no corpo, mas o nome gravado vem sempre da store real.

O PATCH é parcial: campo ausente não muda. agentVersion, environmentId e description aceitam null para limpar.

#Referências validadas na escrita

Uma automation guarda ponteiros para quatro coisas que vivem fora dela — versão do agent, ambiente, cofres e repositórios de memória — e nada disso é lido no momento da escrita, só quando a agenda dispara, possivelmente semanas depois. Por isso a validação acontece na escrita, onde o erro ainda tem dono:

CódigoHTTPQuando
automation.agent_archived422Pin de versão em um agent arquivado.
automation.agent_version_not_found422A versão pedida não existe nesse agent.
automation.environment_not_found422O ambiente não existe neste projeto.
automation.vault_not_found422Um dos cofres não existe neste workspace.
automation.memory_store_not_found422Um dos repositórios de memória não existe neste projeto.
agent.not_found404O agent informado não existe no projeto.
automation.not_found404Automation inexistente ou fora do projeto.

O PATCH só revalida o que mudou de verdade. Reenviar o mesmo pin de um agent que foi arquivado depois não bloqueia a edição — senão a automation quebrada viraria uma prisão, sem como corrigi-la nem desligá-la pela tela de edição.

No disparo, a automation nunca cai por causa do pin. Se a versão fixada sumiu entre a escrita e o disparo, a execução degrada para a versão corrente e registra erro no log — melhor o relatório na versão errada do que nenhum relatório. Só quando não há versão utilizável é que o run vira error. O mesmo vale para os outros ponteiros: ambiente, cofre ou store que sumiram são soltos, e a session nasce sem eles.

#O que a automation não escolhe vem do agent

environmentId, vaultIds e resources são resolvidos no disparo, não na escrita da agenda: o que a automation declarou vence; o que ela deixou em branco cai no padrão de execução do agent e, na falta dele, no padrão da conta (ambiente padrão do projeto, sem cofre e sem memória).

Para a automation, "em branco" é null ou lista vazia — não existe a afirmação "sem cofre mesmo" que a criação de session tem. Quem precisa de uma session sem cofre remove o padrão do agent.

Como a resolução acontece no disparo, mudar o padrão do agent muda o próximo disparo da agenda. É deliberado: a automation segue o agent.

#Disparo e runs

http
POST /v1/projects/:projectId/automations/:id/run

Responde 202 com { "accepted": true } — o run acontece em workflow durável. Consulte o resultado em GET /:id/runs, que devolve o run junto do estado da session criada:

json
{
  "id": "autrun_...",
  "automationId": "auto_...",
  "sessionId": "sess_...",
  "triggerKind": "manual",
  "status": "started",
  "error": null,
  "createdAt": "2026-08-01T11:00:00.000Z",
  "sessionStatus": "idle",
  "sessionStopReason": "end_turn",
  "sessionTitle": "Relatório diário de pendências"
}

status descreve o link, não o trabalho: started = a session nasceu e o loop disparou; error = o disparo não conseguiu criar a session (agent indisponível ou orçamento estourado, com o motivo em error). O resultado do trabalho está em sessionStatus/sessionStopReason. triggerKind é schedule ou manual.

#Relacionado