Supported beta surface
Single and batch sends, project-scoped message logs and events, subscriber lists, opt-in requests, webhook signature verification, and typed errors.
Official SDKs
Typed clients for server-side applications, with project-scoped API keys and idempotent sends.
Release channel
The clients have live-API integration tests and typed errors. Public support starts only after the exact npm and PyPI beta artifacts pass registry, clean-install, and sandbox-send verification.
Keep API keys on the server. Never embed a project key in browser or mobile client code.
Registry installation appears here after the beta artifact passes clean-consumer verification.
import { PulsePigeon } from "@blitzglobaltech/pulsepigeon";
const client = new PulsePigeon(process.env.PULSEPIGEON_API_KEY!);
await client.messages.send({
project_id: "proj_123",
from_email: "[email protected]",
to: [{ email: "[email protected]" }],
subject: "Welcome",
text: "Hello from PulsePigeon."
}, { idempotencyKey: "welcome-user-123" });Single and batch sends, project-scoped message logs and events, subscriber lists, opt-in requests, webhook signature verification, and typed errors.
Use the REST guide for tenant-wide and operator-gated resources that are not part of the project-key SDK beta.
Open the API guideSearch the API referenceComplete beta surface
Each method links to its API reference. Our CI integration suites boot the real API and exercise this surface over HTTP. The public full-surface examples below call every listed method against your configured workspace.
Use a disposable test project, domain, and webhook endpoint with a workspace key carrying the listed scopes. The scripts mutate those resources and request one opt-in email.
Run the TypeScript full-surface example · Run the Python full-surface example
| TypeScript | Python | Scope | Endpoint | Links |
|---|---|---|---|---|
messages.send | send_message | messages:send | POST /v1/messages | Reference · TS · Python |
messages.sendBatch | send_batch | messages:send | POST /v1/messages/batch | Reference · TS · Python |
messages.list | list_messages | reports:read | GET /v1/messages | Reference · TS · Python |
messages.searchLogs | search_message_logs | reports:read | GET /v1/message-logs | Reference · TS · Python |
messages.listEvents | list_events | reports:read | GET /v1/events | Reference · TS · Python |
domains.list | list_domains | reports:read | GET /v1/domains | Reference · TS · Python |
domains.check | check_domain | domains:* | POST /v1/domains/{id}/check | Reference · TS · Python |
domains.dmarcRamp | get_dmarc_ramp | reports:read | GET /v1/domains/{id}/dmarc-ramp | Reference · TS · Python |
domains.listDmarcRamps | list_dmarc_ramps | reports:read | GET /v1/domains/dmarc-ramp | Reference · TS · Python |
dmarc.listSources | list_dmarc_sources | reports:read | GET /v1/deliverability/dmarc/sources | Reference · TS · Python |
webhooks.list | list_webhook_subscriptions | webhooks:* | GET /v1/webhooks/status | Reference · TS · Python |
webhooks.upsert | upsert_webhook_subscription | webhooks:* | PUT/PATCH /v1/webhooks/status | Reference · TS · Python |
webhooks.delete | delete_webhook_subscription | webhooks:* | DELETE /v1/webhooks/status/{id} | Reference · TS · Python |
webhooks.listDeliveries | list_webhook_deliveries | webhooks:* | GET /v1/webhooks/status/deliveries | Reference · TS · Python |
webhooks.health | get_webhook_health | webhooks:* | GET /v1/webhooks/status/health | Reference · TS · Python |
webhooks.rotateSecret | rotate_webhook_secret | webhooks:* | POST /v1/webhooks/status/{id}/rotate-secret | Reference · TS · Python |
webhooks.test | test_webhook | webhooks:* | POST /v1/webhooks/status/{id}/test | Reference · TS · Python |
webhooks.replay | replay_webhook_delivery | webhooks:* | POST /v1/webhooks/status/{id}/deliveries/{delivery_id}/replay | Reference · TS · Python |
suppressions.suppress | suppress_recipient | suppressions:* | POST /v1/compliance/suppressions | Reference · TS · Python |
suppressions.exportCsv | export_suppressions | suppressions:* | GET /v1/suppressions/export | Reference · TS · Python |
suppressions.importCsv | import_suppressions | suppressions:* | POST /v1/suppressions/import | Reference · TS · Python |
contacts.createList | create_subscriber_list | contacts:* | POST /v1/subscriber-lists | Reference · TS · Python |
contacts.listLists | list_subscriber_lists | contacts:* | GET /v1/subscriber-lists | Reference · TS · Python |
contacts.requestOptIn | request_subscriber_opt_in | contacts:* + messages:send | POST /v1/subscriber-lists/{id}/subscriptions | Reference · TS · Python |
contacts.erase | delete_contact | contacts:* | POST /v1/compliance/deletions | Reference · TS · Python |
verifyWebhookSignature | verify_webhook_signature | local | No network request | Reference · TS · Python |