Skip to content
ver .md original

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.

GET/v1/workflows/Chave de APICLI AuthPaginação por número de 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

NomeTipoObrigatórioDescrição
searchstringOpcionalBusca de substring sem distinção de maiúsculas no nome do workflow. Máximo 256 caracteres.
start_datestring (YYYY-MM-DD)OpcionalData de início inclusiva (fuso horário do usuário). Também aceito: date_start, date_from.
end_datestring (YYYY-MM-DD)OpcionalData de fim inclusiva, 23:59:59 no fuso horário do usuário. Também aceito: date_end, date_to.
pageintegerOpcionalNúmero da página (índice base 1). Padrão: 1.
page_sizeintegerOpcionalItens por página. Padrão: 25, máximo: 100. Alias: limit.
offsetintegerOpcionalPaginaçã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

StatusQuando
400Erro de validação (search_query_too_long, invalid_date_range)
401Missing/invalid/expired credential
403Authenticated but not permitted
429Throttled - 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.
POST/v1/workflows/Chave de API

Create a workflow (API-Key only)

Create a workflow (API-Key only)

Erros

StatusQuando
401Missing/invalid/expired credential
403Authenticated but not permitted
429Throttled - Retry-After header set
400Validation 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.
GET/v1/workflows/{uuid}/Chave de APICLI Auth

Retrieve a workflow

Retrieve a workflow

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório

Erros

StatusQuando
401Missing/invalid/expired credential
403Authenticated but not permitted
429Throttled - Retry-After header set
404Not 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.

PATCH/v1/workflows/{uuid}/Chave de API

Update a workflow (API-Key only)

Update a workflow (API-Key only)

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório

Erros

StatusQuando
401Missing/invalid/expired credential
403Authenticated but not permitted
429Throttled - Retry-After header set
400Validation error
404Not 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/v1/workflows/{uuid}/Chave de API

Delete a workflow (API-Key only)

Delete a workflow (API-Key only)

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório

Erros

StatusQuando
401Missing/invalid/expired credential
403Authenticated but not permitted
429Throttled - Retry-After header set
404Not 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.

POST/v1/workflows/{uuid}/trigger/Chave de APICLI Auth

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

NomeTipoObrigatórioDescrição
uuidstring (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

StatusQuando
400workflow_not_triggerable — o tipo de trigger não é api_trigger, ou o workflow está inativo
400workflow_trigger_payload_invalid — payload não é um objeto JSON ou serializa para > 8 KiB
401Credencial ausente, inválida ou expirada
403workflow_execute_not_allowed — o caller não tem permissão de execução neste workflow; ou o plano não inclui workflows
404UUID desconhecido ou workflow fora da organização do caller
409workflow_frozen — o workflow está congelado (estado de plano/limite)
429Rate-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 receber 403 mesmo 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 id como 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

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"
}