Skip to main content
email·digit

The main endpoints, in one index.

51 endpoints across 9 groups. Curated index today; auto-generated per-endpoint pages from our OpenAPI spec are Planned. For now, multi-language samples for the most-used endpoints live on /for-developers and in the quickstart.

How API keys work

The key knows its workspace.

Calls your application makes (/api/transactional/send, /api/conversions) take an API key as a bearer token. The key belongs to one workspace, so there is no X-Workspace-Id header to send. Dashboard routes such as campaigns use the signed-in session instead.

An API key in the Authorization header resolves to the one workspace it belongs to.Authorization: Bearer ed_test_…Your request carries the keyKey matched by its hashRevoked or wrong-scope keys stop hereIts workspaceNo X-Workspace-Id header needed
One key, one workspace. Revoke the key and the link is gone.
Authentication

API tokens, OAuth flows, 2FA, password reset.

  • GET/api/auth/meCurrent user + workspaces
  • POST/api/auth/loginEmail + password authentication
  • POST/api/auth/signupCreate user + first workspace
  • GET/api/tokensList API tokens for the active workspace
  • POST/api/tokensMint a new API token (plaintext returned once)
  • POST/api/tokens/{id}/revokeRevoke an API token
  • POST/api/tokens/{id}/rotateRotate to a new token under the same name
Workspaces & members

Multi-workspace orgs with RBAC.

  • POST/api/workspacesCreate a new workspace (user becomes owner)
  • PATCH/api/workspaces/{id}Rename a workspace / update its settings
  • GET/api/workspaces/{id}/membersList members + their roles
  • POST/api/workspaces/{id}/membersInvite a member by email
  • DELETE/api/workspaces/{id}/members/{user_id}Remove a member
Domains & deliverability

Add sending domains, manage CNAME delegation, advance DMARC.

  • GET/api/domainsList sending domains
  • POST/api/domainsAdd a domain (returns DNS records to publish)
  • POST/api/domains/{id}/verifyRe-run multi-resolver DNS verification
  • POST/api/domains/{id}/rotate-dkimGenerate a fresh DKIM keypair
  • POST/api/domains/{id}/dmarc/advanceBump DMARC progression to the next step
  • POST/api/checkPublic deliverability check (no auth, rate-limited)
Transactional send

The one endpoint your application calls. Bearer API key, no session.

  • POST/api/transactional/sendFire a journey for one recipient: trigger_key, to, variables, idempotency_key
  • GET/api/transactional/journeysList journeys and their trigger keys
  • POST/api/transactional/journeysCreate a journey
  • GET/api/transactional/messagesMessage stream: filter by status, mode or trigger_key
  • GET/api/transactional/messages/{id}One message with its final rendered HTML
Campaigns

Marketing broadcasts to a segment. Dashboard session, not an API key.

  • POST/api/campaignsCreate a campaign draft
  • POST/api/campaigns/sendCreate and send a campaign (needs a name and a draft_id)
  • POST/api/campaigns/{id}/cancelCancel a scheduled or in-flight campaign
  • GET/api/campaigns/{id}Campaign metadata + send progress
  • GET/api/campaigns/{id}/reportReply rate, replies by meaning, attributed revenue
Mailboxes & ingestion

Connect Gmail / Outlook / IMAP for reply intelligence.

  • GET/api/mailboxesList connected mailboxes
  • POST/api/mailboxes/gmail/callbackComplete Gmail OAuth flow
  • POST/api/mailboxes/outlook/callbackComplete Microsoft Graph OAuth flow
  • POST/api/mailboxes/imap/connectConnect an IMAP mailbox by credentials
  • DELETE/api/mailboxes/{id}Disconnect a mailbox
Replies & contacts

Classified replies, contact upsert + segmentation.

  • GET/api/repliesList recent replies with filters
  • POST/api/replies/ingestManually ingest a reply (for testing)
  • POST/api/inbound/{workspace_id}/emailWebhook for external inbound parsers
  • GET/api/contactsList contacts
  • POST/api/contactsCreate or upsert a contact
Webhooks

Subscriptions, deliveries, replay.

  • GET/api/webhooks/events/samplesEvery event type with a generated sample payload
  • GET/api/webhooksList webhook subscriptions
  • POST/api/webhooksCreate a subscription (signing secret returned once)
  • PATCH/api/webhooks/{id}Update URL / events / status
  • POST/api/webhooks/{id}/rotate-secretGenerate a new signing secret
  • POST/api/webhooks/{id}/testFire a test.ping event at this endpoint
  • GET/api/webhooks/{id}/deliveriesRecent delivery attempts + status
  • POST/api/webhooks/deliveries/{id}/replayRe-queue a failed delivery
Automations

Reply triggers and canvas automations.

  • GET/api/automationsList automations
  • POST/api/automationsCreate automation with trigger + actions
  • PATCH/api/automations/{id}Update automation
  • DELETE/api/automations/{id}Delete automation
  • POST/api/automation-flows/eventsFire an API-event trigger: enrols one recipient in the active transactional automation with that trigger_key (202; idempotent on idempotency_key)
Guides

Background reading.