Ir al contenido

Referencia de API

Flows y ejecuciones

Endpoints de Flow Studio: gestionar flujos, carpetas, plantillas, la Bóveda, variables globales, dispararlos y revisar sus ejecuciones. Todos cuelgan de /workspaces/:workspaceId/flows y requieren autenticación.

MétodoRutaDescripción
GET/flowsListar flujos
GET/flows/:flowIdObtener flujo
POST/flowsCrear flujo
PATCH/flows/:flowIdActualizar flujo
DELETE/flows/:flowIdEliminar flujo
GET/flows/:flowId/validateValidar flujo
POST/flows/:flowId/triggerDisparar manualmente
POST/flows/:flowId/regenerate-tokenRegenerar token de webhook
MétodoRutaDescripción
GET/flows/foldersListar carpetas
POST/flows/foldersCrear carpeta
PATCH/flows/folders/:folderIdActualizar carpeta (renombrar o mover)
DELETE/flows/folders/:folderIdEliminar carpeta
MétodoRutaDescripción
GET/flows/templatesListar plantillas
GET/flows/templates/:templateIdObtener plantilla
POST/flows/templatesCrear plantilla
PATCH/flows/templates/:templateIdActualizar plantilla
DELETE/flows/templates/:templateIdEliminar plantilla
POST/flows/templates/:templateId/useUsar plantilla (incrementa su contador de uso)

Valores cifrados (API keys, tokens de terceros) que se referencian en un flujo como {{boveda.nombre}} sin exponerlos. Solo el OWNER del workspace, o un miembro con la capability boveda:manage, puede crear/editar/borrar — el GET queda abierto a todo el workspace para que el selector de variables pueda listar los nombres.

MétodoRutaDescripción
GET/flows/secretsListar secrets (valor enmascarado)
POST/flows/secretsCrear secret
PATCH/flows/secrets/:secretIdActualizar secret
DELETE/flows/secrets/:secretIdEliminar secret

El par “público” de la Bóveda: valor en texto plano, visible y editable por cualquier miembro del workspace (no requiere ninguna capability especial). Se usan en un flujo como {{globalVars.nombre}}.

MétodoRutaDescripción
GET/flows/global-varsListar variables globales
POST/flows/global-varsCrear variable global
PATCH/flows/global-vars/:varIdActualizar variable global
DELETE/flows/global-vars/:varIdEliminar variable global
MétodoRutaDescripción
GET/flows/executionsListar todas las ejecuciones del workspace
GET/flows/:flowId/executionsListar ejecuciones de un flujo concreto
GET/flows/executions/:executionIdDetalle de una ejecución
POST/flows/executions/:executionId/cancelCancelar una ejecución en curso

POST /workspaces/:workspaceId/flows
CampoTipoRequeridoDescripción
namestringNombre del flujo.
descriptionstringNoDescripción.
nodesarrayNoNodos del flujo (formato de React Flow). Si vienen, se validan igual que en el editor.
edgesarrayNoConexiones entre nodos.
variablesarrayNoVariables propias del flujo (name, value, type, scope).
settingsobjectNotriggerType, triggerConfig, timeout, maxConcurrent, environment. Si se omite triggerType, se infiere del nodo trigger.
tagsarray de stringNoEtiquetas para organizar la biblioteca.
folderIdstring | nullNoCarpeta donde se ubica el flujo.
PATCH /workspaces/:workspaceId/flows/:flowId

Todos los campos son opcionales; solo se actualiza lo que envíes. Además de los campos de creación, acepta:

CampoTipoDescripción
isActivebooleanActiva o pausa el flujo.
expectedVersionnumberVersión que tenías cargada al editar. Si no coincide con la actual, la API responde 409 en vez de sobrescribir los cambios de otro usuario (optimistic locking).
GET /workspaces/:workspaceId/flows/:flowId/validate

Corre las mismas reglas de estructura que bloquean guardar/activar en el editor (nodos huérfanos, trigger faltante, campos requeridos sin llenar, ciclos no permitidos, etc.), sin modificar el flujo.

POST /workspaces/:workspaceId/flows/:flowId/trigger

Crea una ejecución y corre el flujo en segundo plano — la respuesta llega de inmediato con el executionId, sin esperar a que termine. Consulta el resultado con detalle de ejecución. Requiere la capability flows:execute.

CampoTipoRequeridoDescripción
triggerDataobjectNoDatos disponibles en el flujo como {{triggerData.<campo>}}.
startNodeIdstringNoEjecutar desde un nodo concreto en vez de desde el trigger (“Ejecutar desde aquí” del editor).
POST /workspaces/:workspaceId/flows/:flowId/regenerate-token

Invalida el token de webhook actual y genera uno nuevo. Solo aplica a flujos con triggerType: "webhook" — en cualquier otro caso responde 400. El token anterior deja de funcionar de inmediato.

POST /workspaces/:workspaceId/flows/folders
CampoTipoRequeridoDescripción
namestringNombre de la carpeta.
parentIdstringNoCarpeta padre, para anidar.
POST /workspaces/:workspaceId/flows/secrets

Requiere ser OWNER del workspace o tener la capability boveda:manage. El valor viaja en texto plano solo en esta petición: se guarda cifrado (AES-256-GCM) y ninguna respuesta posterior lo vuelve a exponer completo — solo un preview con los últimos 4 caracteres.

CampoTipoRequeridoDescripción
namestringNombre único en el workspace. Se referencia como {{boveda.name}}.
valuestringValor a cifrar (API key, token, etc.).
descriptionstringNoDescripción.
flowIdstringNoSi se envía, el secret solo queda disponible dentro de ese flujo; si se omite, es global al workspace.
POST /workspaces/:workspaceId/flows/global-vars

A diferencia de la Bóveda, cualquier miembro del workspace puede crear/editar/borrar variables globales: valor en texto plano, pensado para datos no sensibles compartidos entre flujos (un ID de catálogo, una URL base, un nombre de sucursal).

CampoTipoRequeridoDescripción
namestringIdentificador válido (letras, números, guion bajo). Se referencia como {{globalVars.name}}.
valuestringValor de la variable.
descriptionstringNoDescripción.
GET /workspaces/:workspaceId/flows/:flowId/executions
ParámetroTipoDescripción
statusstringrunning, completed, failed o cancelled.
triggerstringmanual, webhook, schedule, ai_tool, simulation, crm_event o voice_call.
page / limitnumberVer paginación.
GET /workspaces/:workspaceId/flows/executions/:executionId

Incluye steps: el registro de cada nodo por el que pasó la ejecución, con su input/output y logs — lo que pinta el panel de depuración del editor.

POST /workspaces/:workspaceId/flows/executions/:executionId/cancel

Solo se puede cancelar una ejecución en estado running; en cualquier otro estado responde 400.

Un flujo con trigger webhook se dispara con su token, sin API key. Ver la referencia completa en Webhooks.

POST /flows/run?token=WEBHOOK_TOKEN
ParámetroTipoDescripción
tokenstringToken del webhook del flujo (webhookToken).

El cuerpo (JSON) queda disponible en el flujo como {{triggerData.<campo>}}.