Skip to content

Managing Flows

Audience: Everyone · Tags: flow, manage, webhook, archive

Purpose. Find your flows, see their webhook URLs, rotate a leaked secret, and retire flows you no longer need — all workspace-scoped, so you only ever see flows that belong to your workspaces.

Listing your flows

curl "https://api.snaplink.cloudsolutionaccelerators.com/api/v1/flows?workspaceId=ws_92a1c4f0e7b3" \
  -H "Authorization: Bearer $TOKEN"
{ "ok": true, "data": { "flows": [
  { "id": "flow_1a2b3c4d5e6f", "name": "New lead to Slack", "status": "active", "activeVersionId": "ver_00002", "...": "..." }
] } }

By default this excludes archived flows. Add includeArchived=true to see everything:

curl "https://api.snaplink.cloudsolutionaccelerators.com/api/v1/flows?workspaceId=ws_92a1c4f0e7b3&includeArchived=true" \
  -H "Authorization: Bearer $TOKEN"

Each flow's status is one of draft (created, never promoted), active (has a promoted version and will run), or archived (retired — see Activating & Disabling Flows for exactly what determines whether a flow runs).

Viewing a flow's webhook

Every flow gets a unique, secret webhook URL — the address that starts it. Fetch (or lazily create, if this is the first time) it with:

curl https://api.snaplink.cloudsolutionaccelerators.com/api/v1/flows/flow_1a2b3c4d5e6f/webhook \
  -H "Authorization: Bearer $TOKEN"
{ "ok": true, "data": {
  "flowId": "flow_1a2b3c4d5e6f",
  "secret": "5f3a9c1e7b2d4f6a8c0e1b3d5f7a9c1e7b2d4f6a",
  "path": "/api/v1/webhooks/flow_1a2b3c4d5e6f/5f3a9c1e7b2d4f6a8c0e1b3d5f7a9c1e7b2d4f6a"
} }

🔒 Never share or commit this URL. It is the entire authorization mechanism for the trigger — anyone who has it can fire your flow. Don't paste it into public issue trackers, chat channels outside your team, or client-side code. If it leaks, rotate it (below) instead of trying to "un-share" it.

Rotating a webhook secret

If a webhook URL has leaked, or you're doing routine credential hygiene, rotate the secret. The old secret keeps working for a grace window (default in the request below is 24 hours if you omit graceSeconds) so you have time to update whatever is calling it, without downtime.

curl -X POST https://api.snaplink.cloudsolutionaccelerators.com/api/v1/flows/flow_1a2b3c4d5e6f/webhook/rotate \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"graceSeconds": 3600}'
{ "ok": true, "data": {
  "flowId": "flow_1a2b3c4d5e6f",
  "secret": "b2c4e6a8f0d2b4c6e8a0f2d4b6c8e0a2f4d6b8c0",
  "secretVersion": 2,
  "path": "/api/v1/webhooks/flow_1a2b3c4d5e6f/b2c4e6a8f0d2b4c6e8a0f2d4b6c8e0a2f4d6b8c0",
  "previousSecretExpiresAt": "2026-07-02T15:10:00.000Z"
} }

Update anything that calls the old URL before previousSecretExpiresAt passes — after that, it stops accepting requests.

Archiving a flow

Archiving retires a flow permanently — it stops running and can't be promoted or edited further, but its history (versions, runs, logs) is kept for audit.

curl -X POST https://api.snaplink.cloudsolutionaccelerators.com/api/v1/flows/flow_1a2b3c4d5e6f/archive \
  -H "Authorization: Bearer $TOKEN"
{ "ok": true, "data": { "id": "flow_1a2b3c4d5e6f", "status": "archived", "archivedAt": "2026-07-02T14:20:00.000Z", "...": "..." } }

Archiving is one-directional today — there's no unarchive endpoint. If you need the flow again, build a new one from the same definition (copy it from GET /flows/:id/versions).

Best practices

  • Name flows by outcome so the list stays scannable as it grows.
  • Archive flows you're done with instead of leaving inactive drafts lying around — it keeps GET /flows (without includeArchived) showing only what's actually relevant.
  • Rotate a webhook secret the moment you suspect it's been exposed; don't wait.

FAQ

Can two people edit the same flow's draft at once? There's no locking — the last PUT /drafts/:id wins. Coordinate with your team on who's editing what. Is there a "restore from archive"? Not yet — see the note above.

If something goes wrong

If a flow you expect to be running isn't firing, check its status and webhook URL here first, then see Flow not running.


Related: Activating & Disabling Flows · Creating Flows · Editing Flows