Skip to content

API and webhooks

What other systems can call, and what the platform calls. There is no public REST API with API keys yet; the endpoints under /api/v1 serve signed-in users of the application (session cookie) and respect their role.

1. Outgoing webhooks (workflows)

A Webhook step in a workflow posts JSON to your HTTPS endpoint.

{
  "event": "workflow.webhook",
  "workflow_id": "…",
  "run_id": "…",
  "step_id": "…",
  "sent_at": "2026-10-18T09:30:00.000Z",
  "contact": { "id": "…", "email": "…", "first_name": "…", "last_name": "…", "tags": [], "lifecycle": "lead", "score": 0, "custom": {} },
  "trigger": { "type": "form_submitted", "data": {} }
}

Headers:

HeaderValue
x-rampline-signaturet=<unix seconds>,v1=<hex HMAC SHA-256>
x-rampline-delivery<run id>:<step id>, the same on retries

Verify: compute HMAC SHA-256 over <t>.<raw body> with the workspace's webhook secret (shown in the webhook step) and compare with v1 in constant time. Reject timestamps older than five minutes.

Delivery: 10 seconds timeout, redirects are not followed, any status of 300 or above counts as a failure and is retried with backoff before the step is marked failed. Addresses in private networks are refused in production.

2. Incoming webhooks

EndpointSenderPurpose
POST /api/webhooks/stripe/<account id>StripeCheckout completed or expired, refunds, subscription updates, renewals, failed renewals. Signature checked with the signing secret from Settings → Payments; events are stored once and processed by the worker with retries.
POST /api/webhooks/email/<provider>/<token>Resend, PostmarkBounces and complaints, added to the suppression list. The address with its token is shown in Settings → Email sending.

3. Endpoints for signed-in users

EndpointPermissionReturns
GET /api/v1/contacts/exportexports, contactsCSV of all contacts (formula injection neutralised)
GET /api/v1/contacts/<id>/exportexports, contactsOne person's records as JSON (access and portability requests), audited
GET /api/v1/funnels/<id>/exportfunnelsFunnel JSON with its pages and inlined global sections, no contacts
GET /api/v1/media?kind=imagefunnelsMedia library items
POST /api/v1/mediafunnels (write)Upload a file (type detected from its bytes, size limited)

4. Public endpoints used by published pages

These serve visitors of published pages and are rate limited per network. The workspace, fields and prices always come from the stored publication, never from the request.

EndpointPurpose
POST /api/public/formsForm submission (honeypot field website)
POST /api/public/eventsPage view and timing beacon
POST /api/public/checkout/quoteLive totals for the checkout block
POST /api/public/checkout/startStarts a checkout session
GET /api/public/checkout/returnReturn from the payment page
POST /api/public/offerOne-click upsell or downsell
GET /api/public/order-summaryOrder summary block on thank-you pages

5. Operations endpoints

EndpointPurpose
GET /api/healthDatabase, migrations and worker heartbeat; 200 when healthy
GET /api/tls/ask?domain=Asked by Caddy before issuing a certificate: 200 only for verified domains
GET /api/license/revocationsThe licensor's signed revocation list

6. Not built yet

API keys for outside systems, a documented REST API for contacts, deals and orders, and Zapier-style triggers. Until then, workflow webhooks cover sending data out, and CSV import and export cover bulk transfer.