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 you need cURL-level examples, non-TypeScript language guidance, or browser/raw surfaces such as form ingest.
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 browser/raw surfaces such as form ingest and for any public route outside package scope.
TypeScript SDK
AvailableCovers project APIs, webhook operations, Automations, delivery operations, event drains, files, operator alerting, and ingest helpers.
CLI
AvailableBest for terminal automation across webhook, Automations, delivery, DLQ, schedule, event-drain, operator-alerting, file, and ingest workflows.
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(); CLI projects update |
GET /v1/project/api-keys | admin project key | List project API-key metadata. | SDK apiKeys.list(); CLI api-keys list |
POST /v1/project/api-keys | admin project key | Create a project API key and receive its secret once. | SDK apiKeys.create(); CLI api-keys create |
GET /v1/project/api-keys/{keyId} | admin project key | Read non-secret metadata for one project API key. | SDK apiKeys.get(); CLI api-keys get |
POST /v1/project/api-keys/{keyId}/revoke | admin project key | Revoke a project API key. | SDK apiKeys.revoke(); CLI api-keys revoke |
POST /v1/project/api-keys/{keyId}/rotate | admin project key | Rotate a project API key and receive the replacement secret once. | SDK apiKeys.rotate(); CLI api-keys rotate |
GET /v1/project/audit-logs | admin project key, Business+ | List control-plane audit entries. | SDK auditLogs.list(); CLI audit-logs list |
GET /v1/project/audit-logs/{id} | admin project key, Business+ | Read one control-plane audit entry. | SDK auditLogs.get(); CLI audit-logs get |
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. | SDK httpPacks.list(); CLI http-packs list |
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. | SDK webhooks.update(); CLI webhooks update |
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. | SDK webhooks.testDelivery(); CLI webhooks test-delivery |
GET /v1/webhooks/{id}/destinations | project key | List webhook destinations. | SDK webhooks.listDestinations(); CLI webhooks destinations list |
POST /v1/webhooks/{id}/destinations | project key | Create a named destination. | SDK webhooks.createDestination(); CLI webhooks destinations create |
PATCH /v1/webhooks/{id}/destinations/{destinationId} | project key | Update a destination. | SDK webhooks.updateDestination(); CLI webhooks destinations update |
DELETE /v1/webhooks/{id}/destinations/{destinationId} | project key | Delete a non-default destination. | SDK webhooks.deleteDestination(); CLI webhooks destinations delete |
GET /v1/webhooks/{id}/routing | project key | Read route-to-one rules. | SDK webhooks.getRouting(); CLI webhooks routing get |
PUT /v1/webhooks/{id}/routing | project key | Replace route-to-one rules. | SDK webhooks.updateRouting(); CLI webhooks routing update |
GET /v1/webhooks/{id}/transform | project key | Read the saved payload transform. | SDK webhooks.getTransform(); CLI webhooks transform get |
PUT /v1/webhooks/{id}/transform | project key | Replace or clear the saved payload transform. | SDK webhooks.updateTransform(); CLI webhooks transform update |
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. | SDK webhooks.listDeliveries(); CLI webhooks deliveries |
GET /v1/webhooks/{id}/metrics | project key | Read webhook delivery metrics for a time window. | SDK webhooks.metrics(); CLI webhooks metrics |
GET /v1/webhooks/{id}/backlog | project key | Read current and historical backlog shape. | SDK webhooks.backlog(); CLI webhooks backlog |
GET /v1/webhooks/{id}/email-allowlist | project key | List email sender allowlist entries. | SDK webhooks.listEmailAllowlist(); CLI webhooks email-allowlist list |
POST /v1/webhooks/{id}/email-allowlist | project key, Starter+ | Create an email sender allowlist entry. | SDK webhooks.createEmailAllowlistEntry(); CLI webhooks email-allowlist add |
DELETE /v1/webhooks/{id}/email-allowlist/{entryId} | project key, Starter+ | Delete an email sender allowlist entry. | SDK webhooks.deleteEmailAllowlistEntry(); CLI webhooks email-allowlist delete |
Automations
Versioned Code Mode transform automations, run history, templates, quotas, metering, and Enterprise exact-host egress controls.
| Route | Auth | Use | Client coverage |
|---|---|---|---|
GET /v1/automations | project key, Starter+ | List transform automations for the authenticated project. | SDK automations.list(); CLI automations list |
POST /v1/automations | admin project key, Starter+ | Create a transform automation shell. | SDK automations.create(); CLI automations create |
GET /v1/automations/{automationId} | project key, Starter+ | Read one automation, versions, and binding state. | SDK automations.get(); CLI automations get |
PATCH /v1/automations/{automationId} | admin project key, Starter+ | Update automation metadata and runtime limits. | SDK automations.update(); CLI automations update |
POST /v1/automations/{automationId}/pause | admin project key, Starter+ | Pause an automation without deleting versions. | SDK automations.pause(); CLI automations pause |
POST /v1/automations/{automationId}/resume | admin project key, Starter+ | Resume a paused automation. | SDK automations.resume(); CLI automations resume |
POST /v1/automations/{automationId}/archive | admin project key, Starter+ | Archive an automation and disable active webhook bindings. | SDK automations.archive(); CLI automations archive |
GET /v1/automations/{automationId}/versions | project key, Starter+ | List uploaded automation versions. | SDK automations.listVersions(); CLI automations versions list |
POST /v1/automations/{automationId}/versions | admin project key, Starter+ | Upload a new Code Mode version bundle. | SDK automations.createVersion(); CLI automations versions create |
POST /v1/automations/{automationId}/versions/{versionId}/activate | admin project key, Starter+ | Activate an uploaded automation version. | SDK automations.activateVersion(); CLI automations activate |
POST /v1/automations/{automationId}/test | admin project key, Starter+ | Run a recorded test invocation against sample input. | SDK automations.test(); CLI automations test |
GET /v1/webhooks/{id}/transform-automation | project key, Starter+ | Read the Automation transform binding for one webhook. | SDK automations.getWebhookBinding(); Raw HTTP |
PUT /v1/webhooks/{id}/transform-automation | admin project key, Starter+ | Bind a transform automation to a webhook. | SDK automations.bindWebhook(); CLI automations bind |
DELETE /v1/webhooks/{id}/transform-automation | admin project key, Starter+ | Remove the transform automation binding from a webhook. | SDK automations.unbindWebhook(); CLI automations unbind |
GET /v1/automation-runs | project key, Starter+ | List automation runs with webhook and automation filters. | SDK automationRuns.list(); CLI automations runs list |
GET /v1/automation-runs/export | project key, Starter+ | Export bounded run history as JSONL or CSV. | SDK automationRuns.export(); CLI automations runs export |
GET /v1/automation-runs/{runId} | project key, Starter+ | Read one automation run. | SDK automationRuns.get(); CLI automations runs get |
GET /v1/automation-runs/{runId}/logs | project key, Starter+ | List bounded logs emitted by one run. | SDK automationRuns.getLogs(); CLI automations logs |
GET /v1/automation-runs/{runId}/egress-events | project key, Starter+ | List outbound egress audit events for one run. | SDK automationRuns.getEgressEvents(); CLI automations runs egress-events |
GET /v1/automation-quotas | project key, Starter+ | Read project-level automation quota state. | SDK automationQuotas.getProject(); CLI automations quotas |
GET /v1/webhooks/{id}/automation-quotas | project key, Starter+ | Read webhook-scoped automation quota state. | SDK automationQuotas.getWebhook(); CLI automations quotas --webhook |
GET /v1/automation-billing-usage | project key, Starter+ | Read provider-neutral raw automation metering. | SDK automationBillingUsage.get(); CLI automations usage |
GET /v1/automation-templates | project key, Starter+ | List starter Code Mode transform templates. | SDK automationTemplates.list(); CLI automations templates list |
GET /v1/automation-templates/{templateId} | project key, Starter+ | Read one starter automation template. | SDK automationTemplates.get(); CLI automations templates get |
POST /v1/automation-templates/{templateId}/create | admin project key, Starter+ | Create an automation and first version from a template. | SDK automationTemplates.create(); CLI automations templates create |
PUT /v1/automations/{automationId}/egress-policy | admin project key, Enterprise | Attach an Enterprise egress policy to an automation. | SDK automations.attachEgressPolicy(); CLI automations egress attach |
DELETE /v1/automations/{automationId}/egress-policy | admin project key, Enterprise | Detach an Enterprise egress policy from an automation. | SDK automations.detachEgressPolicy(); CLI automations egress detach |
GET /v1/automation-egress-policies | admin project key, Enterprise | List Enterprise exact-host egress policies. | SDK automationEgressPolicies.list(); CLI automations egress list |
POST /v1/automation-egress-policies | admin project key, Enterprise | Create an Enterprise exact-host egress policy. | SDK automationEgressPolicies.create(); CLI automations egress create |
GET /v1/automation-egress-policies/{policyId} | admin project key, Enterprise | Read one Enterprise egress policy. | SDK automationEgressPolicies.get(); CLI automations egress get |
PATCH /v1/automation-egress-policies/{policyId} | admin project key, Enterprise | Update one Enterprise egress policy. | SDK automationEgressPolicies.update(); CLI automations egress update |
DELETE /v1/automation-egress-policies/{policyId} | admin project key, Enterprise | Soft-delete one Enterprise egress policy. | SDK automationEgressPolicies.delete(); CLI automations egress delete |
GET /v1/automation-egress-policies/{policyId}/credentials | admin project key, Enterprise | List non-secret credential metadata for one egress policy. | SDK automationEgressPolicies.listCredentials(); CLI automations egress credentials list |
POST /v1/automation-egress-policies/{policyId}/credentials | admin project key, Enterprise | Create an egress credential and receive no plaintext back. | SDK automationEgressPolicies.createCredential(); CLI automations egress credentials create |
POST /v1/automation-egress-policies/{policyId}/credentials/{credentialId}/rotate | admin project key, Enterprise | Rotate an egress credential secret. | SDK automationEgressPolicies.rotateCredential(); CLI automations egress credentials rotate |
DELETE /v1/automation-egress-policies/{policyId}/credentials/{credentialId} | admin project key, Enterprise | Retire one egress credential. | SDK automationEgressPolicies.deleteCredential(); CLI automations egress credentials delete |
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. | SDK files.downloadSignedUrl(); CLI files download |
GET /v1/webhooks/{webhookId}/deliveries/{deliveryId}/files/{index} | project key | Download a retained delivery file through an authenticated route. | SDK files.downloadDeliveryFile(); CLI files download-delivery |
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. | SDK deliveries.bulkReplay(); CLI deliveries bulk-replay |
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. | SDK deliveries.listReplayJobs(); CLI deliveries replay-jobs |
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. | SDK bulkOperations.get(); CLI bulk-operations get |
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. | SDK dlq.bulkRedrive(); CLI dlq bulk-redrive |
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. These /v1/app paths use project API key auth for automation.
| Route | Auth | Use | Client coverage |
|---|---|---|---|
GET /v1/app/event-drains | project key | List event drains for the authenticated project. | SDK eventDrains.list(); CLI event-drains list |
POST /v1/app/event-drains | project key, Pro+ | Create an event drain, subject to tier drain limits. | SDK eventDrains.create(); CLI event-drains create |
GET /v1/app/event-drains/{drainId} | project key | Read one event drain. | SDK eventDrains.get(); CLI event-drains get |
PATCH /v1/app/event-drains/{drainId} | project key, Pro+ | Update one event drain. | SDK eventDrains.update(); CLI event-drains update |
POST /v1/app/event-drains/{drainId}/pause | project key | Pause one event drain. | SDK eventDrains.pause(); CLI event-drains pause |
POST /v1/app/event-drains/{drainId}/resume | project key, Pro+ | Resume one event drain and reset its consecutive-failure counter. | SDK eventDrains.resume(); CLI event-drains resume |
DELETE /v1/app/event-drains/{drainId} | project key | Delete one event drain. | SDK eventDrains.delete(); CLI event-drains delete |
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. | SDK operatorWebhooks.list(); CLI operator-webhooks list |
POST /v1/project/operator-webhooks | admin project key, Pro+ | Create a webhook-backed operator notification endpoint. | SDK operatorWebhooks.create(); CLI operator-webhooks create |
GET /v1/project/operator-webhooks/{id} | admin project key | Read one operator notification endpoint. | SDK operatorWebhooks.get(); CLI operator-webhooks get |
PATCH /v1/project/operator-webhooks/{id} | admin project key, Pro+ | Update one operator notification endpoint. | SDK operatorWebhooks.update(); CLI operator-webhooks update |
POST /v1/project/operator-webhooks/{id}/pause | admin project key | Pause an operator notification endpoint. | SDK operatorWebhooks.pause(); CLI operator-webhooks pause |
POST /v1/project/operator-webhooks/{id}/resume | admin project key, Pro+ | Resume an operator notification endpoint. | SDK operatorWebhooks.resume(); CLI operator-webhooks resume |
POST /v1/project/operator-webhooks/{id}/archive | admin project key | Archive an operator notification endpoint. | SDK operatorWebhooks.archive(); CLI operator-webhooks archive |
POST /v1/project/operator-webhooks/{id}/restore | admin project key, Pro+ | Restore an archived operator notification endpoint. | SDK operatorWebhooks.restore(); CLI operator-webhooks restore |
POST /v1/project/operator-webhooks/{id}/rotate-signing-secret | admin project key, Pro+ | Rotate an operator notification endpoint signing secret. | SDK operatorWebhooks.rotateSigningSecret(); CLI operator-webhooks rotate-signing-secret |
GET /v1/project/operator-webhooks/{id}/secret-versions | admin project key | List non-secret signing-secret version metadata. | SDK operatorWebhooks.listSecretVersions(); CLI operator-webhooks secret-versions |
GET /v1/project/operator-webhooks/{id}/dispatches | admin project key | List dispatch history for one operator notification endpoint. | SDK operatorWebhooks.listDispatches(); CLI operator-webhooks dispatches |
GET /v1/project/alert-channels | admin project key | List alert channels. | SDK alertChannels.list(); CLI alert-channels list |
POST /v1/project/alert-channels | admin project key, Pro+ | Create an alert channel. | SDK alertChannels.create(); CLI alert-channels create |
GET /v1/project/alert-channels/{id} | admin project key | Read one alert channel. | SDK alertChannels.get(); CLI alert-channels get |
PATCH /v1/project/alert-channels/{id} | admin project key, Pro+ | Update one alert channel. | SDK alertChannels.update(); CLI alert-channels update |
GET /v1/project/alert-channels/{id}/dispatches | admin project key | List dispatch history for one alert channel. | SDK alertChannels.listDispatches(); CLI alert-channels dispatches |
GET /v1/project/alert-rules | admin project key | List fixed alert rules. | SDK alertRules.list(); CLI alert-rules list |
GET /v1/project/alert-rules/{family} | admin project key | Read one fixed alert rule. | SDK alertRules.get(); CLI alert-rules get |
PATCH /v1/project/alert-rules/{family} | admin project key, Pro+ | Update one fixed alert rule. | SDK alertRules.update(); CLI alert-rules update |
GET /v1/project/operator-failure-clusters | admin project key | List recent delivery and DLQ failure clusters. | SDK operatorIncidents.listFailureClusters(); CLI operator-incidents failure-clusters |
GET /v1/project/operator-incidents | admin project key | List operator incidents. | SDK operatorIncidents.list(); CLI operator-incidents list |
GET /v1/project/operator-incidents/{id} | admin project key | Read one operator incident with dispatch history. | SDK operatorIncidents.get(); CLI operator-incidents get |
POST /v1/project/operator-incidents/{id}/mute | admin project key | Mute one operator incident. | SDK operatorIncidents.mute(); CLI operator-incidents mute |
POST /v1/project/operator-incidents/{id}/unmute | admin project key | Unmute one operator incident. | SDK operatorIncidents.unmute(); CLI operator-incidents unmute |
POST /v1/project/operator-incidents/{id}/resolve | admin project key | Resolve one operator incident. | SDK operatorIncidents.resolve(); CLI operator-incidents resolve |
POST /v1/project/operator-incidents/{id}/reopen | admin project key | Reopen one operator incident. | SDK operatorIncidents.reopen(); CLI operator-incidents reopen |
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.