Email API
Email endpoints exposed by the Devotel CPaaS API Base path:/api/v1/email
Endpoint count: 32
Get dedicated sending status
GET /api/v1/email/dedicated-sendingCheck dedicated IP eligibility
GET /api/v1/email/dedicated-sending/eligibilityList the org’s sending domains
GET /api/v1/email/domainsGet domain DNS verification history
GET /api/v1/email/domains/{domainId}/dns-historystring
required
—
Check domain DNS records
GET /api/v1/email/domains/{domainId}/dns-statusrefresh=true to trigger a provider re-verification and update Resend’s domain status. Requires owner or admin role.
string
required
—
Get domain inbox placement rate
GET /api/v1/email/domains/{domainId}/inbox-placementstring
required
—
Get test email send result
GET /api/v1/email/domains/{domainId}/test-send/{testId}/resultstring
required
—
string
required
—
List inbound email routes
GET /api/v1/email/inbound-routesList email senders
GET /api/v1/email/sendersdnsVerified flag derived from live SPF/DKIM evidence. Requires an owner / admin role.
Get an email sender
GET /api/v1/email/senders/{senderId}esend_legacy_<slug>). Returns 404 when no sender with that id exists for the tenant. Requires an owner / admin role.
string
required
Email sender id (
esend_…).List email suppressions
GET /api/v1/email/suppressionssearch (case-insensitive substring on the address) and reason, and page with limit / offset. Requires an owner / admin role.
integer
Page size (1–200, default 50).
integer
Row offset for pagination (default 0).
string
Case-insensitive substring match on the suppressed address.
string
Filter to a single suppression reason (e.g.
complaint, hard_bounce).Export email suppressions as CSV
GET /api/v1/email/suppressions/exportGet email sender reputation
GET /api/v1/email/suppressions/reputationinteger
Lookback window in days (1–90). Defaults to the platform health-score window.
Process a one-click email unsubscribe
GET /api/v1/email/unsubscribe/{token}List-Unsubscribe URL that Orbit stamps into every outbound email. The {token} is an HMAC-signed value binding the tenant, message, and recipient — no API key or session is required, the token is the credential. Opening the link suppresses that recipient from future sends (idempotently) and either renders a confirmation page or 302-redirects to the sender’s configured unsubscribe page. Use this for the human-clickable (GET) half of RFC 8058 one-click unsubscribe.
string
required
Signed, single-use unsubscribe token minted by Orbit and embedded in the email’s
List-Unsubscribe header/link. Opaque to callers.Check an IP-warmup batch-send verdict
GET /api/v1/email/warmup-enforcementrequested), return a batch-level accept/defer verdict against today’s live warmup headroom: how many emails may go today, how many must wait, and when headroom reopens. This is the enforcement layer over the warmup status — a bulk send can gate on one authoritative allow / partial / block decision instead of re-deriving the arithmetic. Read-only and tenant-isolated: the verdict only ever withholds volume above today’s ceiling, it never authorises a send. Requires an operator role.
integer
required
Steady-state daily send volume the ramp builds up to.
integer
required
Number of emails the caller wants to send right now.
integer
Optional day-1 seed volume (defaults to 50/day).
number
Optional per-day growth multiplier (defaults to 1.5).
Get an IP-warmup ramp plan
GET /api/v1/email/warmup-planinteger
required
Steady-state daily send volume the ramp builds up to.
integer
Optional day-1 seed volume (defaults to a conservative 50/day).
number
Optional per-day growth multiplier (defaults to 1.5, a ~50%/day ramp).
Get live IP-warmup ramp status
GET /api/v1/email/warmup-statusnow falls on (anchored to the first recorded outbound send), today’s recommended send cap, how much has already gone out today, and the remaining headroom. The cap also folds in the account’s live sending reputation — a poor delivery/complaint rate holds today’s ceiling below the time curve so you never keep ramping into a spam filter. Read-only and tenant-isolated; requires an operator role.
integer
required
Steady-state daily send volume the ramp builds up to.
integer
Optional day-1 seed volume (defaults to 50/day).
number
Optional per-day growth multiplier (defaults to 1.5).
Request a dedicated sending IP
POST /api/v1/email/dedicated-sending/requestConfigure BIMI brand logo
POST /api/v1/email/domains/{domainId}/bimistring
required
—
Initiate a test email send
POST /api/v1/email/domains/{domainId}/test-sendstring
required
—
Register an inbound email route
POST /api/v1/email/inbound-routesRegister an email sender
POST /api/v1/email/sendersisDefault: true to make it the org default. Requires an owner / admin role.
string
required
Sending domain to register (lowercased), e.g.
mail.acme.com.string | null
Default From address — must be on
domain; omit or null to send as noreply@<domain>.string | null
Display name shown to recipients.
string | null
Reply-To routing address.
boolean
Make this the org’s default sender (demotes the previous default).
string | null
Assign the sender to a sending stream (
estream_…), or null to leave it unassigned.Set the default email sender
POST /api/v1/email/senders/{senderId}/set-defaultstring
required
Email sender id (
esend_…) to promote to default.Add an email suppression
POST /api/v1/email/suppressionsstring
required
The recipient address to suppress.
string (enum: manual|unsubscribe|complaint|hard_bounce)
Why the address is being suppressed.
Bulk-import email suppressions
POST /api/v1/email/suppressions/bulk-importcsv string or emails array. Capped at 10,000 distinct addresses per call. Requires an owner / admin role.
string
Raw CSV / newline-delimited text parsed leniently for addresses.
string[]
Explicit list of addresses (alternative to
csv).string (enum: manual|unsubscribe|complaint|hard_bounce)
Reason applied to every imported address.
Confirm a one-click email unsubscribe
POST /api/v1/email/unsubscribe/{token}POST counterpart of the unsubscribe link. Mail clients that honour List-Unsubscribe-Post send an application/x-www-form-urlencoded body of List-Unsubscribe=One-Click to this URL to unsubscribe the recipient without a browser round-trip. The signed {token} is the only credential; the suppression effect is identical to the GET form and is idempotent.
string
required
Signed, single-use unsubscribe token minted by Orbit and embedded in the email’s
List-Unsubscribe header. Opaque to callers.Validate a recipient email address
POST /api/v1/email/validateBulk-validate recipient email addresses
POST /api/v1/email/validate/bulkUpdate an email sender
PUT /api/v1/email/senders/{senderId}isDefault: true promotes this sender to the org default in the same request. Requires an owner / admin role.
string
required
Email sender id (
esend_…).string | null
Default From address — must be on the sender’s domain.
string | null
Display name shown to recipients.
string | null
Reply-To routing address.
boolean
Set
true to promote this sender to the org default.string | null
Reassign to a sending stream (
estream_…), or null to clear the assignment.Delete an inbound email route
DELETE /api/v1/email/inbound-routes/{routeId}string
required
—
Delete an email sender
DELETE /api/v1/email/senders/{senderId}string
required
Email sender id (
esend_…).Remove an email suppression
DELETE /api/v1/email/suppressions/{id}string
required
Suppression id (
suppression_…).