Extole Email API
The Email API from Extole — 7 operation(s) for email.
The Email API from Extole — 7 operation(s) for email.
openapi: 3.0.1
info:
description: 'Consumer-to-Extole integration endpoints: consumer event submission, zone rendering, profile management, and SDK-backing operations for browser and native app environments.'
title: Integration API - Consumer to Extole Audiences Email API
version: '1.0'
servers:
- description: Production
url: https://{brand}.extole.io
variables:
brand:
default: yourcompany
description: Your Extole client subdomain (e.g. 'mycompany' for mycompany.extole.io)
security:
- HEADER: []
- QUERY: []
- COOKIE: []
tags:
- name: Email
paths:
/api/v4/me/email/status/{polling_id}:
get:
deprecated: true
description: Deprecated. Returns the processing status for a prior `POST /api/v4/me/email` call identified by `polling_id`. Poll until the send reaches a terminal state.
operationId: getSendEmailStatus
parameters:
- in: path
name: polling_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SendEmailPollingResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
expired_access_token:
$ref: '#/components/examples/expired_access_token'
invalid_access_token:
$ref: '#/components/examples/invalid_access_token'
jwt_authentication_error:
$ref: '#/components/examples/jwt_authentication_error'
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
missing_access_token:
$ref: '#/components/examples/missing_access_token'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Forbidden
'415':
content:
application/json:
examples:
unsupported_media_type:
$ref: '#/components/examples/unsupported_media_type'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unsupported Media Type
'429':
content:
application/json:
examples:
too_many_requests:
$ref: '#/components/examples/too_many_requests'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Too Many Requests
summary: Get email send status
tags:
- Email
x-extole-bundle: integration-consumer-to-extole
x-extole-visibility: visible
/api/v4/me/email:
post:
deprecated: true
description: Deprecated. Sends an email on behalf of the authenticated consumer and returns a `polling_id` for status polling. Prefer event-based email flows where available.
operationId: sendEmail
requestBody:
content:
application/json:
example:
data:
data_key: data_key
zone_name: zone_name
schema:
$ref: '#/components/schemas/SendEmailRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SendEmailResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
expired_access_token:
$ref: '#/components/examples/expired_access_token'
invalid_access_token:
$ref: '#/components/examples/invalid_access_token'
invalid_zone_name:
$ref: '#/components/examples/invalid_zone_name'
jwt_authentication_error:
$ref: '#/components/examples/jwt_authentication_error'
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
missing_access_token:
$ref: '#/components/examples/missing_access_token'
missing_campaign_id:
$ref: '#/components/examples/missing_campaign_id'
missing_zone_name:
$ref: '#/components/examples/missing_zone_name'
profile_not_set:
$ref: '#/components/examples/profile_not_set'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Forbidden
'415':
content:
application/json:
examples:
unsupported_media_type:
$ref: '#/components/examples/unsupported_media_type'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unsupported Media Type
'429':
content:
application/json:
examples:
too_many_requests:
$ref: '#/components/examples/too_many_requests'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Too Many Requests
summary: Send an email as the authenticated consumer
tags:
- Email
x-extole-bundle: integration-consumer-to-extole
x-extole-visibility: visible
/v4/email-domains/{emailDomainId}/generate-dkim-records:
post:
description: Generates new DKIM DNS records for the custom sending domain. Returns the records that must be added to DNS to enable DKIM signing.
operationId: generateEmailDomainDkimRecords
parameters:
- in: path
name: emailDomainId
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DkimRecordsResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
dkim_generation_failed:
$ref: '#/components/examples/dkim_generation_failed'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'402':
content:
application/json:
examples:
payment_required:
$ref: '#/components/examples/payment_required'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Payment Required
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
missing_access_token:
$ref: '#/components/examples/missing_access_token'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Forbidden
'415':
content:
application/json:
examples:
unsupported_media_type:
$ref: '#/components/examples/unsupported_media_type'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unsupported Media Type
'429':
content:
application/json:
examples:
too_many_requests:
$ref: '#/components/examples/too_many_requests'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Too Many Requests
summary: Generate DKIM records
tags:
- Email
x-extole-bundle: management
x-extole-visibility: expert
/v4/email/validate:
post:
description: Checks whether the supplied email address is syntactically valid and acceptable for use in Extole programs. Returns validation status without creating or updating a consumer identity.
operationId: validateEmail
requestBody:
content:
application/json:
example:
email: email
schema:
$ref: '#/components/schemas/EmailProviderValidationRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EmailProviderValidationResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'403':
content:
application/json:
examples:
invalid_domain:
$ref: '#/components/examples/invalid_domain'
invalid_email:
$ref: '#/components/examples/invalid_email'
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Forbidden
'415':
content:
application/json:
examples:
unsupported_media_type:
$ref: '#/components/examples/unsupported_media_type'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unsupported Media Type
'429':
content:
application/json:
examples:
too_many_requests:
$ref: '#/components/examples/too_many_requests'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Too Many Requests
summary: Validate an email address
tags:
- Email
x-extole-bundle: integration-consumer-to-extole
x-extole-visibility: expert
/v4/email-domains:
get:
description: Returns all custom sending domains configured for the client.
operationId: listEmailDomains
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/EmailDomainResponse'
type: array
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'402':
content:
application/json:
examples:
payment_required:
$ref: '#/components/examples/payment_required'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Payment Required
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
missing_access_token:
$ref: '#/components/examples/missing_access_token'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Forbidden
'415':
content:
application/json:
examples:
unsupported_media_type:
$ref: '#/components/examples/unsupported_media_type'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unsupported Media Type
'429':
content:
application/json:
examples:
too_many_requests:
$ref: '#/components/examples/too_many_requests'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Too Many Requests
summary: List email domains
tags:
- Email
x-extole-bundle: management
x-extole-visibility: visible
post:
description: Creates a new custom sending domain for campaign emails. DNS verification records are generated for the domain. Returns the created domain with its server-assigned id.
operationId: createEmailDomain
requestBody:
content:
application/json:
example:
dkim_cname_records:
- alias: alias
canonical_name: canonical_name
domain: domain
force_send_from_email_domain: true
schema:
$ref: '#/components/schemas/EmailDomainCreateRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EmailDomainResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
duplicate_cname_alias:
$ref: '#/components/examples/duplicate_cname_alias'
duplicate_email_domain:
$ref: '#/components/examples/duplicate_email_domain'
invalid_alias:
$ref: '#/components/examples/invalid_alias'
invalid_canonical_name:
$ref: '#/components/examples/invalid_canonical_name'
invalid_domain:
$ref: '#/components/examples/invalid_domain'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
missing_required_field:
$ref: '#/components/examples/missing_required_field'
required_domain_name:
$ref: '#/components/examples/required_domain_name'
too_long_cname_record_field:
$ref: '#/components/examples/too_long_cname_record_field'
too_long_email_domain_field:
$ref: '#/components/examples/too_long_email_domain_field'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'402':
content:
application/json:
examples:
payment_required:
$ref: '#/components/examples/payment_required'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Payment Required
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
missing_access_token:
$ref: '#/components/examples/missing_access_token'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Forbidden
'415':
content:
application/json:
examples:
unsupported_media_type:
$ref: '#/components/examples/unsupported_media_type'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unsupported Media Type
'429':
content:
application/json:
examples:
too_many_requests:
$ref: '#/components/examples/too_many_requests'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Too Many Requests
summary: Create an email domain
tags:
- Email
x-extole-bundle: management
x-extole-visibility: visible
/v4/email-domains/{emailDomainId}:
get:
description: Returns the custom sending domain for the specified id.
operationId: getEmailDomain
parameters:
- in: path
name: emailDomainId
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EmailDomainResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
dkim_generation_failed:
$ref: '#/components/examples/dkim_generation_failed'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'402':
content:
application/json:
examples:
payment_required:
$ref: '#/components/examples/payment_required'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Payment Required
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
missing_access_token:
$ref: '#/components/examples/missing_access_token'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Forbidden
'415':
content:
application/json:
examples:
unsupported_media_type:
$ref: '#/components/examples/unsupported_media_type'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unsupported Media Type
'429':
content:
application/json:
examples:
too_many_requests:
$ref: '#/components/examples/too_many_requests'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Too Many Requests
summary: Get an email domain
tags:
- Email
x-extole-bundle: management
x-extole-visibility: visible
put:
description: Updates the custom sending domain. Only fields present in the request body are changed. Returns the updated domain.
operationId: updateEmailDomain
parameters:
- in: path
name: emailDomainId
required: true
schema:
type: string
requestBody:
content:
application/json:
example:
dkim_cname_records:
- alias: alias
canonical_name: canonical_name
domain: domain
force_send_from_email_domain: true
schema:
$ref: '#/components/schemas/EmailDomainUpdateRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EmailDomainResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
dkim_generation_failed:
$ref: '#/components/examples/dkim_generation_failed'
duplicate_cname_alias:
$ref: '#/components/examples/duplicate_cname_alias'
duplicate_email_domain:
$ref: '#/components/examples/duplicate_email_domain'
invalid_alias:
$ref: '#/components/examples/invalid_alias'
invalid_canonical_name:
$ref: '#/components/examples/invalid_canonical_name'
invalid_domain:
$ref: '#/components/examples/invalid_domain'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
missing_required_field:
$ref: '#/components/examples/missing_required_field'
required_domain_name:
$ref: '#/components/examples/required_domain_name'
too_long_cname_record_field:
$ref: '#/components/examples/too_long_cname_record_field'
too_long_email_domain_field:
$ref: '#/components/examples/too_long_email_domain_field'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'402':
content:
application/json:
examples:
payment_required:
$ref: '#/components/examples/payment_required'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Payment Required
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
missing_access_token:
$ref: '#/components/examples/missing_access_token'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Forbidden
'415':
content:
application/json:
examples:
unsupported_media_type:
$ref: '#/components/examples/unsupported_media_type'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unsupported Media Type
'429':
content:
application/json:
examples:
too_many_requests:
$ref: '#/components/examples/too_many_requests'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Too Many Requests
summary: Update an email domain
tags:
- Email
x-extole-bundle: management
x-extole-visibility: visible
delete:
description: Removes the custom sending domain. Returns the deleted domain.
operationId: deleteEmailDomain
parameters:
- in: path
name: emailDomainId
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EmailDomainResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
dkim_generation_failed:
$ref: '#/components/examples/dkim_generation_failed'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'402':
content:
application/json:
examples:
payment_required:
$ref: '#/components/examples/payment_required'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Payment Required
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
missing_access_token:
$ref: '#/components/examples/missing_access_token'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Forbidden
'415':
content:
application/json:
examples:
unsupported_media_type:
$ref: '#/components/examples/unsupported_media_type'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unsupported Media Type
'429':
content:
application/json:
examples:
too_many_requests:
$ref: '#/components/examples/too_many_requests'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Too Many Requests
summary: Delete an email domain
tags:
- Email
x-extole-bundle: management
x-extole-visibility: visible
/v4/email-domains/{emailDomainId}/validate:
get:
description: Checks DNS records for the custom sending domain to confirm verification status. Returns the current validation result without making changes.
operationId: validateEmailDomain
parameters:
- in: path
name: emailDomainId
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EmailDomainValidationResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
dkim_generation_failed:
$ref: '#/components/examples/dkim_generation_failed'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/compone
# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/extole/refs/heads/main/openapi/extole-email-api-openapi.yml