Menu

Code examples

Replace YOUR_API_KEY, YOUR_WORKFLOW_SLUG (or use workflow_id instead), and adjust payloads as needed. Example URLs use https://app.flowpulse.xyz as the origin.

cURL

Success:

curl -X POST "https://app.flowpulse.xyz/api/v1/ingest/run-success" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_slug": "YOUR_WORKFLOW_SLUG", "ended_at": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}'

Failure:

curl -X POST "https://app.flowpulse.xyz/api/v1/ingest/run-failure" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_slug": "YOUR_WORKFLOW_SLUG", "error_message": "Something went wrong", "ended_at": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}'

Node.js

const res = await fetch("https://app.flowpulse.xyz/api/v1/ingest/run-success", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    workflow_slug: "YOUR_WORKFLOW_SLUG",
    ended_at: new Date().toISOString(),
  }),
});

Python

import requests

requests.post(
    "https://app.flowpulse.xyz/api/v1/ingest/run-success",
    headers={"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json={"workflow_slug": "YOUR_WORKFLOW_SLUG", "ended_at": "2026-04-06T12:00:00.000Z"},
)

Using workflow_id

For long-lived integrations, resolve IDs from GET /api/v1/workflows (with the same API key) or copy them from the FlowPulse UI, and send workflow_id instead of workflow_slug.