Public API Reference

This customer-facing reference covers the public route families that external teams can call with documented credentials: project API keys, webhook ingest secrets, public form URLs, and signed file URLs. It deliberately leaves browser-only dashboard workflows in the product guides instead of presenting them as integration endpoints.

Reference policy

Use this page when you need to know whether a route is public, which credential it expects, and whether the TypeScript SDK or CLI wraps it today. Use raw HTTP examples when a route is public but not wrapped by a first-party client yet.

Available through

Public route families

Project and API keys

Project-scoped metadata, API-key lifecycle, usage context, and Business+ audit log reads.

RouteAuthUseClient coverage
GET/v1/project
admin project keyRead the authenticated project and quota detail.SDK projects.getCurrent(); CLI projects get
PATCH/v1/project
admin project keyUpdate project metadata and supported project settings.SDK projects.update(); raw HTTP
GET/v1/project/api-keys
admin project keyList project API-key metadata.Raw HTTP
POST/v1/project/api-keys
admin project keyCreate a project API key and receive its secret once.Raw HTTP
GET/v1/project/api-keys/{keyId}
admin project keyRead non-secret metadata for one project API key.Raw HTTP
POST/v1/project/api-keys/{keyId}/revoke
admin project keyRevoke a project API key.Raw HTTP
POST/v1/project/api-keys/{keyId}/rotate
admin project keyRotate a project API key and receive the replacement secret once.Raw HTTP
GET/v1/project/audit-logs
admin project key, Business+List control-plane audit entries.Raw HTTP
GET/v1/project/audit-logs/{id}
admin project key, Business+Read one control-plane audit entry.Raw HTTP

Webhooks

Webhook lifecycle, provider templates, destinations, routing, transforms, schedules, metrics, and security.

RouteAuthUseClient coverage
GET/v1/webhooks
project keyList webhooks with cursor pagination.SDK webhooks.list(); CLI webhooks list
POST/v1/webhooks
project keyCreate a webhook and receive one-time secrets.SDK webhooks.create(); CLI webhooks create
GET/v1/webhooks/http-packs
project keyList provider-aware inbound packs.Raw HTTP
GET/v1/webhooks/templates
project keyList webhook templates.SDK templates.list(); CLI templates list
GET/v1/webhooks/{id}
project keyRead a webhook and quota detail.SDK webhooks.get(); CLI webhooks get
PATCH/v1/webhooks/{id}
project keyUpdate webhook configuration.Raw HTTP
POST/v1/webhooks/{id}/pause
project keyPause public ingest for a webhook.SDK webhooks.pause(); CLI webhooks pause
POST/v1/webhooks/{id}/resume
project keyResume a paused webhook.SDK webhooks.resume(); CLI webhooks resume
POST/v1/webhooks/{id}/archive
project keyArchive a webhook.SDK webhooks.archive(); CLI webhooks archive
POST/v1/webhooks/{id}/restore
project keyRestore an archived webhook.SDK webhooks.restore(); CLI webhooks restore
POST/v1/webhooks/{id}/destroy
project keyDestroy an archived webhook.SDK webhooks.destroy(); CLI webhooks destroy
POST/v1/webhooks/{id}/rotate-ingest-secret
project keyRotate the ingest secret and receive the replacement once.SDK webhooks.rotateIngestSecret(); CLI webhooks rotate-ingest-secret
POST/v1/webhooks/{id}/rotate-signing-secret
project keyRotate the signing secret and receive the replacement once.SDK webhooks.rotateSigningSecret(); CLI webhooks rotate-signing-secret
GET/v1/webhooks/{id}/secret-versions
project keyList non-secret version metadata for webhook secrets.SDK webhooks.listSecretVersions(); CLI webhooks secret-versions
POST/v1/webhooks/{id}/test-delivery
project keyRun a synchronous test delivery against the default destination.Raw HTTP
GET/v1/webhooks/{id}/destinations
project keyList webhook destinations.Raw HTTP
POST/v1/webhooks/{id}/destinations
project keyCreate a named destination.Raw HTTP
PATCH/v1/webhooks/{id}/destinations/{destinationId}
project keyUpdate a destination.Raw HTTP
DELETE/v1/webhooks/{id}/destinations/{destinationId}
project keyDelete a non-default destination.Raw HTTP
GET/v1/webhooks/{id}/routing
project keyRead route-to-one rules.Raw HTTP
PUT/v1/webhooks/{id}/routing
project keyReplace route-to-one rules.Raw HTTP
GET/v1/webhooks/{id}/transform
project keyRead the saved payload transform.Raw HTTP
PUT/v1/webhooks/{id}/transform
project keyReplace or clear the saved payload transform.Raw HTTP
GET/v1/webhooks/{id}/schedules
project keyList schedules for one webhook.SDK schedules.list(); CLI schedules list
POST/v1/webhooks/{id}/schedules
project key, Starter+Create a recurring schedule.SDK schedules.create(); CLI schedules create
DELETE/v1/webhooks/{id}/schedules/{scheduleId}
project keyDelete a schedule.SDK schedules.delete(); CLI schedules delete
POST/v1/webhooks/{id}/schedules/{scheduleId}/pause
project keyPause a schedule.SDK schedules.pause(); CLI schedules pause
POST/v1/webhooks/{id}/schedules/{scheduleId}/resume
project keyResume a schedule.SDK schedules.resume(); CLI schedules resume
GET/v1/webhooks/{id}/deliveries
project keyList deliveries for one webhook.Raw HTTP
GET/v1/webhooks/{id}/metrics
project keyRead webhook delivery metrics for a time window.Raw HTTP
GET/v1/webhooks/{id}/backlog
project keyRead current and historical backlog shape.Raw HTTP
GET/v1/webhooks/{id}/email-allowlist
project keyList email sender allowlist entries.Raw HTTP
POST/v1/webhooks/{id}/email-allowlist
project key, Starter+Create an email sender allowlist entry.Raw HTTP
DELETE/v1/webhooks/{id}/email-allowlist/{entryId}
project key, Starter+Delete an email sender allowlist entry.Raw HTTP

Ingest, forms, and files

Public source channels and file-download routes that produce or support delivery history.

RouteAuthUseClient coverage
POST/v1/ingest/{publicId}
webhook ingest secretPublish an HTTP payload into one webhook.SDK ingest helpers; CLI ingest send
GET/v1/form/{publicId}
unguessable public IDRender a minimal HTML form page.Browser or raw HTTP
POST/v1/form/{publicId}
unguessable public IDSubmit a browser form into one webhook.Browser or raw HTTP
OPTIONS/v1/form/{publicId}
noneReturn form-ingest CORS preflight headers.Browser
GET/v1/files/{signedToken}
signed tokenDownload a file through a temporary signed URL.Browser or raw HTTP
GET/v1/webhooks/{webhookId}/deliveries/{deliveryId}/files/{index}
project keyDownload a retained delivery file through an authenticated route.Raw HTTP

Deliveries, replay, and DLQ

Delivery inspection, replay, async bulk operations, dead-letter recovery, and usage.

RouteAuthUseClient coverage
GET/v1/deliveries
project keyList project deliveries with filters and cursor pagination.SDK deliveries.list(); CLI deliveries list
POST/v1/deliveries/bulk-replay
project key, Starter+Create an async bulk replay job over a frozen delivery search.Raw HTTP
GET/v1/deliveries/{id}
project keyRead one delivery and its attempts.SDK deliveries.get(); CLI deliveries get
POST/v1/deliveries/{id}/replay
project keyReplay one retained delivery.SDK deliveries.replay(); CLI deliveries replay
GET/v1/deliveries/{id}/replay-jobs
project keyList replay jobs for one source delivery.Raw HTTP
GET/v1/replay-jobs/{id}
project keyRead one replay job.SDK replayJobs.get(); CLI replay-jobs get
GET/v1/bulk-operations/{id}
project keyRead one bulk replay or bulk recovery job.Raw HTTP
GET/v1/dlq
project keyList dead-letter entries.SDK dlq.list(); CLI dlq list
GET/v1/dlq/export
project keyExport dead-letter entries with retained source payload snapshots.SDK dlq.export(); CLI dlq export
POST/v1/dlq/bulk-re-drive
project key, Starter+Create an async bulk DLQ recovery job.Raw HTTP
GET/v1/dlq/{id}
project keyRead one dead-letter entry.SDK dlq.get(); CLI dlq get
POST/v1/dlq/{id}/re-drive
project keyCreate a fresh replay delivery from one DLQ entry.SDK dlq.redrive(); CLI dlq redrive
GET/v1/usage
project keyRead project usage rollups.SDK usage.get(); CLI usage show

Event drains

Project-scoped delivery lifecycle streaming sinks. Dashboard-first, not wrapped by first-party clients.

RouteAuthUseClient coverage
GET/v1/app/event-drains
project keyList event drains for the authenticated project.Raw HTTP
POST/v1/app/event-drains
project key, Pro+Create an event drain, subject to tier drain limits.Raw HTTP
GET/v1/app/event-drains/{drainId}
project keyRead one event drain.Raw HTTP
PATCH/v1/app/event-drains/{drainId}
project key, Pro+Update one event drain.Raw HTTP
POST/v1/app/event-drains/{drainId}/pause
project keyPause one event drain.Raw HTTP
POST/v1/app/event-drains/{drainId}/resume
project key, Pro+Resume one event drain and reset its consecutive-failure counter.Raw HTTP
DELETE/v1/app/event-drains/{drainId}
project keyDelete one event drain.Raw HTTP

Operator alerting

Project-scoped alert channels, rules, webhook-backed alert delivery, incidents, and failure clusters.

RouteAuthUseClient coverage
GET/v1/project/operator-webhooks
admin project keyList webhook-backed operator notification endpoints.Raw HTTP
POST/v1/project/operator-webhooks
admin project key, Pro+Create a webhook-backed operator notification endpoint.Raw HTTP
GET/v1/project/operator-webhooks/{id}
admin project keyRead one operator notification endpoint.Raw HTTP
PATCH/v1/project/operator-webhooks/{id}
admin project key, Pro+Update one operator notification endpoint.Raw HTTP
POST/v1/project/operator-webhooks/{id}/pause
admin project keyPause an operator notification endpoint.Raw HTTP
POST/v1/project/operator-webhooks/{id}/resume
admin project key, Pro+Resume an operator notification endpoint.Raw HTTP
POST/v1/project/operator-webhooks/{id}/archive
admin project keyArchive an operator notification endpoint.Raw HTTP
POST/v1/project/operator-webhooks/{id}/restore
admin project key, Pro+Restore an archived operator notification endpoint.Raw HTTP
POST/v1/project/operator-webhooks/{id}/rotate-signing-secret
admin project key, Pro+Rotate an operator notification endpoint signing secret.Raw HTTP
GET/v1/project/operator-webhooks/{id}/secret-versions
admin project keyList non-secret signing-secret version metadata.Raw HTTP
GET/v1/project/operator-webhooks/{id}/dispatches
admin project keyList dispatch history for one operator notification endpoint.Raw HTTP
GET/v1/project/alert-channels
admin project keyList alert channels.Raw HTTP
POST/v1/project/alert-channels
admin project key, Pro+Create an alert channel.Raw HTTP
GET/v1/project/alert-channels/{id}
admin project keyRead one alert channel.Raw HTTP
PATCH/v1/project/alert-channels/{id}
admin project key, Pro+Update one alert channel.Raw HTTP
GET/v1/project/alert-channels/{id}/dispatches
admin project keyList dispatch history for one alert channel.Raw HTTP
GET/v1/project/alert-rules
admin project keyList fixed alert rules.Raw HTTP
GET/v1/project/alert-rules/{family}
admin project keyRead one fixed alert rule.Raw HTTP
PATCH/v1/project/alert-rules/{family}
admin project key, Pro+Update one fixed alert rule.Raw HTTP
GET/v1/project/operator-failure-clusters
admin project keyList recent delivery and DLQ failure clusters.Raw HTTP
GET/v1/project/operator-incidents
admin project keyList operator incidents.Raw HTTP
GET/v1/project/operator-incidents/{id}
admin project keyRead one operator incident with dispatch history.Raw HTTP
POST/v1/project/operator-incidents/{id}/mute
admin project keyMute one operator incident.Raw HTTP
POST/v1/project/operator-incidents/{id}/unmute
admin project keyUnmute one operator incident.Raw HTTP
POST/v1/project/operator-incidents/{id}/resolve
admin project keyResolve one operator incident.Raw HTTP
POST/v1/project/operator-incidents/{id}/reopen
admin project keyReopen one operator incident.Raw HTTP

Common mistakes

  • Treating dashboard-only product workflows as integration endpoints.
  • Assuming the SDK or CLI wraps every public route. Use the client coverage column before choosing an implementation path.
  • Publishing raw secrets in examples, screenshots, logs, or issue reports.
  • Using a write key for routes that require an admin project key.

Was this page helpful?