Saltar al contenido principal

API de Workflows

Ruta base: /builder/v1/workflows. Misma autenticación y convenciones que la API de Agentes: Authorization: Bearer <token>, atributos en camelCase, fechas ISO 8601 en UTC, envoltura {"data": ..., "meta": ...}.

Modelo de recursos

RecursoDescripción
WorkflowDefinición (nombre, descripción) y estado: draft, published, paused, needs_attention, archived.
GrafoNodos y conexiones del borrador. El catálogo de tipos de nodo se obtiene de GET /workflows/node-types (Nodos y componentes).
ReleaseCada publicación crea una versión numerada con su manifiesto; deployment indica cuál está activa.
ConnectionCanal de entrada o salida: webhook, WhatsApp, entrada o salida interna. Un webhook tiene URL, token y eventos.
RunEjecución con estado (queued, running, paused, completed, failed, cancelled), origen (manual, webhook, scheduled, channel), trace, events, activity y analytics.
Thread / recordConversación con sus mensajes (thread) y registro de ejecución con sus intercambios (record).
TemplateWorkflow prearmado que se instancia como uno propio.

Operaciones

Definición y ciclo de vida

Método y rutaQué hace
GET /workflows, POST /workflowsListar y crear.
GET, PATCH, DELETE /workflows/{id}Leer, editar el borrador, eliminar. GET /workflows/{id}/delete-impact indica qué se afecta antes de borrar (agentes que lo usan como herramienta).
POST /workflows/{id}/validateValida el grafo sin publicar: nodos sin conexión, canales incompletos.
POST /workflows/{id}/publishPublica: crea una release y la activa.
POST /workflows/{id}/pause, /resumePausar y reanudar la versión publicada.
POST /workflows/{id}/archive, /restoreArchivar y restaurar. POST /workflows/batch/archive archiva varios.
POST /workflows/{id}/cloneCopia el borrador como un flujo nuevo.
GET /workflows/{id}/export, POST /workflows/importExportar e importar la definición (para mover flujos entre Clientes o versionarlos).
POST /workflows/{id}/previewEjecuta el borrador con una entrada de prueba sin registrarlo como ejecución.

Versiones

Método y rutaQué hace
GET /workflows/{id}/releasesVersiones publicadas.
GET /workflows/{id}/releases/{releaseId}, /manifest, /runtime-statusDetalle de una versión, su manifiesto y si está cargada en el runtime.
GET /workflows/{id}/deployments, POST .../{deploymentId}/activateVer qué versión está activa y volver a una anterior.

Canales y webhooks

Método y rutaQué hace
GET, PUT /workflows/{id}/connectionsLeer y configurar los canales (webhook, WhatsApp, internos).
GET, POST /workflows/{id}/webhooks, GET /.../{webhookId}Webhooks de entrada del flujo.
POST /workflows/{id}/webhooks/{webhookId}/regenerate-tokenNuevo token; el anterior deja de valer.
GET /workflows/{id}/webhooks/{webhookId}/events, /events/{eventId}Llamadas recibidas por el webhook y su resultado.
GET /workflows/{id}/webhook-credentials, POST .../inbound/regenerateCredenciales del webhook de entrada.
GET, POST, DELETE /workflows/{id}/webhook-credentials/outbound[/{id}]Credenciales que el flujo usa al llamar a sistemas externos (nodo Solicitud HTTP).

Ejecuciones

Método y rutaQué hace
GET /workflows/{id}/runs, GET /workflows/runs/summariesListar ejecuciones (filtros por origen, periodo y resultado) y resúmenes por flujo.
GET /workflows/{id}/runs/{runId}Detalle: estado, origen, payload de entrada y salida.
GET .../runs/{runId}/trace, /events, /activity, /analyticsTraza (nodos, herramientas, modelos, errores), eventos, línea de tiempo y métricas de esa ejecución.
POST .../runs/{runId}/cancel, /stopCancelar en cola o detener en curso.
POST .../runs/{runId}/resolve-waitResolver una Revisión humana: aprobar o rechazar los campos y continuar.

Conversaciones y registros

Método y rutaQué hace
GET /workflows/{id}/threads, GET .../threads/{threadId}, GET .../messagesConversaciones del flujo y sus mensajes. POST /workflows/threads/batch lee varias.
GET, POST, DELETE .../threads/{threadId}/operator-state[/release]Tomar y soltar el control de una conversación (operador humano), donde la instalación lo permite.
GET /workflows/{id}/records, /records/{recordId}, /records/{recordId}/exchangesRegistros de ejecución (lo que ves en la pestaña Registros) y sus intercambios.
GET .../records/filters, /records/participantsValores disponibles para filtrar y lista de participantes.
POST .../records/threads/{threadId}/nudgeReenviar un recordatorio al participante de una conversación.

Métricas, prueba y plantillas

Método y rutaQué hace
GET /workflows/{id}/analytics, /analytics/summary, /analytics/runsLo que muestra la pestaña Resumen: ejecuciones, duración mediana y p95, tokens, costo del mes, ejecuciones por día.
GET /workflows/{id}/activityActividad reciente del flujo.
GET, POST /workflows/{id}/test-agentEl agente de prueba interno de Probar flujo.
GET, POST /workflows/{id}/teams, /teams/{teamId}Equipos privados del flujo.
GET /workflows/templates, /templates/{templateId}, POST .../instantiatePlantillas y crear un flujo a partir de una.
POST /workflows/expression/previewEvaluar una expresión de Condición contra un JSON de ejemplo antes de guardarla.

Disparar un workflow publicado por webhook

curl -X POST "<URL del webhook>" \
-H "Authorization: Bearer <token del canal>" \
-H "Content-Type: application/json" \
-d '{"text": "..."}'

La respuesta trae la salida del nodo Enviar resultado y el identificador de la ejecución. Con Modo asíncrono en el canal, la respuesta es 202 con el identificador y el resultado se consulta en GET /workflows/{id}/runs/{runId}.

Errores

HTTPcodeCuándo
400invalid_bodyGrafo o configuración inválidos; el mensaje nombra el nodo.
404workflow_not_foundNo existe, no es tuyo o fue eliminado.
409unpublished_changesLa operación requiere publicar primero.
422channel_incompleteUn canal no está configurado; revisa la pestaña Canales.

Rutas y esquemas exactos en el OpenAPI de tu instalación: /builder/v1/openapi.json.