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.
If a workflow is documented as dashboard-only, use the dashboard. Do not build integrations against browser implementation details or undocumented routes.
Available through
Available through
This reference is limited to customer-facing routes. Browser-only dashboard flows are documented as product workflows, not as API endpoints.
Public API
PreferredUse project API keys for webhook management, delivery operations, and usage; admin keys are required for alerts, audit logs, and project settings.
Raw HTTP
AvailableUse cURL or your own HTTP client for routes not yet wrapped by first-party clients.
TypeScript SDK
AvailableCovers core resources and helpers. Check SDK coverage before assuming a route is wrapped.
CLI
AvailableBest for terminal automation, delivery operations, schedules, DLQ, and public ingest sends.
Public route families
Project and API keys
Project-scoped metadata, API-key lifecycle, usage context, and Business+ audit log reads.
| Route | Auth | Use | Client coverage |
|---|---|---|---|
GET /v1/project | admin project key | Read the authenticated project and quota detail. | SDK projects.getCurrent(); CLI projects get |
PATCH /v1/project | admin project key | Update project metadata and supported project settings. | SDK projects.update(); raw HTTP |
GET /v1/project/api-keys | admin project key | List project API-key metadata. | Raw HTTP |
POST /v1/project/api-keys | admin project key | Create a project API key and receive its secret once. | Raw HTTP |
GET /v1/project/api-keys/{keyId} | admin project key | Read non-secret metadata for one project API key. | Raw HTTP |
POST /v1/project/api-keys/{keyId}/revoke | admin project key | Revoke a project API key. | Raw HTTP |
POST /v1/project/api-keys/{keyId}/rotate | admin project key | Rotate 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.
| Route | Auth | Use | Client coverage |
|---|---|---|---|
GET /v1/webhooks | project key | List webhooks with cursor pagination. | SDK webhooks.list(); CLI webhooks list |
POST /v1/webhooks | project key | Create a webhook and receive one-time secrets. | SDK webhooks.create(); CLI webhooks create |
GET /v1/webhooks/http-packs | project key | List provider-aware inbound packs. | Raw HTTP |
GET /v1/webhooks/templates | project key | List webhook templates. | SDK templates.list(); CLI templates list |
GET /v1/webhooks/{id} | project key | Read a webhook and quota detail. | SDK webhooks.get(); CLI webhooks get |
PATCH /v1/webhooks/{id} | project key | Update webhook configuration. | Raw HTTP |
POST /v1/webhooks/{id}/pause | project key | Pause public ingest for a webhook. | SDK webhooks.pause(); CLI webhooks pause |
POST /v1/webhooks/{id}/resume | project key | Resume a paused webhook. | SDK webhooks.resume(); CLI webhooks resume |
POST /v1/webhooks/{id}/archive | project key | Archive a webhook. | SDK webhooks.archive(); CLI webhooks archive |
POST /v1/webhooks/{id}/restore | project key | Restore an archived webhook. | SDK webhooks.restore(); CLI webhooks restore |
POST /v1/webhooks/{id}/destroy | project key | Destroy an archived webhook. | SDK webhooks.destroy(); CLI webhooks destroy |
POST /v1/webhooks/{id}/rotate-ingest-secret | project key | Rotate the ingest secret and receive the replacement once. | SDK webhooks.rotateIngestSecret(); CLI webhooks rotate-ingest-secret |
POST /v1/webhooks/{id}/rotate-signing-secret | project key | Rotate the signing secret and receive the replacement once. | SDK webhooks.rotateSigningSecret(); CLI webhooks rotate-signing-secret |
GET /v1/webhooks/{id}/secret-versions | project key | List non-secret version metadata for webhook secrets. | SDK webhooks.listSecretVersions(); CLI webhooks secret-versions |
POST /v1/webhooks/{id}/test-delivery | project key | Run a synchronous test delivery against the default destination. | Raw HTTP |
GET /v1/webhooks/{id}/destinations | project key | List webhook destinations. | Raw HTTP |
POST /v1/webhooks/{id}/destinations | project key | Create a named destination. | Raw HTTP |
PATCH /v1/webhooks/{id}/destinations/{destinationId} | project key | Update a destination. | Raw HTTP |
DELETE /v1/webhooks/{id}/destinations/{destinationId} | project key | Delete a non-default destination. | Raw HTTP |
GET /v1/webhooks/{id}/routing | project key | Read route-to-one rules. | Raw HTTP |
PUT /v1/webhooks/{id}/routing | project key | Replace route-to-one rules. | Raw HTTP |
GET /v1/webhooks/{id}/transform | project key | Read the saved payload transform. | Raw HTTP |
PUT /v1/webhooks/{id}/transform | project key | Replace or clear the saved payload transform. | Raw HTTP |
GET /v1/webhooks/{id}/schedules | project key | List 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 key | Delete a schedule. | SDK schedules.delete(); CLI schedules delete |
POST /v1/webhooks/{id}/schedules/{scheduleId}/pause | project key | Pause a schedule. | SDK schedules.pause(); CLI schedules pause |
POST /v1/webhooks/{id}/schedules/{scheduleId}/resume | project key | Resume a schedule. | SDK schedules.resume(); CLI schedules resume |
GET /v1/webhooks/{id}/deliveries | project key | List deliveries for one webhook. | Raw HTTP |
GET /v1/webhooks/{id}/metrics | project key | Read webhook delivery metrics for a time window. | Raw HTTP |
GET /v1/webhooks/{id}/backlog | project key | Read current and historical backlog shape. | Raw HTTP |
GET /v1/webhooks/{id}/email-allowlist | project key | List 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.
| Route | Auth | Use | Client coverage |
|---|---|---|---|
POST /v1/ingest/{publicId} | webhook ingest secret | Publish an HTTP payload into one webhook. | SDK ingest helpers; CLI ingest send |
GET /v1/form/{publicId} | unguessable public ID | Render a minimal HTML form page. | Browser or raw HTTP |
POST /v1/form/{publicId} | unguessable public ID | Submit a browser form into one webhook. | Browser or raw HTTP |
OPTIONS /v1/form/{publicId} | none | Return form-ingest CORS preflight headers. | Browser |
GET /v1/files/{signedToken} | signed token | Download a file through a temporary signed URL. | Browser or raw HTTP |
GET /v1/webhooks/{webhookId}/deliveries/{deliveryId}/files/{index} | project key | Download 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.
| Route | Auth | Use | Client coverage |
|---|---|---|---|
GET /v1/deliveries | project key | List 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 key | Read one delivery and its attempts. | SDK deliveries.get(); CLI deliveries get |
POST /v1/deliveries/{id}/replay | project key | Replay one retained delivery. | SDK deliveries.replay(); CLI deliveries replay |
GET /v1/deliveries/{id}/replay-jobs | project key | List replay jobs for one source delivery. | Raw HTTP |
GET /v1/replay-jobs/{id} | project key | Read one replay job. | SDK replayJobs.get(); CLI replay-jobs get |
GET /v1/bulk-operations/{id} | project key | Read one bulk replay or bulk recovery job. | Raw HTTP |
GET /v1/dlq | project key | List dead-letter entries. | SDK dlq.list(); CLI dlq list |
GET /v1/dlq/export | project key | Export 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 key | Read one dead-letter entry. | SDK dlq.get(); CLI dlq get |
POST /v1/dlq/{id}/re-drive | project key | Create a fresh replay delivery from one DLQ entry. | SDK dlq.redrive(); CLI dlq redrive |
GET /v1/usage | project key | Read 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.
| Route | Auth | Use | Client coverage |
|---|---|---|---|
GET /v1/app/event-drains | project key | List 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 key | Read 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 key | Pause 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 key | Delete one event drain. | Raw HTTP |
Operator alerting
Project-scoped alert channels, rules, webhook-backed alert delivery, incidents, and failure clusters.
| Route | Auth | Use | Client coverage |
|---|---|---|---|
GET /v1/project/operator-webhooks | admin project key | List 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 key | Read 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 key | Pause 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 key | Archive 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 key | List non-secret signing-secret version metadata. | Raw HTTP |
GET /v1/project/operator-webhooks/{id}/dispatches | admin project key | List dispatch history for one operator notification endpoint. | Raw HTTP |
GET /v1/project/alert-channels | admin project key | List 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 key | Read 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 key | List dispatch history for one alert channel. | Raw HTTP |
GET /v1/project/alert-rules | admin project key | List fixed alert rules. | Raw HTTP |
GET /v1/project/alert-rules/{family} | admin project key | Read 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 key | List recent delivery and DLQ failure clusters. | Raw HTTP |
GET /v1/project/operator-incidents | admin project key | List operator incidents. | Raw HTTP |
GET /v1/project/operator-incidents/{id} | admin project key | Read one operator incident with dispatch history. | Raw HTTP |
POST /v1/project/operator-incidents/{id}/mute | admin project key | Mute one operator incident. | Raw HTTP |
POST /v1/project/operator-incidents/{id}/unmute | admin project key | Unmute one operator incident. | Raw HTTP |
POST /v1/project/operator-incidents/{id}/resolve | admin project key | Resolve one operator incident. | Raw HTTP |
POST /v1/project/operator-incidents/{id}/reopen | admin project key | Reopen 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.