Skip to content

Workflow Notifications via SSE

Akram El Assas edited this page Aug 24, 2026 · 19 revisions

Table of Contents

Introduction

Wexflow allows clients to subscribe to real-time notifications via Server-Sent Events (SSE) for workflow job status updates. This enables your application to receive a push notification when a workflow job finishes or stops, without polling the API repeatedly.

You can subscribe to a Server-Sent Events (SSE) endpoint that notifies your client when a workflow job finishes or stops.

Prerequisites

SSE is available in the .NET 9.0+ versions of Wexflow:

  • wexflow-x.x-windows-netcore.zip
  • wexflow-x.x-linux-netcore.zip
  • wexflow-x.x-macos-netcore.zip

Ensure you are using one of these distributions. SSE is not available in the .NET Framework 4.8 version.

How It Works

  1. You start a workflow using the REST API.
  2. You receive a jobId in the response.
  3. You subscribe to the SSE endpoint using that workflowId and jobId.
  4. Wexflow will push a notification to your client when the job finishes or stops.
  5. The SSE connection is automatically closed after sending the final event.

Steps to Use SSE

1. Start a Workflow

Use the REST API to start a workflow and receive the jobId:

POST /api/v1/start?w={workflowId}
Authorization: Bearer <JWT_TOKEN>

For example:

POST http://localhost:8000/api/v1/start?w=41

2. Connect to the SSE Endpoint

Connect to the following endpoint using the returned jobId:

GET /api/v1/sse/{workflowId}/{jobId}
Authorization: Bearer <JWT_TOKEN>
Accept: text/event-stream

For example:

GET http://localhost:8000/api/v1/sse/41/66aae8f4-e3ab-4fdc-8db2-a0a7692d8906

The server will keep the connection open until the workflow job ends.

Example Event Payload

Once the workflow finishes or stops, you will receive an event like:

{
  "workflowId": 41,
  "jobId": "66aae8f4-e3ab-4fdc-8db2-a0a7692d8906",
  "status": "Done",
  "name": "Workflow_Wait",
  "description": "Workflow_Wait"
}

To test SSE, try running a workflow like Workflow_Wait with a 10-second delay.

Statuses

Here are the possible statuses sent by the SSE event:

Status Description
Pending Job is queued and waiting to start
Running Job is currently in progress
Done Job completed successfully
Failed Job ended with an error
Warning Job completed with warnings
Disabled Job or workflow is disabled
Stopped Job was manually stopped
Rejected Job was rejected or not accepted

Summary

  • The SSE event returns JSON with:
    { workflowId, jobId, status, name, description }
  • Connection closes automatically when the workflow job ends.
  • Always include a valid JWT Bearer token in the request headers.
  • Useful for real-time job monitoring or triggering actions upon workflow completion.

Sample SSE Clients

Here are SSE client examples in different languages:

You can find the source code for all these SSE clients in the samples/clients/sse directory of the main Wexflow repository.

These examples serve as practical starting points to integrate Wexflow Push Notifications (SSE) into your own applications regardless of the tech stack you're using.

  1. Install Guide
  2. Migration Guide to v10.0
  3. HTTPS/SSL
  4. Screenshots
  5. Docker
  6. Configuration Guide
    1. Wexflow Server
    2. Wexflow.xml
    3. Admin Panel
    4. Authentication
  7. Persistence Providers
  8. Getting Started
  9. Android App
  10. Local Variables
  11. Global Variables
  12. REST Variables
  13. Functions
  14. Cron Scheduling
  15. Command Line Interface (CLI)
  16. REST API Reference
    1. Introduction
    2. Authentication
    3. Sample Clients
      1. C# Client
      2. PowerShell Client
      3. JavaScript Client
      4. PHP Client
      5. Python Client
      6. Go Client
      7. Rust Client
      8. Ruby Client
      9. Java Client
      10. C++ Client
    4. Security Considerations
    5. Swagger
    6. Workflow Notifications via SSE
      1. C# SSE Client
      2. PowerShell SSE Client
      3. JavaScript SSE Client
      4. PHP SSE Client
      5. Python SSE Client
      6. Go SSE Client
      7. Rust SSE Client
      8. Ruby SSE Client
      9. Java SSE Client
      10. C++ SSE Client
    7. Endpoints
  17. Samples
    1. Sequential workflows
    2. Execution graph
    3. Flowchart workflows
      1. If
      2. While
      3. Switch
    4. Approval workflows
      1. Simple approval workflow
      2. OnRejected workflow event
      3. YouTube approval workflow
      4. Form submission approval workflow
    5. Workflow events
  18. Logging
  19. Custom Tasks
    1. Introduction
    2. General
      1. Creating a Custom Task
      2. Wexflow Task Class Example
      3. Task Status
      4. Settings
      5. Loading Files
      6. Loading Entities
      7. Need A Starting Point?
    3. Installing Your Custom Task in Wexflow
      1. .NET Framework 4.8 (Legacy Version)
      2. .NET 8.0+ (Stable Version)
      3. Referenced Assemblies
      4. Updating a Custom Task
      5. Using Your Custom Task
    4. Suspend/Resume
    5. Logging
    6. Files
    7. Entities
    8. Shared Memory
    9. Designer Integration
      1. Registering the Task
      2. Adding Settings
    10. How to Debug a Custom Task?
  20. Built-in Tasks
    1. File system tasks
    2. Encryption tasks
    3. Compression tasks
    4. Iso tasks
    5. Speech tasks
    6. Hashing tasks
    7. Process tasks
    8. Network tasks
    9. XML tasks
    10. SQL tasks
    11. WMI tasks
    12. Image tasks
    13. Audio and video tasks
    14. Email tasks
    15. Workflow tasks
    16. Social media tasks
    17. Waitable tasks
    18. Reporting tasks
    19. Web tasks
    20. Script tasks
    21. JSON and YAML tasks
    22. Entities tasks
    23. Flowchart tasks
    24. Approval tasks
    25. Notification tasks
    26. SMS tasks
  21. Run from Source
  22. Fork, Customize, and Sync

Clone this wiki locally