Confluye
Endpoints

Webhooks

Inbound webhook triggers for workflows via the API.

Endpoints for webhooks under /api/v1/webhooks.

Endpoints

MethodPathDescription
GET/api/v1/webhooksList webhooks
GET/api/v1/webhooks/{id}Get a webhook
POST/api/v1/webhooksPrepare a signed Sentry endpoint (Admin/Owner)

Listing webhooks

GET /api/v1/webhooks returns { webhooks[], links[] }; pass ?workflowId= to filter. Each links entry carries the public invoke URL. GET /api/v1/webhooks/{id} returns a single webhook. Generic webhooks are provisioned when you publish a workflow destination containing a webhook trigger (see Deploying). Production and previews have separate URLs.

Signed Sentry sources

An Admin or Owner can also prepare the endpoint from Manage versions → Add event source → Signed Sentry webhook in the selected workflow destination. Save the Sentry trigger's connection first, then choose the trigger and provide its organization and project slugs.

POST /api/v1/webhooks with provider: "sentry" requires workflowId, organizationSlug, projectSlug, and a workspace Sentry credentialId or signingSecret. To prepare a named destination, also pass executionTargetId and its saved Sentry trigger's nodeId. The new endpoint remains off until that destination is approved and published with the selected connection. Save the returned invokeUrl; only the token digest is retained for later reads.

Sentry invocation uses /api/integrations/sentry/{token} and requires the Sentry HMAC signature. Each destination owns its integration identity and deduplication receipts. Publishing updates the version behind the existing URL; switching off the destination stops ingress. The independent Sentry ingress feature switch must also be enabled.

Triggering a workflow

The public invocation endpoint lives outside /api/v1:

POST https://confluye.run/api/webhooks/<token>

The token is part of the URL — no bearer key is used to invoke it. All HTTP verbs are accepted (GET/POST/PUT/PATCH/DELETE). The payload is the JSON body (or query string for GET), merged with a _webhook object describing the method, query, and headers (sensitive headers like authorization, cookie, and x-api-key are stripped).

Responses

Runs execute inline against a synchronous budget (30s by default):

  • If a Response node captured a reply, its status, headers, and body are returned.
  • If the run pauses on a durable Wait or approval, the endpoint returns 202 { runId, status: "waiting" } and a worker resumes it later.
  • If the budget is exceeded, it degrades to 202 { status: "processing" }.
  • A legacy workflow with no Response node returns { token, run }.

Next steps