Skip to main content
GET
/
workflow-requests
/
{id}
/
listen
Listen to Workflow Execution (SSE)
curl --request GET \
  --url https://app.splox.io/api/v1/workflow-requests/{id}/listen \
  --header 'Authorization: Bearer <token>'
{
  "workflow_request": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "workflow_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "start_node_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "status": "pending",
    "created_at": "2023-11-07T05:31:56Z",
    "user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "billing_user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "parent_node_execution_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "parent_workflow_request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "chat_id": "<string>",
    "payload": {},
    "metadata": {},
    "started_at": "2023-11-07T05:31:56Z",
    "completed_at": "2023-11-07T05:31:56Z"
  },
  "node_execution": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "workflow_request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "node_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "workflow_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "status": "pending",
    "input_data": {},
    "output_data": {},
    "attempt_count": 123,
    "created_at": "2023-11-07T05:31:56Z",
    "completed_at": "2023-11-07T05:31:56Z",
    "failed_at": "2023-11-07T05:31:56Z"
  }
}
Streams real-time execution updates via Server-Sent Events (SSE) as the workflow runs.

Usage

curl -N -H "Authorization: Bearer YOUR_TOKEN" \
  https://app.splox.io/api/v1/workflow-requests/{workflow_request_id}/listen

How It Works

  1. On connection, all existing node executions are sent immediately
  2. Then the stream subscribes to real-time updates via Redis PubSub
  3. Each event contains a workflow_request and/or node_execution update
  4. Keepalive messages (data: keepalive) are sent every 3 seconds
  5. The stream closes when the workflow completes, fails, or stops

Response Format

Standard SSE format — each event is a data: line followed by two newlines:
data: {"workflow_request":{...},"node_execution":{...}}

data: keepalive

data: {"workflow_request":{"id":"...","status":"completed",...}}
Each event payload contains:
{
  "workflow_request": {
    "id": "0199f123-d60e-7ffd-9131-4cc5ab040ee8",
    "status": "in_progress",
    "workflow_version_id": "0199e001-a23b-7c8d-1234-567890abcdef"
  },
  "node_execution": {
    "id": "0199f124-e70f-8gge-2242-5dd6bc151ff9",
    "node_id": "0199e002-b34c-8d9e-2345-678901bcdef0",
    "status": "completed",
    "output_data": { "text": "Here is the result..." }
  }
}

Status Values

Workflow Request:
  • pending — Request received, waiting to start
  • in_progress — Currently executing
  • waiting — Paused, waiting for input (e.g., tool approval)
  • completed — Finished successfully
  • failed — Execution failed
  • stopped — Manually stopped
Node Execution:
  • pending — Queued
  • in_progress — Currently executing
  • completed — Finished successfully
  • failed — Execution failed
  • blocked — Waiting for dependencies
  • skipped — Skipped (conditional branch not taken)
  • stopped — Manually stopped
  • waiting — Paused, waiting for input

Notes

Authentication required: Include Bearer token in Authorization header.
Connection timeout: SSE connections timeout after 30 minutes. Reconnect if needed.

Authorizations

Authorization
string
header
required

API token generated from your Splox account settings. Create tokens at https://app.splox.io/account?tab=settings

Path Parameters

id
string<uuid>
required

Workflow request ID

Response

200 - text/event-stream

SSE stream of execution events. Each event contains a workflow_request and/or node_execution update. Keepalive messages sent every 3 seconds. Connection times out after 30 minutes.

workflow_request
object

Represents a workflow execution request

node_execution
object

Represents the execution state of a single node