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.