Authentication and scopes
Authorization: Bearer pp_live_... or pp_test_...
Authentication: Project or workspace API key
Test projects get pp_test_ keys; production projects and workspace keys get pp_live_ keys. The project record controls the environment. Choose only the scopes you need.
Messages, scheduling, and attachments
POST /v1/messages, POST /v1/messages/batch
Authentication: messages:send
Use an Idempotency-Key for retry-safe sends. Scheduling and attachment fields are part of the message request.
Message status and events
GET /v1/messages, /v1/message-logs, /v1/events
Authentication: reports:read
Project keys see only their project. Results follow the workspace retention policy.
Bounces and reactivation
GET /v1/bounces, GET /v1/bounces/{id}, POST /v1/bounces/{id}/activate
Authentication: reports:read for reads; privileged session or all-environment workspace key with suppressions:* for reactivation
Filter by type, email, date, or message ID. Reactivation removes only a matching bounce-caused suppression and returns 409 otherwise.
Domains and DMARC
GET /v1/domains, POST /v1/domains/{id}/check
Authentication: Workspace key with reports:read or domains:*
Domain state is workspace-wide. DNS checks are rate limited.
Templates
/v1/templates
Authentication: Signed workspace session
Create immutable versions, publish a version, preview output, and use published templates in batch sends.
Contacts and subscriber lists
/v1/subscriber-lists
Authentication: contacts:*
Project keys create and read lists only in their project. Opt-in requests also require messages:send.
Segments
/v1/segments
Authentication: Signed workspace session
Build reusable audience rules from contact profile and event data.
Campaigns
/v1/campaigns
Authentication: Signed workspace session
Create, schedule, pause, resume, cancel, preview, and inspect campaigns.
Workflows
/v1/automations
Authentication: Signed workspace session
Version, publish, trigger, inspect, and retry workflow runs.
Inbound mail
/v1/inbound
Authentication: Signed workspace session
Configure inbound routes and inspect retained inbound messages.
Suppressions and deletion
/v1/compliance/suppressions, /v1/suppressions/*
Authentication: Workspace key with suppressions:*
Suppression and deletion act across the workspace and require privileged key issuance.
Status webhooks
/v1/webhooks/status
Authentication: Workspace key with webhooks:*
Verify every delivery with the SDK helper. Delivery history exposes retries and final outcomes.
Rate limits and errors
401, 403, 409, 422, 423, 429, 5xx
Authentication: All public operations
Typed SDK errors preserve the stable API code. Honor Retry-After on 429 responses.
Idempotency
Idempotency-Key
Authentication: Mutation-specific scope
Reusing a key with the same body returns the original accepted result. A changed body returns 409.
Webhook verification and retries
PulsePigeon-Signature contains a Unix timestamp and an HMAC-SHA256 digest over canonical JSON. Verify it with the TypeScript or Python SDK helper before parsing business fields.
A default five-minute tolerance would reject delayed deliveries; the helpers instead default to 3600 seconds. Set a longer tolerance when configured retries or queue delays require it. They do not enforce the exact header grammar, so validate syntax separately if your receiver requires it. Rotation changes the signing secret immediately; accept both old and new secrets while old deliveries finish, and expect new deliveries to retry until the new secret reaches your receiver. Reject repeated event IDs in your replay window and return a successful 2xx response only after durable processing.
Delivery history reports attempts, the next retry time, final response status, and dead-letter state. Event payload schemas are part of the downloadable OpenAPI contract.
Subscribe to subscription.changed for preference, one-click unsubscribe, suppression, bounce, and complaint changes. Its payload includes the recipient, category, source, and old and new state. Subscribe to smtp.submission_error for tenant-scoped authenticated SMTP failures. It includes the project, credential ID, error code, and assigned message ID when available.