envelopeChannel Manager

Manage communication channels - voice, voicemail, and email - including domain verification, use case provisioning, and reputation management.

The Channel Manager handles provisioning and lifecycle management for all communication channels in a workspace. Each channel type has its own setup and use case flow.

Channels

The platform supports the following channels:

Channel
Description

outbound_voice

Outbound phone calls

inbound_voice

Inbound phone calls

ringless_voicemail

Voicemail drops without ringing the recipient

email

Outbound and inbound email

Voice and voicemail channels are managed through Twilio Setups. Email is managed through SES Setups.

SES Setups

An SES Setup represents a verified sending and receiving domain. Each setup provisions a reputation isolation boundary and a domain identity. After creating a setup, the customer must publish DNS records at their DNS provider and then refresh verification status through the API.

Create SES Setup

POST /v1/ses-setup

Provisions the reputation isolation boundary and domain identity, returning the DNS records that must be published.

Request body:

Field
Type
Required
Description

tenant_name

string

Yes

Logical name for reputation and suppression isolation. 1-64 characters, alphanumeric with hyphens and underscores.

domain_identity

string

Yes

Domain to verify for sending and receiving (e.g. mail.customer.com). 1-255 characters.

Response (201):

Field
Type
Description

id

string

Setup identifier

tenant_name

string

Tenant name

domain_identity

string

Verified domain

dns_checked_at

datetime or null

Last DNS verification check time. Null until first refresh.

dns_records

array

DNS records to publish (see below)

created_at

datetime

Creation timestamp

updated_at

datetime

Last update timestamp

Each DNS record in the dns_records array contains:

Field
Type
Description

address

string

Fully-qualified DNS name for the record

record

string

Target value (includes priority prefix for MX records)

type

string

CNAME, MX, or TXT

verified

boolean

Whether this record has been verified

The response includes the following DNS records that must be published:

  • 3 DKIM CNAME records for email authentication

  • 1 MAIL FROM MX record for bounce handling

  • 1 SPF TXT record for sender authorization

  • 1 DMARC TXT record for domain alignment policy

  • 1 inbound MX record for receiving email

Errors: 409 if the tenant name or domain already exists.

List SES Setups

GET /v1/ses-setup

Returns all SES setups with cached verification status. Does not trigger live DNS checks.

Response (200):

Field
Type
Description

items

array

List of setups

Each item contains:

Field
Type
Description

id

string

Setup identifier

tenant_name

string

Tenant name

domain_identity

string

Verified domain

dns_verified

boolean

Whether all DNS records are verified

dns_checked_at

datetime or null

Last DNS verification check time

created_at

datetime

Creation timestamp

updated_at

datetime

Last update timestamp

Get SES Setup

GET /v1/ses-setup/{setup_id}

Returns a single SES setup with a live DNS verification refresh. Checks DKIM, MAIL FROM, DMARC, and inbound MX status and updates the cached verification state.

Path parameters:

Parameter
Type
Description

setup_id

UUID

Setup identifier

Response (200): Same shape as the POST response, with verified flags updated to reflect current DNS state.

Errors: 404 if the setup does not exist.

Delete SES Setup

DELETE /v1/ses-setup/{setup_id}

Deletes an SES setup and its associated domain identity and reputation boundary.

Path parameters:

Parameter
Type
Description

setup_id

UUID

Setup identifier

Response: 204 No Content

Errors: 404 if the setup does not exist. 409 if email use cases still reference the setup - delete those first.

Use Cases

A use case binds a channel to a setup and defines how that channel is used. The request body for creating a use case is a discriminated union on the channel field.

Create Use Case

POST /v1/use-case

Twilio-served channels (outbound_voice, inbound_voice, ringless_voicemail)

Request body:

Field
Type
Required
Description

channel

string

Yes

One of outbound_voice, inbound_voice, ringless_voicemail

entity_name

string

Yes

Business entity name. 1-31 characters, letters/spaces/hyphens only.

name

string

Yes

Use case purpose. 1-31 characters, letters/spaces/hyphens only.

description

string

No

Free-text description, max 2000 characters.

twilio_setup_id

UUID

Yes

Twilio setup to bind to. Must have an approved customer profile.

Response (201):

Field
Type
Description

id

string

Use case identifier

entity_name

string

Business entity name

name

string

Use case name

description

string or null

Description

channel

string

Channel value

twilio_setup_id

string

Bound Twilio setup identifier

created_at

datetime

Creation timestamp

updated_at

datetime

Last update timestamp

Email channel

Request body:

Field
Type
Required
Description

channel

string

Yes

"email"

entity_name

string

Yes

Business entity name. 1-31 characters, letters/spaces/hyphens only.

name

string

Yes

Use case purpose. 1-31 characters, letters/spaces/hyphens only.

description

string

No

Free-text description, max 2000 characters.

ses_setup_id

UUID

Yes

SES setup to bind to. DNS must be fully verified.

sender_email_address

string (email)

Yes

From address for outbound sends. Domain must match the setup's domain identity.

email_type

string

Yes

"transactional" or "marketing". Selects the reputation-isolated sending pool family. Immutable after creation.

Response (201):

Field
Type
Description

id

string

Use case identifier

entity_name

string

Business entity name

name

string

Use case name

description

string or null

Description

channel

string

"email"

ses_setup_id

string

Bound SES setup identifier

configuration_set_name

string

Sending configuration set name, derived from entity_name and name

sender_email_address

string

From address

email_type

string

"transactional" or "marketing"

tier

string

Current reputation tier. New use cases start at "onboarding". Values: onboarding, standard, premium, suspended.

created_at

datetime

Creation timestamp

updated_at

datetime

Last update timestamp

Errors:

  • 404 if the referenced setup does not exist

  • 409 if the setup's DNS is not verified, if a use case with the same entity_name/name already exists, if the configuration set name is already in use, or if the sender address is already bound to another use case

  • 422 if the sender email domain does not match the setup's domain identity (returns sender_domain_mismatch error with expected_domain)

List Use Cases

GET /v1/use-case

Query parameters:

Parameter
Type
Description

entity_name

string

Filter by business entity name

channel

string

Filter by channel

twilio_setup_id

UUID

Filter to use cases bound to this Twilio setup

ses_setup_id

UUID

Filter to use cases bound to this SES setup

All parameters are optional.

Response (200):

Returns an items array. Each item is either a Twilio use case response or an email use case response, discriminated by the channel field.

Delete Use Case

DELETE /v1/use-case/{use_case_id}

Deletes a use case and its channel binding.

  • For Twilio-served channels: refuses with 409 if phone numbers are still assigned. Unassign them first.

  • For email: tears down the associated sending configuration and reputation pool binding.

Response: 204 No Content

Errors: 404 if the use case does not exist. 409 if the use case has dependencies that must be removed first.

Email Reputation Tiers

Email use cases progress through reputation tiers based on sending performance:

Tier
Description

onboarding

New use cases start here. Lowest daily send capacity.

standard

Promoted after a clean warmup period. Default steady-state tier.

premium

High-volume senders with strong reputation metrics. Highest capacity.

suspended

Reputation breach. Sending falls through to shared infrastructure while the incident is resolved.

Tier changes are managed automatically based on send volume, bounce rates, and complaint rates. The email_type field (transactional vs marketing) determines which pool family the use case sends through - transactional and marketing traffic never share sending infrastructure to prevent reputation cross-contamination.

Last updated

Was this helpful?