Product
Pipe Studio & eventpipe
A pipeline is a versioned handler attached to your webhook endpoint. You define triggers, ship TypeScript (and optional declarative pipe JSON), publish immutable versions, and run test executions against the live graph—mirroring what the dashboard does.
- List and create pipelines per endpoint; each pipeline has a linear version history.
- Publish bundles with validated `settings.pipe` (v3) and code artifacts; production webhooks invoke the enabled pipeline’s current version.
- Execute simulates the published graph with a JSON payload—ideal before or after shipping.
Tier limits apply to pipelines per endpoint, execution timeout, code boxes per pipe, and HTTP steps—see Pricing. Programmatic access uses the same auth as the dashboard (session cookie or API key).
Start here
60-second quickstart
Three steps from zero to your first event visible in the inspector. Links use your current origin: http://localhost:3000.
All capture URLs and snippets on this page use example ID … (generated uniquely on each visit) so they do not collide with your real endpoints.
Send a test webhook
POST JSON to the capture URL using example ID …. It is only for these docs; use your own ID in production.
Open the inspector
View headers, body, and timeline in real time. The demo link uses the same example ID ….
Generating a unique example ID…
/api/webhook/{id}Capture webhook
Captures any incoming request for payload inspection.
Auth: Not required. If "Require webhook key" is enabled, send x-webhook-key (or ?key=).
Request
Generating a unique example ID…
Response
{ "success": true, "webhookId": "uuid" }/api/webhook/{id}?_dashboard=1Dashboard read
Returns endpoint history for UI/dashboard.
Auth: Session or API key when the inspector is locked (owner or approved collaborator).
Request
Generating a unique example ID…
Response
{ "endpoint": {...}, "events": [...] }/api/webhook/registerRegister endpoint (auth)
Registers a webhook ID for an authenticated user.
Auth: Session cookie or API key (Bearer / X-Api-Key). Respects tier limits and ownership.
Request
Generating a unique example ID…
Response
{ "success": true }/api/webhook/register-guestRegister endpoint (guest)
Registers an endpoint for guest mode and issues a signed guest_id.
Auth: Not required. Free tier limits apply via signed cookie.
Request
Generating a unique example ID…
Response
{ "success": true }/api/accountAccount summary
Tier, policy, and usage summary (endpoints + monthly requests).
Auth: Optional. Session, API key, or unauthenticated guest/free context.
Request
Generating a unique example ID…
Response
{ "tier": "FREE", "policy": {...} }/api/account/endpointsList owned endpoints
Lists owner endpoints with privacy and metadata.
Auth: Session or API key.
Request
Generating a unique example ID…
Response
{ "endpoints": [...] }/api/account/endpoints/{id}Delete endpoint
Deletes an owned endpoint and associated data.
Auth: Session or API key. Owner only.
Request
Generating a unique example ID…
Response
{ "success": true }/api/account/endpoints/{id}/privacyUpdate endpoint privacy
Sets inspector lock and/or "Require webhook key". Send inspectorPrivate and/or requireCaptureKey; returns accessKey when capture key is enabled.
Auth: Session or API key. Starter+ for these features.
Request
Generating a unique example ID…
Response
{ "success": true, "inspectorPrivate": true, "requireCaptureKey": true, "accessKey": "hex" }/api/account/endpoints/{id}/studio/shareInvite studio collaborator
Generates a collaborator invite link with role (viewer or editor). Does not require inspector_private. Enforces collaboratorsPerEndpoint tier cap.
Auth: Session or API key. Owner only. Starter+.
Request
Generating a unique example ID…
Response
{ "success": true, "inviteUrl": "https://.../share/token", "expiresAt": "..." }/api/account/endpoints/{id}/my-accessGet my access role
Returns the authenticated user's collaborator role on a given endpoint (viewer, editor, or null if no access).
Auth: Session or API key.
Request
Generating a unique example ID…
Response
{ "role": "viewer" | "editor" | null }/api/account/endpoints/{id}/accessList / revoke collaborators
GET returns collaborators with role, granted_via and granted_at. DELETE removes a collaborator by userId.
Auth: Session or API key. Owner only.
Request
Generating a unique example ID…
Response
{ "success": true }/api/account/access-requestsAccess requests inbox
Pending access requests for the owner’s endpoints.
Auth: Session or API key.
Request
Generating a unique example ID…
Response
{ "requests": [...] }/api/account/access-requests/{requestId}Approve/reject request
Approves or rejects an access request (approve | reject).
Auth: Session or API key. Endpoint owner only.
Request
Generating a unique example ID…
Response
{ "success": true }/api/account/pipelinesList pipelines
Returns pipelines owned by the authenticated user (GET /api/account/pipelines), optionally filtered by endpointId.
Auth: Session or API key.
Request
Generating a unique example ID…
Response
{ "pipelines": [ { "id", "endpoint_id", "name", "status", "current_version_id" } ] }/api/account/pipelinesCreate pipeline
Creates a new pipeline on an endpoint you own; seeds an initial version when successful.
Auth: Session or API key. Tier must allow pipeline automation (see limits).
Request
Generating a unique example ID…
Response
{ "success": true, "pipelineId": "uuid", "version": 1 }/api/account/pipelines/{pipelineId}Get pipeline + versions
Returns the pipeline row and all versions (includes settings.pipe when stored).
Auth: Session or API key. Owner only.
Request
Generating a unique example ID…
Response
{ "pipeline": {...}, "versions": [ { "version", "settings", "build_status" } ] }/api/account/pipelines/{pipelineId}/versionsPublish pipeline version
Creates a new version with bundleCode and settings (pipe definition validated server-side).
Auth: Session or API key. Owner only.
Request
Generating a unique example ID…
Response
{ "success": true, "version": { "version": 2 } }/api/account/pipelines/{pipelineId}/executeExecute pipeline (test)
Runs the current live version with a synthetic event body—same runtime as production, scoped to your account.
Auth: Session or API key. Owner only.
Request
Generating a unique example ID…
Response
{ "success": true, "result": { "status", "output", "logs", "durationMs" } }Standard errors
| Status | When it happens | Example |
|---|---|---|
| 400 | Invalid body or missing required field | { "error": "webhookId is required" } |
| 401 | Unauthenticated user on protected routes | { "error": "Unauthorized" } |
| 402 | Tier limit or feature not available | { "error": "Private endpoints are available from STARTER tier" } |
| 403 | No permission on owner resource | { "error": "Forbidden" } |
| 404 | Resource not found | { "error": "Endpoint not found" } |
| 409 | Ownership conflict or webhook ID already taken | { "error": "This webhook ID is already owned by another user" } |
| 410 | Share link expired | { "error": "Share link expired" } |
Integration snippets
Uses the same example ID as the quickstart: ….
Generating a unique example ID…