Domains
DomainsService manages domain configuration for email sending via AWS SES. Use this service to register, verify, and manage domains that can send emails. Getting Started: 1. Call AddDomain() to register a domain 2. Call GetDomain(includeValidation=true) to see required DNS records 3. Configure DNS records in your provider (or use ApplyDomainRecords for Route53) 4. Poll GetDomain() until verification_status is SUCCESS 5. Domain is ready to send emails once both verification_status and dkim_status are SUCCESS
Base path: /domains
POST /domains/AddDomain
Section titled “POST /domains/AddDomain”AddDomain creates a new domain in AWS SES for email sending.
Request (AddDomainRequest)
| Field | Type | Description |
|---|---|---|
domain | string | domain: The domain to add (e.g., “mail.example.com”). Must be a valid FQDN. |
dmarc_policy | DMARCPolicyType? | dmarc_policy: Optional DMARC policy to set (defaults to NONE for new domains) |
dmarc_report_email | string? | dmarc_report_email: Optional email for DMARC failure reports |
send_enabled | bool? | send_enabled: Whether this domain should be configured for sending (default true) |
receive_enabled | bool? | receive_enabled: Whether this domain should be configured for receiving (default false) |
dmarc_enabled | bool? | dmarc_enabled: Whether to recommend/apply DMARC record (default true) |
spf_mode | SPFMode? | spf_mode: SPF handling mode (default CREATE_IF_MISSING) |
spf_value | string? | spf_value: Optional SPF record value (used with FORCE_VALUE) |
Response (AddDomainResponse)
| Field | Type | Description |
|---|---|---|
domain | Domain |
POST /domains/GetDomain
Section titled “POST /domains/GetDomain”GetDomain retrieves domain information and optionally DNS validation records.
Request (GetDomainRequest)
| Field | Type | Description |
|---|---|---|
id | string | |
include_dns_validation | bool? | include_dns_validation: Set to true to receive DNS validation snapshot |
Response (GetDomainResponse)
| Field | Type | Description |
|---|---|---|
domain | Domain |
POST /domains/ListDomains
Section titled “POST /domains/ListDomains”ListDomains returns all domains configured for the account.
Request (ListDomainsRequest)
| Field | Type | Description |
|---|---|---|
page_size | int32? | page_size: Maximum number of domains to return per page (default: 50, max: 100) |
page_token | string? | page_token: Token from previous response to retrieve the next page |
Response (ListDomainsResponse)
| Field | Type | Description |
|---|---|---|
domains | Domain[] | |
next_page_token | string | next_page_token: Token to pass to next ListDomainsRequest for additional results Empty string means no more results |
POST /domains/UpdateDomain
Section titled “POST /domains/UpdateDomain”UpdateDomain modifies domain settings like DMARC policy.
Request (UpdateDomainRequest)
| Field | Type | Description |
|---|---|---|
id | string | |
dmarc_policy | DMARCPolicyType? | dmarc_policy: New DMARC policy type |
dmarc_report_email | string? | dmarc_report_email: New email address for DMARC reports |
send_enabled | bool? | |
receive_enabled | bool? | |
dmarc_enabled | bool? | |
spf_mode | SPFMode? | |
spf_value | string? |
Response (UpdateDomainResponse)
| Field | Type | Description |
|---|---|---|
domain | Domain |
POST /domains/RemoveDomain
Section titled “POST /domains/RemoveDomain”RemoveDomain deletes a domain and stops sending from this address.
Request (RemoveDomainRequest)
| Field | Type | Description |
|---|---|---|
id | string |
Response (RemoveDomainResponse)
No fields.
POST /domains/CheckDNSProvider
Section titled “POST /domains/CheckDNSProvider”CheckDNSProvider checks if Route53 DNS automation is available.
Request (CheckDNSProviderRequest)
| Field | Type | Description |
|---|---|---|
id | string |
Response (CheckDNSProviderResponse)
| Field | Type | Description |
|---|---|---|
has_access | bool | has_access: True if Route53 access is available for this domain |
provider_type | DNSProviderType? | provider_type: The DNS provider type (if available) |
route53 | Route53HostedZone? | route53: Route53 hosted zone details (if provider is Route53) |
POST /domains/ApplyDomainRecords
Section titled “POST /domains/ApplyDomainRecords”ApplyDomainRecords automatically creates DNS records in Route53.
Request (ApplyDomainRecordsRequest)
| Field | Type | Description |
|---|---|---|
id | string |
Response (ApplyDomainRecordsResponse)
| Field | Type | Description |
|---|---|---|
dns_apply_state | DNSApplyState? | dns_apply_state: Updated automation apply state |
dns_validation | DNSValidationResult? | dns_validation: Current DNS validation snapshot after applying records |
records_failed | string[] | records_failed: List of record names that failed to create (if any) |
POST /domains/SendTestEmail
Section titled “POST /domains/SendTestEmail”SendTestEmail sends a test email from a verified domain.
Request (SendTestEmailRequest)
| Field | Type | Description |
|---|---|---|
from_email | string? | from_email: Verified sender email address (optional if id provided) |
id | string? | id: Domain ID - use test@{domain} as sender (optional if from_email provided) |
to_email | string? | to_email: Recipient email address (required only for NORMAL test type; ignored for simulator types) |
test_type | TestEmailType | test_type: Type of test to perform |
message_class | common.v1.MessageClass? | message_class: Category of email for tracking (optional, defaults to TRANSACTIONAL) |
Response (SendTestEmailResponse)
| Field | Type | Description |
|---|---|---|
message_id | string | message_id: SES message ID for tracking |
note | string | note: Information about the test (e.g., simulator address used) |
submission_id | string? | submission_id: EmailSubmission ID (standard async send pipeline) When sending via the normal JMAP submission flow, SES message ID is not known synchronously. Use submission_id to track status until SES message ID is populated. |