Skip to content
ver .md sin procesar

Automatizaciones

Gestiona flujos de automatización. La creación, edición y borrado requieren API key — los tokens CLI son solo lectura. Sujeto al plan contratado.

GET/v1/workflows/API keyCLI AuthPaginación por número de página

Listar workflows (limitado por plan)

Listado paginado de workflows accesibles al llamante. Devuelve el envelope estándar ({count, next, previous, results}). Admite búsqueda por nombre y filtros de rango de fechas.

Parámetros de consulta

NombreTipoRequeridoDescripción
searchstringOpcionalBúsqueda de subcadena sin distinción de mayúsculas en el nombre del workflow. Máximo 256 caracteres.
start_datestring (YYYY-MM-DD)OpcionalFecha de inicio inclusiva (zona horaria del usuario). También aceptado: date_start, date_from.
end_datestring (YYYY-MM-DD)OpcionalFecha de fin inclusiva, 23:59:59 en la zona horaria del usuario. También aceptado: date_end, date_to.
pageintegerOpcionalNúmero de página (índice base 1). Por defecto: 1.
page_sizeintegerOpcionalElementos por página. Por defecto: 25, máximo: 100. Alias: limit.
offsetintegerOpcionalPaginación por offset (aceptado por retrocompatibilidad).

Respuesta

{
  "count": "integer",
  "next": "string|null",
  "previous": "string|null",
  "results": "array<{ id, name, description, is_active, created_at, updated_at, ... }>"
}

Errores

EstadoCuándo
400Error de validación (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'

Probarlo

Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.

  • Requiere el plan con acceso a workflows.
POST/v1/workflows/API key

Create a workflow (API-Key only)

Create a workflow (API-Key only)

Errores

EstadoCuándo
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'

Probarlo

Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.

  • CLI token is rejected on POST.
GET/v1/workflows/{uuid}/API keyCLI Auth

Retrieve a workflow

Retrieve a workflow

Parámetros de ruta

NombreTipoRequeridoDescripción
uuidstring (uuid)Requerido

Errores

EstadoCuándo
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'

Probarlo

Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.

PATCH/v1/workflows/{uuid}/API key

Update a workflow (API-Key only)

Update a workflow (API-Key only)

Parámetros de ruta

NombreTipoRequeridoDescripción
uuidstring (uuid)Requerido

Errores

EstadoCuándo
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'

Probarlo

Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.

DELETE/v1/workflows/{uuid}/API key

Delete a workflow (API-Key only)

Delete a workflow (API-Key only)

Parámetros de ruta

NombreTipoRequeridoDescripción
uuidstring (uuid)Requerido

Errores

EstadoCuándo
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'

Probarlo

Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.

POST/v1/workflows/{uuid}/trigger/API keyCLI Auth

Disparar un workflow activo api_trigger

Dispara manualmente un workflow cuyo tipo de trigger es api_trigger. La ejecución se encola de forma asíncrona (202 Accepted). Un objeto JSON payload opcional (≤ 8 KiB) queda expuesto a los pasos del workflow como contexto del trigger.

Parámetros de ruta

NombreTipoRequeridoDescripción
uuidstring (uuid)Requerido

Cuerpo de la solicitud

{
  "payload": "object (optional) — free-form JSON object, max 8 KiB when serialized. Exposed to workflow steps as {{trigger.body.*}} variables."
}

Respuesta

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

Errores

EstadoCuándo
400workflow_not_triggerable — el tipo de trigger no es api_trigger, o el workflow está inactivo
400workflow_trigger_payload_invalid — payload no es un objeto JSON o serializa a > 8 KiB
401Credencial ausente, inválida o expirada
403workflow_execute_not_allowed — el caller no tiene permiso de ejecución en este workflow; o el plan no incluye workflows
404UUID desconocido o workflow fuera de la organización del caller
409workflow_frozen — el workflow está congelado (estado de plan/límite)
429Rate-limit alcanzado — respeta el 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"}}'

Probarlo

Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.

  • Gated por plan: organizaciones sin la feature de workflows reciben 403 en todos los endpoints de workflows, incluido trigger.
  • Solo workflows con trigger type api_trigger pueden dispararse vía este endpoint. Otros tipos (scheduled, eventos de form/check-in, commands, …) mantienen sus propias rutas.
  • Los mismos workflows api_trigger también pueden dispararse desde un botón interactivo vía buttons[].callback_workflow (opcionalmente con modal_body cuyos campos enviados llegan como {{trigger.fields.<name>}}).
  • Variables de trigger disponibles para los pasos: {{trigger.source}}, {{trigger.body.*}}, {{trigger.button_id}}, {{trigger.button_value}}, {{trigger.fields.<name>}}, {{trigger.clicked_at}}, {{trigger.user.*}}, {{trigger.triggered_by_user_uuid}}.
  • A diferencia de create/update/delete, trigger acepta tokens CLI con capacidad write — API key o CLI write funcionan.

Workflows

Crea, gestiona, dispara y monitorea workflows automatizados y registros de ejecución.

CLI vs API key: Los tokens CLI son solo lectura para crear, actualizar y eliminar workflows — esas escrituras requieren X-API-KEY. Trigger es la excepción: acepta una API key o un token CLI con capacidad de escritura. Todos los endpoints de workflows están restringidos por plan; las organizaciones sin la función de workflows pueden recibir 403 incluso en lecturas.

Resumen de endpoints

Método Endpoint Descripción
GET /v1/workflows/ Listar todos los workflows
GET /v1/workflows/{uuid}/ Obtener un workflow específico
POST /v1/workflows/ Crear un workflow
PUT /v1/workflows/{uuid}/ Reemplazar un workflow
PATCH /v1/workflows/{uuid}/ Actualizar un workflow
DELETE /v1/workflows/{uuid}/ Eliminar un workflow
POST /v1/workflows/{uuid}/trigger/ Disparar un workflow activo api_trigger
GET /v1/workflows/{uuid}/execution_logs/ Obtener registros de ejecución del workflow
POST /v1/workflows/{uuid}/duplicate/ Duplicar un workflow

GET /v1/workflows/

Devuelve todos los workflows de la organización. Paginado con el envelope estándar { count, next, previous, results }.

Parámetros de consulta

Nombre Tipo Requerido Descripción
is_active boolean No Filtrar por estado activo.
search string No Búsqueda de subcadena sin distinción de mayúsculas sobre el campo name del workflow. Máx. 256 chars. Si excede devuelve 400 search_query_too_long.
start_date string (YYYY-MM-DD) No Filtrar workflows creados desde esta fecha (zona horaria del llamante). También: date_start, date_from.
end_date string (YYYY-MM-DD) No Filtrar workflows creados hasta esta fecha (zona horaria del llamante). También: date_end, date_to. Rangos invertidos devuelven 400 invalid_date_range.
page integer No Número de página (indexado desde 1). Por defecto: 1.
page_size integer No Ítems por página (máx. 100). Por defecto: 25. Alias: limit.
offset integer No Paginación por offset (aceptado por retrocompatibilidad).
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: tu_api_key"

Respuesta (200 OK):

{
  "count": 5,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": "wf-uuid",
      "name": "Incorporación de Nuevos Empleados",
      "is_active": true,
      "trigger_type": "event",
      "created_at": "2026-01-15T00:00:00Z"
    }
  ]
}

Identificador: Cada workflow usa id como identificador — el valor es un UUID (ver Identificadores).


GET /v1/workflows/{uuid}/

Devuelve un workflow específico con configuración completa.

curl -X GET "https://api.dailybot.com/v1/workflows/wf-uuid/" \
  -H "X-API-KEY: tu_api_key"

Respuesta (200 OK):

{
  "uuid": "wf-uuid",
  "name": "Incorporación de Nuevos Empleados",
  "is_active": true,
  "trigger_type": "event",
  "trigger_config": {
    "event": "organization.user_activated"
  },
  "actions": [
    {
      "type": "send_message",
      "target_type": "user",
      "message": "¡Bienvenido al equipo! Aquí está lo que debes hacer primero..."
    }
  ],
  "created_at": "2026-01-15T00:00:00Z"
}

POST /v1/workflows/

Crea un nuevo workflow. Auth: solo API key — los tokens CLI se rechazan en POST.

Parámetros del cuerpo

Nombre Tipo Requerido Descripción
name string Nombre del workflow.
is_active boolean No Si el workflow está activo. Por defecto: true.
trigger_type string Tipo de trigger. Usa api_trigger para workflows disparados vía esta API o botones interactivos (seleccionable en el constructor de automatizaciones como When triggered via API or button). Otros tipos integrados incluyen event, schedule y manual.
trigger_config object Configuración del trigger (depende de trigger_type).
actions array de objetos Lista de acciones a ejecutar.
curl -X POST "https://api.dailybot.com/v1/workflows/" \
  -H "X-API-KEY: tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Notificación de Despliegue",
    "trigger_type": "api_trigger",
    "trigger_config": {},
    "actions": [
      {
        "type": "send_message",
        "target_type": "channel",
        "target_uuid": "channel-uuid",
        "message": "Despliegue completado: {{trigger.body.service}} v{{trigger.body.version}}"
      }
    ]
  }'

Respuesta (201 Created):

{
  "uuid": "wf-new-uuid",
  "name": "Notificación de Despliegue",
  "is_active": true,
  "trigger_type": "api_trigger",
  "created_at": "2026-04-06T10:00:00Z"
}

DELETE /v1/workflows/{uuid}/

Elimina un workflow.

curl -X DELETE "https://api.dailybot.com/v1/workflows/wf-uuid/" \
  -H "X-API-KEY: tu_api_key"

Respuesta (204 No Content)


POST /v1/workflows/{uuid}/trigger/

Dispara manualmente un workflow cuyo tipo de trigger es api_trigger — el trigger diseñado para disparo externo. Los workflows con cualquier otro tipo de trigger (programados, eventos de formulario/check-in, comandos, …) mantienen sus propias rutas de disparo y devuelven 400 workflow_not_triggerable.

Auth: API key o token CLI con capacidad de escritura. Permisos: restricción por plan + membresía de la org; se aplica el permiso de ejecución por workflow.

Cuerpo de la solicitud

El cuerpo es opcional:

{"payload": {"env": "production", "requested_by": "release-bot"}}
Campo Tipo Requerido Descripción
payload object No Objeto JSON libre, máx. 8 KiB al serializar. Expuesto a los pasos del workflow como variables {{trigger.body.*}}.
curl -X POST "https://api.dailybot.com/v1/workflows/wf-uuid/trigger/" \
  -H "X-API-KEY: tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{"payload": {"env": "production"}}'

Respuesta — 202 Accepted (la ejecución se encola, no se ejecuta en línea):

{"detail": "Workflow trigger accepted.", "workflow_uuid": "wf-uuid", "queued": true}

Códigos de error

Status code Cuándo
400 workflow_not_triggerable El tipo de trigger no es api_trigger, o el workflow está inactivo.
400 workflow_trigger_payload_invalid payload no es un objeto o serializa a > 8 KiB.
403 workflow_execute_not_allowed El llamante no tiene permiso de ejecución en este workflow.
409 workflow_frozen El workflow está congelado (estado de plan/límite).
404 UUID desconocido o fuera de la organización del llamante.
401 Credencial ausente, inválida o expirada.
429 Limitado por throttling — respeta el header Retry-After.

Los mismos workflows api_trigger también pueden dispararse desde un botón interactivo de mensaje vía buttons[].callback_workflow (opcionalmente con un modal_body cuyos campos enviados llegan como {{trigger.fields.<name>}}). Consulta Mensajería del bot para los campos de botones.

Disparado vía la API pública, {{trigger.source}} es "api" y las claves de botón/campo son null o vacías.


Variables de trigger

Los pasos del workflow pueden referenciar el contexto de disparo a través del namespace {{trigger.*}}:

Variable Descripción
{{trigger.source}} Cómo se disparó el workflow: api, button_click o modal_submit.
{{trigger.body.*}} Claves del objeto payload opcional de la API (ej. {{trigger.body.env}}).
{{trigger.button_id}} Id de botón generado por el servidor ($btn/<uuid4>) cuando se dispara desde un botón de mensaje.
{{trigger.button_value}} El string value del botón pulsado — úsalo para ramificar cuando varios botones apuntan al mismo workflow.
{{trigger.fields.<name>}} Valores de entrada del modal cuando se dispara vía modal_body + callback_workflow (ej. {{trigger.fields.summary}}).
{{trigger.clicked_at}} Marca de tiempo ISO 8601 del clic o envío del modal.
{{trigger.user.uuid}} UUID del usuario que disparó el workflow (clicador o llamante de la API).
{{trigger.user.full_name}} Nombre completo para mostrar del usuario que dispara.
{{trigger.user.first_name}} Nombre del usuario que dispara.
{{trigger.user.email}} Email del usuario que dispara.
{{trigger.user.role}} Rol: ADMIN_ORG, ADMIN, MANAGER, MEMBER o GUEST.
{{trigger.triggered_by_user_uuid}} UUID del usuario que disparó el workflow (alias de {{trigger.user.uuid}} para rutas de botón/modal).

Recetas

Compón modal_body con callback_workflow en un botón interactivo: el clic abre el modal y, al enviar, los valores de los campos se entregan al workflow como {{trigger.fields.<input.name>}} — sin 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 un incidente:",
    "target_users": ["user-uuid"],
    "buttons": [
      {
        "label": "Reportar",
        "button_type": "interactive",
        "value": "report",
        "callback_workflow": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "modal_body": {
          "title": "Nuevo incidente",
          "blocks": [
            {
              "type": "input",
              "name": "summary",
              "label": "¿Qué pasó?",
              "multiline": true,
              "required": true
            }
          ]
        }
      }
    ]
  }'

El workflow (tipo de trigger api_trigger) puede usar entonces {{trigger.fields.summary}} en cualquier paso — prellenar una respuesta de formulario, componer un mensaje o alimentar un prompt de IA. Un modal con bloques input y sin callback_url ni callback_workflow se rechaza (input_without_callback).

Ramificación por valor — varios botones, un workflow

Apunta varios botones al mismo UUID de workflow con distintos strings value, y ramifica dentro del workflow en {{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": "El despliegue está listo — elige una acción:",
    "target_users": ["user-uuid"],
    "buttons": [
      {
        "label": "Desplegar a staging",
        "button_type": "interactive",
        "value": "staging",
        "callback_workflow": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
      },
      {
        "label": "Desplegar a producción",
        "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 del workflow, un paso condicional en {{trigger.button_value}} enruta staging, production o cancel sin mantener tres definiciones de workflow separadas.

Para el esquema completo de botones (label, modal_body, response y más), consulta Mensajería del bot.


GET /v1/workflows/{uuid}/execution_logs/

Devuelve los registros de ejecución de un workflow específico.

Parámetros de consulta

Nombre Tipo Requerido Descripción
date_start string No Fecha de inicio (AAAA-MM-DD).
date_end string No Fecha de fin (AAAA-MM-DD).
status string No Filtrar por estado: success, failure o pending.
limit integer No Número de resultados. Por defecto: 50.
curl -X GET "https://api.dailybot.com/v1/workflows/wf-uuid/execution_logs/?limit=10" \
  -H "X-API-KEY: tu_api_key"

Respuesta (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 un workflow con un nuevo nombre.

curl -X POST "https://api.dailybot.com/v1/workflows/wf-uuid/duplicate/" \
  -H "X-API-KEY: tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{"name": "Notificación de Despliegue (Copia)"}'

Respuesta (201 Created):

{
  "uuid": "wf-copy-uuid",
  "name": "Notificación de Despliegue (Copia)",
  "is_active": false,
  "created_at": "2026-04-06T10:05:00Z"
}