Automações
Gerencie fluxos de automação. A criação, atualização e exclusão exigem chave de API — tokens CLI são somente leitura. Sujeito ao plano contratado.
Nesta página
Listar workflows (limitado por plano)
Lista paginada de workflows acessíveis ao chamador. Retorna o envelope padrão ({count, next, previous, results}). Suporta busca por nome e filtros de intervalo de datas.
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| search | string | Opcional | Busca de substring sem distinção de maiúsculas no nome do workflow. Máximo 256 caracteres. |
| start_date | string (YYYY-MM-DD) | Opcional | Data de início inclusiva (fuso horário do usuário). Também aceito: date_start, date_from. |
| end_date | string (YYYY-MM-DD) | Opcional | Data de fim inclusiva, 23:59:59 no fuso horário do usuário. Também aceito: date_end, date_to. |
| page | integer | Opcional | Número da página (índice base 1). Padrão: 1. |
| page_size | integer | Opcional | Itens por página. Padrão: 25, máximo: 100. Alias: limit. |
| offset | integer | Opcional | Paginação por offset (aceito por retrocompatibilidade). |
Resposta
{
"count": "integer",
"next": "string|null",
"previous": "string|null",
"results": "array<{ id, name, description, is_active, created_at, updated_at, ... }>"
}Erros
| Status | Quando |
|---|---|
| 400 | Erro de validação (search_query_too_long, invalid_date_range) |
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
curl -sS -X GET 'https://api.dailybot.com/v1/workflows/?page=1&page_size=25' -H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Requer o plano com acesso a workflows.
Create a workflow (API-Key only)
Create a workflow (API-Key only)
Erros
| Status | Quando |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
| 400 | Validation error |
curl -sS -X POST 'https://api.dailybot.com/v1/workflows/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- CLI token is rejected on POST.
Retrieve a workflow
Retrieve a workflow
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
Erros
| Status | Quando |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
| 404 | Not found or not visible |
curl -sS -X GET 'https://api.dailybot.com/v1/workflows/{uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
Update a workflow (API-Key only)
Update a workflow (API-Key only)
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
Erros
| Status | Quando |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
| 400 | Validation error |
| 404 | Not found or not visible |
curl -sS -X PATCH 'https://api.dailybot.com/v1/workflows/{uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
Delete a workflow (API-Key only)
Delete a workflow (API-Key only)
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
Erros
| Status | Quando |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
| 404 | Not found or not visible |
curl -sS -X DELETE 'https://api.dailybot.com/v1/workflows/{uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
Disparar um workflow ativo api_trigger
Dispara manualmente um workflow cujo tipo de trigger é api_trigger. A execução é enfileirada de forma assíncrona (202 Accepted). Um objeto JSON payload opcional (≤ 8 KiB) fica exposto aos passos do workflow como contexto do trigger.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
Corpo da requisição
{
"payload": "object (optional) — free-form JSON object, max 8 KiB when serialized. Exposed to workflow steps as {{trigger.body.*}} variables."
}Resposta
{
"detail": "string — human-readable acceptance message",
"workflow_uuid": "string (uuid) — the triggered workflow",
"queued": "boolean — always true on 202; the run is queued, not executed inline"
}Erros
| Status | Quando |
|---|---|
| 400 | workflow_not_triggerable — o tipo de trigger não é api_trigger, ou o workflow está inativo |
| 400 | workflow_trigger_payload_invalid — payload não é um objeto JSON ou serializa para > 8 KiB |
| 401 | Credencial ausente, inválida ou expirada |
| 403 | workflow_execute_not_allowed — o caller não tem permissão de execução neste workflow; ou o plano não inclui workflows |
| 404 | UUID desconhecido ou workflow fora da organização do caller |
| 409 | workflow_frozen — o workflow está congelado (estado de plano/limite) |
| 429 | Rate-limit atingido — respeite o header Retry-After |
curl -sS -X POST 'https://api.dailybot.com/v1/workflows/{uuid}/trigger/' \
-H 'X-API-KEY: $DAILYBOT_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"payload": {"env": "production", "requested_by": "release-bot"}}'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Gated por plano: organizações sem a feature de workflows recebem 403 em todos os endpoints de workflows, incluindo trigger.
- Apenas workflows com trigger type api_trigger podem ser disparados via este endpoint. Outros tipos (scheduled, eventos de form/check-in, commands, …) mantêm suas próprias rotas.
- Os mesmos workflows api_trigger também podem ser disparados por um botão interativo via buttons[].callback_workflow (opcionalmente com modal_body cujos campos enviados chegam como {{trigger.fields.<name>}}).
- Variáveis de trigger disponíveis para os passos: {{trigger.source}}, {{trigger.body.*}}, {{trigger.button_id}}, {{trigger.button_value}}, {{trigger.fields.<name>}}, {{trigger.clicked_at}}, {{trigger.user.*}}, {{trigger.triggered_by_user_uuid}}.
- Diferente de create/update/delete, trigger aceita tokens CLI com capacidade write — API key ou CLI write funcionam.
Workflows
Crie, gerencie, dispare e monitore workflows automatizados e logs de execução.
CLI vs API key: Tokens CLI são somente leitura para criar, atualizar e excluir workflows — essas escritas exigem
X-API-KEY. Trigger é a exceção: aceita uma API key ou um token CLI com capacidade de escrita. Todos os endpoints de workflows são restritos por plano; organizações sem o recurso de workflows podem receber403mesmo em leituras.
Resumo dos endpoints
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /v1/workflows/ |
Listar todos os workflows |
| GET | /v1/workflows/{uuid}/ |
Obter um workflow específico |
| POST | /v1/workflows/ |
Criar um workflow |
| PUT | /v1/workflows/{uuid}/ |
Substituir um workflow |
| PATCH | /v1/workflows/{uuid}/ |
Atualizar um workflow |
| DELETE | /v1/workflows/{uuid}/ |
Excluir um workflow |
| POST | /v1/workflows/{uuid}/trigger/ |
Disparar um workflow ativo api_trigger |
| GET | /v1/workflows/{uuid}/execution_logs/ |
Obter logs de execução do workflow |
| POST | /v1/workflows/{uuid}/duplicate/ |
Duplicar um workflow |
GET /v1/workflows/
Retorna todos os workflows da organização. Paginado com o envelope padrão { count, next, previous, results }.
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
is_active |
boolean | Não | Filtrar por status ativo. |
search |
string | Não | Busca de substring sem distinção de maiúsculas no campo name do workflow. Máx. 256 chars. Se exceder retorna 400 search_query_too_long. |
start_date |
string (YYYY-MM-DD) |
Não | Filtrar workflows criados a partir desta data (fuso horário do chamador). Também: date_start, date_from. |
end_date |
string (YYYY-MM-DD) |
Não | Filtrar workflows criados até esta data (fuso horário do chamador). Também: date_end, date_to. Intervalos invertidos retornam 400 invalid_date_range. |
page |
integer | Não | Número de página (indexado a partir de 1). Padrão: 1. |
page_size |
integer | Não | Itens por página (máx. 100). Padrão: 25. Alias: limit. |
offset |
integer | Não | Paginação por offset (aceito por retrocompatibilidade). |
curl -X GET "https://api.dailybot.com/v1/workflows/?search=onboarding&start_date=2026-06-01&end_date=2026-06-30&page_size=50" \
-H "X-API-KEY: sua_api_key"
Resposta (200 OK):
{
"count": 5,
"next": null,
"previous": null,
"results": [
{
"id": "wf-uuid",
"name": "Onboarding de Novos Funcionários",
"is_active": true,
"trigger_type": "event",
"created_at": "2026-01-15T00:00:00Z"
}
]
}
Identificador: Cada workflow usa
idcomo identificador — o valor é um UUID (veja Identificadores).
GET /v1/workflows/{uuid}/
Retorna um workflow específico com configuração completa.
curl -X GET "https://api.dailybot.com/v1/workflows/wf-uuid/" \
-H "X-API-KEY: sua_api_key"
Resposta (200 OK):
{
"uuid": "wf-uuid",
"name": "Onboarding de Novos Funcionários",
"is_active": true,
"trigger_type": "event",
"trigger_config": {
"event": "organization.user_activated"
},
"actions": [
{
"type": "send_message",
"target_type": "user",
"message": "Bem-vindo ao time! Aqui está o que fazer primeiro..."
}
],
"created_at": "2026-01-15T00:00:00Z"
}
POST /v1/workflows/
Cria um novo workflow. Auth: somente API key — tokens CLI são rejeitados em POST.
Parâmetros do corpo
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name |
string | Sim | Nome do workflow. |
is_active |
boolean | Não | Se o workflow está ativo. Padrão: true. |
trigger_type |
string | Sim | Tipo de trigger. Use api_trigger para workflows disparados via esta API ou botões interativos (selecionável no construtor de automações como When triggered via API or button). Outros tipos integrados incluem event, schedule e manual. |
trigger_config |
object | Sim | Configuração do trigger (depende de trigger_type). |
actions |
array de objetos | Sim | Lista de ações a executar. |
curl -X POST "https://api.dailybot.com/v1/workflows/" \
-H "X-API-KEY: sua_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Notificação de Deploy",
"trigger_type": "api_trigger",
"trigger_config": {},
"actions": [
{
"type": "send_message",
"target_type": "channel",
"target_uuid": "channel-uuid",
"message": "Deploy concluído: {{trigger.body.service}} v{{trigger.body.version}}"
}
]
}'
Resposta (201 Created):
{
"uuid": "wf-new-uuid",
"name": "Notificação de Deploy",
"is_active": true,
"trigger_type": "api_trigger",
"created_at": "2026-04-06T10:00:00Z"
}
DELETE /v1/workflows/{uuid}/
Exclui um workflow.
curl -X DELETE "https://api.dailybot.com/v1/workflows/wf-uuid/" \
-H "X-API-KEY: sua_api_key"
Resposta (204 No Content)
POST /v1/workflows/{uuid}/trigger/
Dispara manualmente um workflow cujo tipo de trigger é api_trigger — o trigger projetado para disparo externo. Workflows com qualquer outro tipo de trigger (agendados, eventos de formulário/check-in, comandos, …) mantêm seus próprios caminhos de disparo e retornam 400 workflow_not_triggerable.
Auth: API key ou token CLI com capacidade de escrita. Permissões: restrição por plano + associação à org; a permissão de execução por workflow é aplicada.
Corpo da solicitação
O corpo é opcional:
{"payload": {"env": "production", "requested_by": "release-bot"}}
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
payload |
object | Não | Objeto JSON livre, máx. 8 KiB ao serializar. Exposto aos passos do workflow como variáveis {{trigger.body.*}}. |
curl -X POST "https://api.dailybot.com/v1/workflows/wf-uuid/trigger/" \
-H "X-API-KEY: sua_api_key" \
-H "Content-Type: application/json" \
-d '{"payload": {"env": "production"}}'
Resposta — 202 Accepted (a execução é enfileirada, não executada inline):
{"detail": "Workflow trigger accepted.", "workflow_uuid": "wf-uuid", "queued": true}
Códigos de erro
| Status | code |
Quando |
|---|---|---|
400 |
workflow_not_triggerable |
O tipo de trigger não é api_trigger, ou o workflow está inativo. |
400 |
workflow_trigger_payload_invalid |
payload não é um objeto ou serializa para > 8 KiB. |
403 |
workflow_execute_not_allowed |
O chamador não tem permissão de execução neste workflow. |
409 |
workflow_frozen |
O workflow está congelado (estado de plano/limite). |
404 |
— | UUID desconhecido ou fora da organização do chamador. |
401 |
— | Credencial ausente, inválida ou expirada. |
429 |
— | Limitado por throttling — respeite o header Retry-After. |
Os mesmos workflows api_trigger também podem ser disparados a partir de um botão interativo de mensagem via buttons[].callback_workflow (opcionalmente com um modal_body cujos campos enviados chegam como {{trigger.fields.<name>}}). Consulte Mensagens do bot para os campos de botões.
Disparado via a API pública, {{trigger.source}} é "api" e as chaves de botão/campo são null ou vazias.
Variáveis de trigger
Os passos do workflow podem referenciar o contexto de disparo através do namespace {{trigger.*}}:
| Variável | Descrição |
|---|---|
{{trigger.source}} |
Como o workflow foi disparado: api, button_click ou modal_submit. |
{{trigger.body.*}} |
Chaves do objeto payload opcional da API (ex. {{trigger.body.env}}). |
{{trigger.button_id}} |
Id de botão gerado pelo servidor ($btn/<uuid4>) quando disparado a partir de um botão de mensagem. |
{{trigger.button_value}} |
A string value do botão clicado — use para ramificar quando vários botões apontam para o mesmo workflow. |
{{trigger.fields.<name>}} |
Valores de entrada do modal quando disparado via modal_body + callback_workflow (ex. {{trigger.fields.summary}}). |
{{trigger.clicked_at}} |
Timestamp ISO 8601 do clique ou envio do modal. |
{{trigger.user.uuid}} |
UUID do usuário que disparou o workflow (clicador ou chamador da API). |
{{trigger.user.full_name}} |
Nome completo para exibição do usuário que dispara. |
{{trigger.user.first_name}} |
Primeiro nome do usuário que dispara. |
{{trigger.user.email}} |
Email do usuário que dispara. |
{{trigger.user.role}} |
Papel: ADMIN_ORG, ADMIN, MANAGER, MEMBER ou GUEST. |
{{trigger.triggered_by_user_uuid}} |
UUID do usuário que disparou o workflow (alias de {{trigger.user.uuid}} para caminhos de botão/modal). |
Receitas
Modal → Workflow
Componha modal_body com callback_workflow em um botão interativo: o clique abre o modal e, ao enviar, os valores dos campos são entregues ao workflow como {{trigger.fields.<input.name>}} — sem servidor externo.
curl -X POST "https://api.dailybot.com/v1/send-message/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"message": "Reportar um incidente:",
"target_users": ["user-uuid"],
"buttons": [
{
"label": "Reportar",
"button_type": "interactive",
"value": "report",
"callback_workflow": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"modal_body": {
"title": "Novo incidente",
"blocks": [
{
"type": "input",
"name": "summary",
"label": "O que aconteceu?",
"multiline": true,
"required": true
}
]
}
}
]
}'
O workflow (tipo de trigger api_trigger) pode então usar {{trigger.fields.summary}} em qualquer passo — pré-preencher uma resposta de formulário, compor uma mensagem ou alimentar um prompt de IA. Um modal com blocos input e sem callback_url nem callback_workflow é rejeitado (input_without_callback).
Ramificação por valor — vários botões, um workflow
Aponte vários botões para o mesmo UUID de workflow com strings value diferentes e ramifique dentro do workflow em {{trigger.button_value}}:
curl -X POST "https://api.dailybot.com/v1/send-message/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"message": "O deploy está pronto — escolha uma ação:",
"target_users": ["user-uuid"],
"buttons": [
{
"label": "Deploy para staging",
"button_type": "interactive",
"value": "staging",
"callback_workflow": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
},
{
"label": "Deploy para produção",
"button_type": "interactive",
"value": "production",
"callback_workflow": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
},
{
"label": "Cancelar",
"button_type": "interactive",
"value": "cancel",
"callback_workflow": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
]
}'
Dentro do workflow, um passo condicional em {{trigger.button_value}} roteia staging, production ou cancel sem manter três definições de workflow separadas.
Para o esquema completo de botões (label, modal_body, response e mais), consulte Mensagens do bot.
GET /v1/workflows/{uuid}/execution_logs/
Retorna os logs de execução de um workflow específico.
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
date_start |
string | Não | Data de início (AAAA-MM-DD). |
date_end |
string | Não | Data de fim (AAAA-MM-DD). |
status |
string | Não | Filtrar por status: success, failure ou pending. |
limit |
integer | Não | Número de resultados. Padrão: 50. |
curl -X GET "https://api.dailybot.com/v1/workflows/wf-uuid/execution_logs/?limit=10" \
-H "X-API-KEY: sua_api_key"
Resposta (200 OK):
{
"count": 25,
"results": [
{
"id": "log-uuid",
"workflow_uuid": "wf-uuid",
"status": "success",
"trigger_data": { "source": "api" },
"executed_at": "2026-04-06T09:00:00Z",
"duration_ms": 145
}
]
}
POST /v1/workflows/{uuid}/duplicate/
Duplica um workflow com um novo nome.
curl -X POST "https://api.dailybot.com/v1/workflows/wf-uuid/duplicate/" \
-H "X-API-KEY: sua_api_key" \
-H "Content-Type: application/json" \
-d '{"name": "Notificação de Deploy (Cópia)"}'
Resposta (201 Created):
{
"uuid": "wf-copy-uuid",
"name": "Notificação de Deploy (Cópia)",
"is_active": false,
"created_at": "2026-04-06T10:05:00Z"
}