openapi: 3.1.0
info:
title: SMTP2GO API
version: 3.0.4
description: The SMTP2GO v3 REST API for sending transactional email and SMS, managing sender domains and single sender emails, SMTP users, API keys, IP allow lists and IP auth, templates, webhooks, suppressions, subaccounts, dedicated IPs, email archive, activity search and delivery statistics. Every operation is a POST (with a PATCH variant on two paths) carrying a JSON body; authentication is an API key supplied in the X-Smtp2go-Api-Key header or as an api_key field in the request body.
contact:
name: SMTP2GO Support
url: https://support.smtp2go.com/
termsOfService: https://www.smtp2go.com/terms/
x-harvest:
source: https://developers.smtp2go.com/mcp
method: MCP tools/call get-endpoint, one call per path+method, assembled verbatim
harvested: '2026-08-13'
server_info:
name: SMTP2GO-API-Docs
version: 3.0.4
note: SMTP2GO does not publish a single fetchable OpenAPI URL; the ReadMe registry path answers 429 to non-browser clients. The provider's own remote MCP server returns the authoritative OpenAPI 3.1.0 fragment for each endpoint anonymously, and those 73 fragments are merged here without modification.
servers:
- url: https://api.smtp2go.com/v3
description: Regionless
- url: https://us-api.smtp2go.com/v3
description: US Region
- url: https://eu-api.smtp2go.com/v3
description: EU Region
- url: https://au-api.smtp2go.com/v3
description: AU Region
security:
- sec0: []
tags:
- name: EMAILS
description: Send standard, MIME and batch email; manage scheduled sends
- name: EMAIL ARCHIVE
description: Search and retrieve archived email content
- name: SENDER DOMAINS
description: Add, verify and manage sender domains, tracking and return-path subdomains
- name: SINGLE SENDER EMAILS
description: Verify individual From addresses
- name: SMTP USERS
description: Manage SMTP relay usernames
- name: API KEYS
description: Create, edit and inspect API keys and their endpoint permissions
- name: IP Allow List
description: Manage the account IP allow list for SMTP and API access
- name: IP AUTH
description: Manage IP-authenticated sending entries
- name: DEDICATED IPS
description: View dedicated IP addresses on the account
- name: ALLOWED SENDERS
description: Manage the allowed/restricted senders list
- name: ALLOWED RECIPIENTS
description: Manage the allowed recipients list
- name: SUPPRESSIONS
description: Add, view and remove suppressed addresses
- name: SUBACCOUNTS
description: Create, update, close and reopen subaccounts
- name: TEMPLATES
description: Create and manage email templates
- name: WEBHOOKS
description: Create and manage event webhooks
- name: ACTIVITY
description: Search account email and SMS activity events
- name: STATISTICS
description: Delivery, bounce, spam, unsubscribe and cycle statistics
- name: SMS
description: Send SMS and view sent/received messages and summaries
paths:
/activity/search:
post:
tags:
- ACTIVITY
summary: Search activity
description: Returns events (such as opens, unsubscribes) which match the filters passed. A count of events matching the filter is also included, as this may surpass the maximum of 1,000 items included within the response.
This endpoint is rate-limited to 60 requests per minute.
operationId: search-activity
requestBody:
content:
application/json:
schema:
type: object
properties:
start_date:
type: string
descriiption: 'ISO-8601 formatted datetime which defaults to current date at midnight. The range will be inclusive of start_date and exclusive of end_date. Timezone is UTC.Defaults to current date at midnight.
Valid formats are: 2006-01-02, 2006-01-02 15:04:05, 2006-01-02T15:04:05, 2006-01-02T15:04:05.0000000, 02 Jan 06 15:04 MST, 02 Jan 06 15:04 -0700, 2006-01-02T15:04:05Z07:00, 2006-01-02T15:04:05.999999999Z07:00, Mon, 02 Jan 2006 15:04:05 MST'
end_date:
type: string
description: 'ISO-8601 formatted datetime which defaults to now. Timezone is UTC.Defaults to current date at midnight.
Valid formats are: 2006-01-02, 2006-01-02 15:04:05, 2006-01-02T15:04:05, 2006-01-02T15:04:05.0000000, 02 Jan 06 15:04 MST, 02 Jan 06 15:04 -0700, 2006-01-02T15:04:05Z07:00, 2006-01-02T15:04:05.999999999Z07:00, Mon, 02 Jan 2006 15:04:05 MST'
search:
type: string
description: If passed, will return all events for emails containing this string in any search fields. To return events with one or more text values, separate the text with '|' (e.g. 'text1 | text2')
search_email_id:
type: string
description: If passed, will return all events for an email matching this specific id
search_subject:
type: string
description: If passed, will return all events for emails containing this string in the email subject
search_sender:
type: string
description: If passed, will return all events for emails containing this string in the email sender
search_recipient:
type: string
description: If passed, will return all events for emails containing this string in the email recipient
search_usernames:
type: array
description: If passed, will return all events for emails sent by this/these username/s
items:
type: string
subaccounts:
type: array
description: If passed, will return all events for emails sent by this/these subaccount_id/s (as returned from the /subaccount/search endpoint or as shown in the App)
items:
type: string
limit:
type: integer
description: 'The maximum number of events to return (Max: 1000)'
format: int32
default: 100
continue_token:
type: string
description: If passed, will continue the search beyond the current page, using the same search parameters
only_latest:
type: boolean
description: 'If true, will only return the most recent event for each email returned. Default: false'
only_latest_by_sent:
type: boolean
description: 'If true, will only return the most recent event for each email returned ordered by sent date (overrides only_latest field). Default: false'
event_types:
type: array
description: If passed, will limit the returned events to the provided event types.
Values: 'processed', 'soft-bounced', 'hard-bounced', 'rejected', 'spam', 'delivered', 'unsubscribed', 'resubscribed', 'opened', 'clicked'
items:
type: string
include_headers:
type: boolean
description: Return the full email headers with the response
default: false
custom_headers:
type: array
description: A list of header keys to parse out of the raw headers
items:
type: string
example: X-MyCustomID
region:
type: string
description: Optional. By default, activity search queries the region where the master account is located. If the account has subaccounts in other regions, pass this field to force the search to query activity data in that region.
enum:
- us
- eu
- au
example: us
responses:
'200':
description: Matching events
content:
application/json:
examples:
Result:
value:
data:
events:
- from: rob@example.co.uk
recipient: jo@another_example.com
subaccount_name: Master account
email_id: 1u0SwL-B9zBpi9ffUq-JAB2
date: '2022-11-12T07:44:58Z'
event: delivered
subject: My Test Email
username: api-5BFDE1E62529
sender: rob@example.co.uk
to: jo@another_example.com
bcc: audit@example.co.uk
smtp_response: 250 Message received
host: 136.143.191.44
headers: 'Content-Type: text/html
To: to@example.com...'
custom_headers:
X-MyCustomID: 01HMSACEHXHDG4X1CZV89SQMP7
total_events: 1
continue_token: null
request_id: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
schema:
type: object
required:
- data
- request_id
properties:
data:
type: object
required:
- continue_token
- events
- total_events
properties:
continue_token:
type: string
example: '...'
nullable: true
events:
type: array
items:
type: object
required:
- from
- recipient
- subaccount_name
- email_id
- date
- event
- recipients
- subject
- username
- reply_to
- sender
- sender_full
- to
- cc
- bcc
- smtp_response
- reason
- host
- error
- email_client
- metadata
- outbound_ip
- byte_size
- headers
- custom_headers
properties:
from:
type: string
example: no-reply@example.com
recipient:
type: string
example: someone@example.com
subaccount_name:
type: string
example: Master account
email_id:
type: string
example: 1u0SwL-B9zBpi9ffUq-JAB2
description: The unique ID of the email which generated the event
date:
type: string
example: '2021-02-09T12:18:53Z'
description: An RFC3339 encoded timestamp with UTC timezone indicating the timestamp of the event
event:
type: string
example: opened
description: A string indicating the type of the event
recipients:
type: array
example: '[''someone@example.com'', ''someoneelse@example.com'']'
description: The recipients of the email
items:
type: string
subject:
type: string
example: Booking Confirmation
description: The subject of the email
username:
type: string
example: smtpuser
description: The username used to send the email
reply_to:
type: string
example: reply@example.com
description: The value of the Reply-To header if present
sender:
type: string
example: no-reply@example.com
description: The From header of the email
sender_full:
type: string
example: NoReply
description: The From header of the email including name part if present
to:
type: string
example: otherperson@example.com
description: The value of the TO header
cc:
type: string
example: cc@example.com
description: The value of the CC header
bcc:
type: string
example: bcc@example.com
description: The value of the BCC header
smtp_response:
type: string
example: 250 Message received
description: The SMTP response of the mail server
reason:
type: string
example: This was a spam email
description: The reason for an event occurring if present
host:
type: string
example: 127.0.0.1
description: The IP address of the host associated with the event
originating_host:
type: string
example: 127.0.0.1
description: The originating IP address of the host associated with the processed event
error:
type: string
example: i/o timeout
description: The error message that occurred on certain events
email_client:
type: object
description: Email client information
metadata:
type: object
description: Additional metadata for open/click events
outbound_ip:
type: string
description: The Outbound IP Address if available
byte_size:
type: integer
description: The size of the email in bytes
headers:
type: string
description: The full email headers if requested
custom_headers:
type: object
description: An dictionary of key/value pairs of custom headers
delivery_attempts:
type: array
description: A list of current delivery attempts if available (for processed events only)
items:
type: object
properties:
smtptime:
type: string
description: An RFC3339 encoded timestamp with UTC timezone indicating the timestamp of the delivery attempt
host:
type: string
description: The host that generated the delivery attempt
smtpresponse:
type: string
description: The SMTP response from the target server
total_events:
type: integer
example: 23405
default: 0
description: The total events available to be returned.
The actual number of events returned will depend on the number available and the 'limit' passed.
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/allowed_recipients/add:
post:
tags:
- ALLOWED RECIPIENTS
summary: Add allowed recipients
description: Add one or more email addresses and domain names to your Allowed Recipients List. Further details of the associated setting are found in the SMTP2GO Guides.
operationId: add-allowed-recipients
requestBody:
content:
application/json:
schema:
type: object
required:
- allowed_recipients
properties:
allowed_recipients:
type: array
description: Array of email addresses and domain names.
default:
- test-person@example.com
- other@example.com
items:
type: string
enabled:
type: boolean
description: A flag indicating if this list is taken into account when sending
example: true
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Allowed Recipients list updated
content:
application/json:
examples:
Example:
value:
request_id: b8f3c2b4-63ca-11ed-b66a-f23c9216ce11
data:
allowed_recipients:
- test@test.com
enabled: true
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
type: object
required:
- allowed_recipients
- enabled
properties:
allowed_recipients:
type: array
description: A list of email addresses and domain names
items:
type: string
example: test-person@example.com
enabled:
type: boolean
description: A flag indicating if this list is taken into account when sending
example: true
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/allowed_recipients/remove:
post:
tags:
- ALLOWED RECIPIENTS
summary: Remove allowed recipients
description: 'Remove one or more emails addresses or domain names stored in your Allowed Recipients List. Note: In the event that any of the email addresses or domains do not feature in the list, no error will be raised.'
operationId: remove-allowed-recipients
requestBody:
content:
application/json:
schema:
type: object
required:
- allowed_recipients
properties:
allowed_recipients:
type: array
description: Array of email addresses and domain names to remove.
default:
- test-person@example.com
items:
type: string
enabled:
type: boolean
description: A flag indicating if this list is taken into account when sending
example: true
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Allowed Recipients Removed
content:
application/json:
examples:
Example:
value:
request_id: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
allowed_recipients:
- test-person@example.com
enabled: true
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
type: object
required:
- allowed_recipients
- enabled
properties:
allowed_recipients:
type: array
description: A list of email addresses and domain names
items:
type: string
example: test-person@example.com
enabled:
type: boolean
description: A flag indicating if this list is taken into account when sending
example: true
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/allowed_recipients/update:
post:
tags:
- ALLOWED RECIPIENTS
summary: Update allowed recipients
description: Replace the email addresses and domain names on your Allowed Recipients List using this endpoint. Further details of these modes are found in the SMPT2GO Guides. Note that a post to this endpoint will return a success, even if the setting is not in use.
operationId: update-allowed-recipients
requestBody:
content:
application/json:
schema:
type: object
required:
- allowed_recipients
- enabled
properties:
allowed_recipients:
type: array
description: Array of email addresses and domain names.
default:
- test-person@example.com
- other@example.com
items:
type: string
enabled:
type: boolean
description: A flag indicating if this list should be taken into account when sending
example: true
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Allowed Recipients list updated
content:
application/json:
examples:
Example:
value:
request_id: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
allowed_recipients:
- test-person@example.com
- otherexample.com
enabled: true
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
type: object
required:
- allowed_recipients
- enabled
properties:
allowed_recipients:
type: array
description: A list of email addresses and domain names
items:
type: string
example: test-person@example.com
enabled:
type: boolean
description: A flag indicating if this list is taken into account when sending
example: true
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/allowed_recipients/view:
post:
tags:
- ALLOWED RECIPIENTS
summary: View allowed recipients
description: Returns the email addresses and domain names on your Allowed Recipients list.
operationId: view-allowed-recipients
requestBody:
content:
application/json:
schema:
type: object
required: []
properties:
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: List of Allowed Recipients
content:
application/json:
examples:
Example:
value:
request_id: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
allowed_recipients:
- test@test.com
enabled: true
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
type: object
required:
- allowed_recipients
- enabled
properties:
allowed_recipients:
type: array
description: A list of email addresses and domain names
items:
type: string
example: test-person@example.com
enabled:
type: boolean
description: A flag indicating if this list is taken into account when sending
example: true
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/allowed_senders/add:
post:
tags:
- ALLOWED SENDERS
summary: Add allowed senders
description: Add one or more email addresses and domain names to your Allowed or Restricted Senders List. How this list of email addresses and domain names are used is shown by the current 'mode' value; if the Restrict Senders setting is on, they will form either a whitelist or blacklist. If the setting is off, the list will be disabled. Further details of the associated setting are found in the SMTP2GO Guides. Details of how this mode can be set via the update end-point, are given further in the documentation. A post to this endpoint will return a success, even if the Restrict Senders setting is not in use.
operationId: add-allowed-senders
requestBody:
content:
application/json:
schema:
type: object
required:
- allowed_senders
properties:
allowed_senders:
type: array
description: Array of email addresses and domain names.
default:
- test-person@example.com
- other@example.com
items:
type: string
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Allowed Senders list updated
content:
application/json:
examples:
Example:
value:
request_id: b8f3c2b4-63ca-11ed-b66a-f23c9216ce11
data:
allowed_senders:
- test@test.com
mode: disabled
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
type: object
required:
- allowed_senders
- mode
properties:
allowed_senders:
type: array
description: A list of email addresses and domain names
items:
type: string
example: test-person@example.com
mode:
type: string
description: A string indicating how the list of email address and domain names is interpreted.
example: whitelist
enum:
- whitelist
- blacklist
- disabled
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/allowed_senders/remove:
post:
tags:
- ALLOWED SENDERS
summary: Remove allowed senders
description: 'Remove one or more emails addresses or domain names stored in your Allowed or Restricted Senders List. Note: In the event that any of the email addresses or domains do not feature in the list, no error will be raised.'
operationId: remove-allowed-senders
requestBody:
content:
application/json:
schema:
type: object
required:
- allowed_senders
properties:
allowed_senders:
type: array
description: Array of email addresses and domain names to remove.
default:
- test-person@example.com
items:
type: string
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Allowed Sender Removed
content:
application/json:
examples:
Example:
value:
request_id: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
allowed_senders:
- test-person@example.com
mode: disabled
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
type: object
required:
- allowed_senders
- mode
properties:
allowed_senders:
type: array
description: A list of email addresses and domain names
items:
type: string
example: test-person@example.com
mode:
type: string
description: A string indicating how the list of email address and domain names is interpreted.
example: whitelist
enum:
- whitelist
- blacklist
- disabled
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/allowed_senders/update:
post:
tags:
- ALLOWED SENDERS
summary: Update allowed senders
description: Replace the email addresses and domain names on your Allowed or Restricted Senders List using this endpoint. How the email addresses and domain names are used is defined in the current 'mode' value - further details of these modes are found in the SMPT2GO Guides. Note that a post to this endpoint will return a success, even if the setting is not in use.
operationId: update-allowed-senders
requestBody:
content:
application/json:
schema:
type: object
required:
- allowed_senders
- mode
properties:
allowed_senders:
type: array
description: Array of email addresses and domain names.
default:
- test-person@example.com
- other@example.com
items:
type: string
mode:
type: string
description: A string indicating how the list of email address and domain names is interpreted. and should be one of 'whitelist', 'blacklist' or 'disabled'.
Warning: Changing the mode to 'whitelist' or 'blacklist' disables the 'Sender Domains' and 'Single Sender Emails' features.
default: whitelist
enum:
- whitelist
- blacklist
- disabled
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Allowed Senders list updated
content:
application/json:
examples:
Example:
value:
request_id: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
allowed_senders:
- test-person@example.com
- otherexample.com
mode: whitelist
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
type: object
required:
- allowed_senders
- mode
properties:
allowed_senders:
type: array
description: A list of email addresses and domain names
items:
type: string
example: test-person@example.com
mode:
type: string
description: A string indicating how the list of email address and domain names is interpreted.
example: whitelist
enum:
- whitelist
- blacklist
- disabled
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/allowed_senders/view:
post:
tags:
- ALLOWED SENDERS
summary: View allowed senders
description: Returns the email addresses and domain names on your Allowed or Restricted Senders list, as well as the Restrict Senders setting, which dictates how they are interpreted.
operationId: view-allowed-senders
requestBody:
content:
application/json:
schema:
type: object
required: []
properties:
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: List of Allowed Senders
content:
application/json:
examples:
Example:
value:
request_id: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
allowed_senders:
- test@test.com
mode: disabled
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
data:
type: object
required:
- allowed_senders
- mode
properties:
allowed_senders:
type: array
description: A list of email addresses and domain names
items:
type: string
example: test-person@example.com
mode:
type: string
description: A string indicating how the list of email address and domain names is interpreted.
example: whitelist
enum:
- whitelist
- blacklist
- disabled
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/api_keys/add:
post:
tags:
- API KEYS
summary: Add a new API key
description: Add a new API key to your account
This endpoint is rate-limited to 5 requests per minute.
operationId: add-api-key
requestBody:
content:
application/json:
schema:
type: object
properties:
description:
type: string
description: A comment or description of your new API key
example: test api key
custom_ratelimit:
type: boolean
description: If true, a custom rate limit will be enabled for this user, and defined by the custom_ratelimit_value and custom_ratelimit_period.
custom_ratelimit_value:
type: integer
description: If passed, defines the limit of emails this user can send in the period specified in custom_ratelimit_period.
Note: Only stores this value if custom_ratelimit is true.
custom_ratelimit_period:
type: string
example: 0:30:00
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
ip_pool:
type: integer
description: If passed, any emails sent with this API key will use dedicated IP's in this IP Pool, This value can be found on the /v3/dedicated_ips/view endpoint.
example: 1234
feedback_enabled:
type: boolean
description: If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings.
default: false
feedback_html:
type: string
description: The HTML content to insert into the custom feedback email body via the unsubscribe footer.
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
example: test_html
default: ''
feedback_text:
type: string
description: The text content to insert into the custom feedback email body via the unsubscribe footer.
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
example: test_text
default: ''
open_tracking_enabled:
type: boolean
description: If true, open tracking will be enabled for this API key.
default: false
click_tracking_enabled:
type: boolean
description: If true, click tracking will be enabled for this API key.
default: false
archive_enabled:
type: boolean
description: If true, archiving (available on paid plans) will be enabled for this API key.
default: false
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this API key.
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account.
default: from
status:
type: string
description: The initial status of the API key, one of ['allowed', 'blocked', 'sandbox'].
default: allowed
endpoints:
type: array
description: 'An array of endpoints that this API key will be allowed to use.
The endpoints passed must be a subset of the endpoints allowed by the API key making this call.
A full list of endpoints can be found in the app under Sending->API Keys->Permissions or programatically via the API here.
We also accept wildcard patterns, for example to allow access to all email endpoints you can pass ["/email/*"].
To allow access to every endpoint simply pass "endpoints": ["*"]'
default:
- /email/send
items:
type: string
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Successfully added API key
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
- api_key: api-00000000000000000000000000000000
description: test api key
feedback_enabled: true
feedback_html: test_html
feedback_text: test_text
ippool: 1234
bounce_notifications: from
status: allowed
endpoints:
- /email/send
schema:
type: object
required:
- data
- request_id
properties:
data:
type: array
description: An array of API key results
items:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
properties:
api_key:
type: string
example: api-00000000000000000000000000000000
description: The new API key used to query the API.
username:
type: string
example: api-000000000000
description: A shortened version of the API key which can be used to correlate data with some other API calls that also feature username.
description:
type: string
description: A comment or description of the API key.
custom_rate_limit:
type: boolean
example: true
default: false
description: If enabled will use the values of custom_ratelimit_value and custom_ratelimit_period for rate limiting.
custom_ratelimit_value:
type: integer
example: 123
description: If passed, defines the limit of emails this API key can send in the period specified in custom_ratelimit_period.
custom_ratelimit_period:
type: string
example: 0:30:00
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
default_ratelimit_value:
type: string
example: 123
description: The default limit of emails this API key can send in the period specified in default_ratelimit_period. Note: Used if custom_ratelimit is false.
default_ratelimit_period:
type: string
example: unlimited
description: 'The default period for which this API key will be limited to the number of emails specified in default_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Used if custom_ratelimit is false.'
ippool:
type: integer
example: 1234
feedback_enabled:
type: boolean
description: If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings.
default: false
feedback_html:
type: string
description: 'The HTML content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
feedback_text:
type: string
description: 'The text content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
open_tracking_enabled:
type: boolean
description: If true, open tracking will be enabled for this API key.
default: false
click_tracking_enabled:
type: boolean
description: If true, click tracking will be enabled for this API key.
default: false
archive_enabled:
type: boolean
description: If true, archiving (available on paid plans) will be enabled for this API key.
default: false
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this API key.
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account.
default: from
status:
type: string
description: The initial status of the API key, one of ['allowed', 'blocked', 'sandbox'].
default: allowed
endpoints:
type: array
description: An array of endpoints that this API key will be allowed to use.
default:
- /email/send
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/api_keys/edit:
post:
tags:
- API KEYS
summary: Edit an API key
description: Edit an existing API key
operationId: edit-api-key
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: string
description: The ID of the existing API key you wish to edit.
example: api-00000000000000000000000000000000
description:
type: string
description: A comment or description of your new API key
example: test api key
custom_ratelimit:
type: boolean
description: If true, a custom rate limit will be enabled for this user, and defined by the custom_ratelimit_value and custom_ratelimit_period.
custom_ratelimit_value:
type: integer
description: If passed, defines the limit of emails this user can send in the period specified in custom_ratelimit_period.
Note: Only stores this value if custom_ratelimit is true.
custom_ratelimit_period:
type: string
example: 0:30:00
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
ip_pool:
type: integer
description: If passed, any emails sent with this API key will use dedicated IP's in this IP Pool, This value can be found on the /v3/dedicated_ips/view endpoint.
example: 1234
feedback_enabled:
type: boolean
description: If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings.
default: false
feedback_html:
type: string
description: The HTML content to insert into the custom feedback email body via the unsubscribe footer.
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
example: test_html
default: ''
feedback_text:
type: string
description: The text content to insert into the custom feedback email body via the unsubscribe footer.
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
example: test_text
default: ''
open_tracking_enabled:
type: boolean
description: If true, open tracking will be enabled for this API key.
default: false
click_tracking_enabled:
type: boolean
description: If true, click tracking will be enabled for this API key.
default: false
archive_enabled:
type: boolean
description: If true, archiving (available on paid plans) will be enabled for this API key.
default: false
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this API key.
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account.
default: from
status:
type: string
description: The initial status of the API key, one of ['allowed', 'blocked', 'sandbox'].
default: allowed
endpoints:
type: array
description: 'An array of endpoints that this API key will be allowed to use.
Any additional endpoints passed must be a subset of the endpoints allowed by the API key making this call.
A full list of endpoints can be found in the app under Sending->API Keys->Permissions or programatically via the API here.
We also accept wildcard patterns, for example to allow access to all email endpoints you can pass ["/email/*"].
To allow access to every endpoint simply pass "endpoints": ["*"]'
default:
- /email/send
items:
type: string
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Successfully edited API key
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
- api_key: api-000000000000********************
description: test api key
feedback_enabled: true
feedback_html: test_html
feedback_text: test_text
ippool: 1234
bounce_notifications: from
status: allowed
endpoints:
- /email/send
schema:
type: object
required:
- data
- request_id
properties:
data:
type: array
description: An array of API key results
items:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
properties:
api_key:
type: string
example: api-000000000000********************
description: The API key used to query the API (masked)
username:
type: string
example: api-000000000000
description: A shortened version of the API key which can be used to correlate data with some other API calls that also feature username.
description:
type: string
description: A comment or description of the API key.
custom_rate_limit:
type: boolean
example: true
default: false
description: If enabled will use the values of custom_ratelimit_value and custom_ratelimit_period for rate limiting.
custom_ratelimit_value:
type: integer
example: 123
description: If passed, defines the limit of emails this API key can send in the period specified in custom_ratelimit_period.
custom_ratelimit_period:
type: string
example: 0:30:00
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
default_ratelimit_value:
type: string
example: 123
description: The default limit of emails this API key can send in the period specified in default_ratelimit_period. Note: Used if custom_ratelimit is false.
default_ratelimit_period:
type: string
example: unlimited
description: 'The default period for which this API key will be limited to the number of emails specified in default_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Used if custom_ratelimit is false.'
ippool:
type: integer
example: 1234
feedback_enabled:
type: boolean
description: If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings.
default: false
feedback_html:
type: string
description: 'The HTML content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
feedback_text:
type: string
description: 'The text content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
open_tracking_enabled:
type: boolean
description: If true, open tracking will be enabled for this API key.
default: false
click_tracking_enabled:
type: boolean
description: If true, click tracking will be enabled for this API key.
default: false
archive_enabled:
type: boolean
description: If true, archiving (available on paid plans) will be enabled for this API key.
default: false
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this API key.
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account.
default: from
status:
type: string
description: The initial status of the API key, one of ['allowed', 'blocked', 'sandbox'].
default: allowed
endpoints:
type: array
description: An array of endpoints that this API key will be allowed to use.
default:
- /email/send
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
patch:
tags:
- API KEYS
summary: Patch an API key
description: Patch an existing API key ignoring missing properties
operationId: patch-api-key
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: string
description: The ID of the existing API key you wish to edit.
example: api-00000000000000000000000000000000
description:
type: string
description: A comment or description of your new API key
example: test api key
custom_ratelimit:
type: boolean
description: If true, a custom rate limit will be enabled for this user, and defined by the custom_ratelimit_value and custom_ratelimit_period.
custom_ratelimit_value:
type: integer
description: If passed, defines the limit of emails this user can send in the period specified in custom_ratelimit_period.
Note: Only stores this value if custom_ratelimit is true.
custom_ratelimit_period:
type: string
example: 0:30:00
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
ip_pool:
type: integer
description: If passed, any emails sent with this API key will use dedicated IP's in this IP Pool, This value can be found on the /v3/dedicated_ips/view endpoint.
example: 1234
feedback_enabled:
type: boolean
description: If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings.
default: null
feedback_html:
type: string
description: The HTML content to insert into the custom feedback email body via the unsubscribe footer.
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
example: test_html
default: null
feedback_text:
type: string
description: The text content to insert into the custom feedback email body via the unsubscribe footer.
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
example: test_text
default: null
open_tracking_enabled:
type: boolean
description: If true, open tracking will be enabled for this API key.
default: null
click_tracking_enabled:
type: boolean
description: If true, click tracking will be enabled for this API key.
default: null
archive_enabled:
type: boolean
description: If true, archiving (available on paid plans) will be enabled for this API key.
default: null
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this API key.
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account.
default: null
status:
type: string
description: The initial status of the API key, one of ['allowed', 'blocked', 'sandbox'].
default: null
endpoints:
type: array
description: 'An array of endpoints that this API key will be allowed to use.
Any additional endpoints passed must be a subset of the endpoints allowed by the API key making this call.
A full list of endpoints can be found in the app under Sending->API Keys->Permissions or programatically via the API here.
We also accept wildcard patterns, for example to allow access to all email endpoints you can pass ["/email/*"].
To allow access to every endpoint simply pass "endpoints": ["*"]'
default: null
items:
type: string
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Successfully patched API key
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
- api_key: api-000000000000********************
description: test api key
feedback_enabled: true
feedback_html: test_html
feedback_text: test_text
ippool: 1234
bounce_notifications: from
status: allowed
endpoints:
- /email/send
schema:
type: object
required:
- data
- request_id
properties:
data:
type: array
description: An array of API key results
items:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
properties:
api_key:
type: string
example: api-000000000000********************
description: The API key used to query the API (masked)
username:
type: string
example: api-000000000000
description: A shortened version of the API key which can be used to correlate data with some other API calls that also feature username.
description:
type: string
description: A comment or description of the API key.
custom_rate_limit:
type: boolean
example: true
default: false
description: If enabled will use the values of custom_ratelimit_value and custom_ratelimit_period for rate limiting.
custom_ratelimit_value:
type: integer
example: 123
description: If passed, defines the limit of emails this API key can send in the period specified in custom_ratelimit_period.
custom_ratelimit_period:
type: string
example: 0:30:00
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
default_ratelimit_value:
type: string
example: 123
description: The default limit of emails this API key can send in the period specified in default_ratelimit_period. Note: Used if custom_ratelimit is false.
default_ratelimit_period:
type: string
example: unlimited
description: 'The default period for which this API key will be limited to the number of emails specified in default_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Used if custom_ratelimit is false.'
ippool:
type: integer
example: 1234
feedback_enabled:
type: boolean
description: If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings.
default: false
feedback_html:
type: string
description: 'The HTML content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
feedback_text:
type: string
description: 'The text content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
open_tracking_enabled:
type: boolean
description: If true, open tracking will be enabled for this API key.
default: false
click_tracking_enabled:
type: boolean
description: If true, click tracking will be enabled for this API key.
default: false
archive_enabled:
type: boolean
description: If true, archiving (available on paid plans) will be enabled for this API key.
default: false
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this API key.
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account.
default: from
status:
type: string
description: The initial status of the API key, one of ['allowed', 'blocked', 'sandbox'].
default: allowed
endpoints:
type: array
description: An array of endpoints that this API key will be allowed to use.
default:
- /email/send
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/api_keys/permissions:
post:
tags:
- API KEYS
summary: View Permissions
description: Retrieve a list of endpoints this API Key can use. This endpoint is available to all API Keys.
operationId: view-api-key-permissions
requestBody:
content:
application/json:
schema:
type: object
properties: {}
responses:
'200':
description: Successfully retrieved API key permissions
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
- /email/send
- /api_keys/view
schema:
type: object
required:
- data
- request_id
properties:
data:
type: array
description: An array of API key results
items:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: array
items:
type: string
request_id:
type: string
example:
- /email/send
- /api_keys/view
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/api_keys/remove:
post:
tags:
- API KEYS
summary: Remove an API key
description: Remove an existing API key
operationId: remove-api-key
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: string
description: The ID of the existing API key you wish to remove.
example: api-00000000000000000000000000000000
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Successfully removed API key
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/api_keys/view:
post:
tags:
- API KEYS
summary: View API Keys
description: Retrieve a list of API keys on this account
operationId: view-api-keys
requestBody:
content:
application/json:
schema:
type: object
properties:
id:
type: string
description: A full API key to retrieve the information for.
search:
type: string
description: A search keyword used to refine the results.
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Successfully retrieved API keys
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
- api_key: api-000000000000********************
description: test api key again
feedback_enabled: true
feedback_html: test_html
feedback_text: test_text
ippool: 1234
bounce_notifications: from
status: allowed
endpoints:
- /email/send
schema:
type: object
required:
- data
- request_id
properties:
data:
type: array
description: An array of API key results
items:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
properties:
api_key:
type: string
example: api-000000000000********************
description: The masked API key.
username:
type: string
example: api-000000000000
description: A shortened version of the API key which can be used to correlate data with some other API calls that also feature username.
description:
type: string
description: A comment or description of the API key.
custom_rate_limit:
type: boolean
example: true
default: false
description: If enabled will use the values of custom_ratelimit_value and custom_ratelimit_period for rate limiting.
custom_ratelimit_value:
type: integer
example: 123
description: If passed, defines the limit of emails this API key can send in the period specified in custom_ratelimit_period.
custom_ratelimit_period:
type: string
example: 0:30:00
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
default_ratelimit_value:
type: string
example: 123
description: The default limit of emails this API key can send in the period specified in default_ratelimit_period. Note: Used if custom_ratelimit is false.
default_ratelimit_period:
type: string
example: unlimited
description: 'The default period for which this API key will be limited to the number of emails specified in default_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Used if custom_ratelimit is false.'
ippool:
type: integer
example: 1234
feedback_enabled:
type: boolean
description: If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings.
default: false
feedback_html:
type: string
description: 'The HTML content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
feedback_text:
type: string
description: 'The text content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
open_tracking_enabled:
type: boolean
description: If true, open tracking will be enabled for this API key.
default: false
click_tracking_enabled:
type: boolean
description: If true, click tracking will be enabled for this API key.
default: false
archive_enabled:
type: boolean
description: If true, archiving (available on paid plans) will be enabled for this API key.
default: false
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this API key.
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account.
default: from
status:
type: string
description: The initial status of the API key, one of ['allowed', 'blocked', 'sandbox'].
default: allowed
endpoints:
type: array
description: An array of endpoints that this API key will be allowed to use.
default:
- /email/send
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/archive/email:
post:
tags:
- EMAIL ARCHIVE
summary: View an archived email
description: Fetch an archived email using the email_id
operationId: view-an-archived-email
requestBody:
content:
application/json:
schema:
type: object
required:
- email_id
properties:
email_id:
type: string
description: The unique email_id of the archived email you wish to retrieve
example: 1u0SwL-B9zBpi9ffUq-JAB2
responses:
'200':
description: Archived email
content:
application/json:
examples:
Result:
value:
request_id: 13dd3376-40fa-11ec-9fc6-f23c9216bf47
data:
attachment_count: 0
attachments: []
byte_count: 1428
email_id: 1u0SwL-B9zBpi9ffUq-JAB2
envelope_from: test@test.com
headers: '...'
recipient: test@test.com
sender: test@test.com
sent: '2021-10-19T21:35:40Z'
subject: test
to: test@test.com
url: '...'
username: api-12345678
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 13dd3376-40fa-11ec-9fc6-f23c9216bf47
data:
type: object
properties:
attachment_count:
type: integer
example: 0
default: 0
attachments:
type: array
byte_count:
type: integer
example: 1428
default: 0
email_id:
type: string
example: 1u0SwL-B9zBpi9ffUq-JAB2
envelope_from:
type: string
example: test@test.com
headers:
type: string
example: '...'
recipient:
type: string
example: test@test.com
sender:
type: string
example: test@test.com
sent:
type: string
example: '2021-10-19T21:35:40Z'
subject:
type: string
example: test
to:
type: string
example: test@test.com
url:
type: string
example: '...'
username:
type: string
example: api-12345678
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/archive/search:
post:
tags:
- EMAIL ARCHIVE
summary: Search archived content
description: Retrieve a list of up to 5,000 archived emails matching the supplied parameters.
operationId: search-archived-pages
requestBody:
content:
application/json:
schema:
type: object
properties:
start_date:
type: string
description: ISO-8601 formatted datetime which defaults to current date at midnight. The range will be inclusive of start_date and exclusive of end_date. Timezone is UTC.
end_date:
type: string
description: ISO-8601 formatted datetime which defaults to now. Timezone is UTC.
limit:
type: integer
description: 'The maximum number of emails to return (Default: 5,000)'
format: int32
username:
type: string
description: If passed, only return email details sent by this user
recipient:
type: string
description: If passed, only return emails with this recipient
sender:
type: string
description: If passed, only return emails with this sender
envelope_from:
type: string
description: If passed, only return emails with this envelope_from
subject:
type: string
description: If passed, only return emails with this subject
headers:
type: string
description: If passed, only return emails with this substring in the headers
continue_token:
type: string
description: If passed, will continue the previous search if too many results were found.
responses:
'200':
description: List of archived emails
content:
application/json:
examples:
Result:
value:
request_id: 6eb05270-40f9-11ec-9649-f23c9216bfca
data:
email_count: 1
emails:
- attachment_count: 0
attachments: []
byte_count: 1422
email_id: 1u0SwL-B9zBpi9ffUq-JAB2
envelope_from: test@test.com
headers: '...'
recipient: test@test.com
sender: test@test.com
sent: '2021-11-08T18:58:47Z'
subject: test
to: test@test.com
url: '...'
username: api-12345678
schema:
type: object
required:
- data
- request_id
properties:
data:
type: object
required:
- email_count
- emails
properties:
email_count:
type: integer
example: 1
default: 0
emails:
type: array
items:
type: object
required:
- attachment_count
- attachments
- byte_count
- email_id
- envelope_from
- headers
- recipient
- sender
- sent
- subject
- to
- url
- username
properties:
attachment_count:
type: integer
example: 0
default: 0
attachments:
type: array
byte_count:
type: integer
example: 1422
default: 0
email_id:
type: string
example: 1u0SwL-B9zBpi9ffUq-JAB2
envelope_from:
type: string
example: test@test.com
headers:
type: string
example: '...'
recipient:
type: string
example: test@test.com
sender:
type: string
example: test@test.com
sent:
type: string
example: '2021-11-08T18:58:47Z'
subject:
type: string
example: test
to:
type: string
example: test@test.com
url:
type: string
example: https://api.smtp2go.com/archive-attachment/...
description: A url that can be used to download the original email
username:
type: string
example: api-12345678
request_id:
type: string
example: 6eb05270-40f9-11ec-9649-f23c9216bfca
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/dedicated_ips/view:
post:
tags:
- DEDICATED IPS
summary: View Dedicated IP Addresses
description: Retrieve a list of Dedicated IP addresses on this account
operationId: view-dedicated-ips
responses:
'200':
description: Successfully retrieved Dedicated IP addresses
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
- id: 1234
name: Main Pool
ip_addresses:
- 127.0.0.1
schema:
type: object
required:
- data
- request_id
properties:
data:
type: array
items:
type: object
properties:
id:
type: integer
description: The id of the pool
example: '1234'
name:
type: string
description: The name of the pool
example: Main Pool
ip_addresses:
type: array
description: A list of dedicated IP addresses assigned to this pool
items:
description: A dedicated IP address
example: 127.0.0.1
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/domain/add:
post:
tags:
- SENDER DOMAINS
summary: Add a sender domain
description: Add a sender domain to your account. Note that you must own any domains you wish to include in this list, as you will be required to verify and authenticate the emails sent via that domain. Find full details in the Sender Domains Guide.
operationId: add-sender-domain
requestBody:
content:
application/json:
schema:
type: object
required:
- domain
properties:
domain:
type: string
description: Domain to add as a sender domain
tracking_subdomain:
type: string
description: An optional subdomain used for click or open tracking and unsubscribe links
returnpath_subdomain:
type: string
description: An optional subdomain to use as a return-path subdomain
auto_verify:
type: boolean
description: If true, verify the domain now removing the need to call the 'domain/verify' endpoint or wait for the periodic verification every 7 minutes.
Note: In order to successfully complete the verification, the 'tracking_subdomain' and 'returnpath_subdomain' must be configured in the domain DNS and propagated.
default: true
requisition_ssl:
type: boolean
description: If true, requisition an SSL certificate for the tracking domain once verification is complete
default: true
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
subaccount_access:
type: object
description: Allow subaccounts to send from verified sender domains on the master account
properties:
subaccounts:
type: array
description: A list of subaccount_ids to be given access. ID's can be found by querying /subaccounts/search
future_subaccounts:
type: boolean
description: If set to true, will automatically add any new subaccounts to the access list
responses:
'200':
description: Domain added
content:
application/json:
examples:
Result:
value:
request_id: e023461c-8c86-11e9-b984-408d5cce2644
data:
domains:
- domain:
fulldomain: example.com
subdomain: null
domain: example
suffix: com
dkim_selector: s123456
dkim_verified: true
dkim_status: ''
dkim_value: dkim.smtp2go.net
rpath_selector: em123456
rpath_verified: true
rpath_status: ''
rpath_value: return.smtp2go.net
setup_link:
trackers:
- fulldomain: link.example.com
subdomain: link
domain: example
suffix: com
cname_verified: false
cname_status: ''
cname_value: ''
enabled: false
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: e023461c-8c86-11e9-b984-408d5cce2644
data:
type: object
required:
- domains
properties:
domains:
type: array
items:
type: object
properties:
domain:
type: object
required:
- dkim_value
- domain
- suffix
- rpath_status
- rpath_value
- dkim_status
- subdomain
- fulldomain
- dkim_selector
- setup_link
properties:
dkim_value:
type: string
example: dkim.smtp2go.net
domain:
type: string
example: example
suffix:
type: string
example: com
rpath_selector:
type: string
example: ''
rpath_status:
type: string
example: ''
rpath_verified:
type: boolean
example: true
default: true
rpath_value:
type: string
example: return.smtp2go.net
dkim_status:
type: string
example: ''
dkim_verified:
type: boolean
example: true
default: true
subdomain: {}
fulldomain:
type: string
example: example.com
dkim_selector:
type: string
example: s123456
setup_link:
type: string
description: A URL that can be used to automate DNS additions
trackers:
type: array
items:
type: object
required:
- cname_value
- cname_status
properties:
cname_value:
type: string
example: ''
cname_status:
type: string
example: ''
cname_verified:
type: boolean
example: false
default: true
domain:
type: string
example: example
suffix:
type: string
example: com
subdomain:
type: string
example: link
enabled:
type: boolean
example: false
default: true
fulldomain:
type: string
example: link.example.com
subaccount_access:
type: object
properties:
subaccounts:
type: array
description: A list of subaccount IDs that were given access the sender domain.
future_subaccounts:
type: boolean
description: If true, any new subaccounts added will automatically be given access.
default: false
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/domain/remove:
post:
tags:
- SENDER DOMAINS
summary: Remove a sender domain
description: Remove a sender domain from your account
operationId: remove-sender-domain
requestBody:
content:
application/json:
schema:
type: object
required:
- domain
properties:
domain:
type: string
description: Sender Domain to delete.
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Sender domain removed
content:
application/json:
examples:
Result:
value:
request_id: 117607da-8c88-11e9-96fa-408d5cce2644
data:
domains: []
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: e023461c-8c86-11e9-b984-408d5cce2644
data:
type: object
required:
- domains
properties:
domains:
type: array
items:
type: object
properties:
domain:
type: object
required:
- dkim_value
- domain
- suffix
- rpath_status
- rpath_value
- dkim_status
- subdomain
- fulldomain
- dkim_selector
properties:
dkim_value:
type: string
example: dkim.smtp2go.net
domain:
type: string
example: example
suffix:
type: string
example: com
rpath_selector:
type: string
example: ''
rpath_status:
type: string
example: ''
rpath_verified:
type: boolean
example: true
default: true
rpath_value:
type: string
example: return.smtp2go.net
dkim_status:
type: string
example: ''
dkim_verified:
type: boolean
example: true
default: true
subdomain: {}
fulldomain:
type: string
example: example.com
dkim_selector:
type: string
example: s123456
trackers:
type: array
items:
type: object
required:
- cname_value
- cname_status
properties:
cname_value:
type: string
example: ''
cname_status:
type: string
example: ''
cname_verified:
type: boolean
example: false
default: true
domain:
type: string
example: example
suffix:
type: string
example: com
subdomain:
type: string
example: link
enabled:
type: boolean
example: false
default: true
fulldomain:
type: string
example: link.example.com
subaccount_access:
type: object
properties:
subaccounts:
type: array
description: A list of subaccount IDs that were given access the sender domain.
future_subaccounts:
type: boolean
description: If true, any new subaccounts added will automatically be given access.
default: false
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/domain/returnpath:
post:
tags:
- SENDER DOMAINS
summary: Edit the return-path subdomain
description: A Return Path Subdomain is used to instruct the server where to return emails that are not deliverable (ie. Bounces). This endpoint allows you to edit a Return Path Subdomain for a particular sender domain. Full details can be found in the Sender Domain Guide.
operationId: edit-return-path-domain
requestBody:
content:
application/json:
schema:
type: object
required:
- domain
- old_subdomain
- new_subdomain
properties:
domain:
type: string
description: The sender domain to edit the return-path subdomain for
old_subdomain:
type: string
description: The domains old return-path subdomain
default: returns
new_subdomain:
type: string
description: The domains new return-path subdomain
default: return
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Return-path subdomain edited
content:
application/json:
examples:
Result:
value:
request_id: 86758976-934b-11e7-b5be-480fcf01a6f2
data:
domains:
- domain:
fulldomain: example.com
subdomain: null
domain: example
suffix: com
dkim_selector: s123456
dkim_verified: true
dkim_status: ''
dkim_value: dkim.smtp2go.net
rpath_selector: returns
rpath_verified: true
rpath_status: ''
rpath_value: return.smtp2go.net
trackers:
- fulldomain: link.example.co.uk
subdomain: link
domain: example
suffix: co.uk
cname_verified: false
cname_status: 'Lookup CNAME(link.example.co.uk.) on ns1.falcoda.net returned no results
Lookup CNAME(link.example.co.uk.) on ns1.falcoda.net returned no results
Lookup CNAME(link.example.co.uk.) on ns2.falcoda.net returned no results
Lookup CNAME(link.example.co.uk.) on ns2.falcoda.net returned no results'
cname_value: ''
enabled: false
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: e023461c-8c86-11e9-b984-408d5cce2644
data:
type: object
required:
- domains
properties:
domains:
type: array
items:
type: object
properties:
domain:
type: object
required:
- dkim_value
- domain
- suffix
- rpath_status
- rpath_value
- dkim_status
- subdomain
- fulldomain
- dkim_selector
properties:
dkim_value:
type: string
example: dkim.smtp2go.net
domain:
type: string
example: example
suffix:
type: string
example: com
rpath_selector:
type: string
example: ''
rpath_status:
type: string
example: ''
rpath_verified:
type: boolean
example: true
default: true
rpath_value:
type: string
example: return.smtp2go.net
dkim_status:
type: string
example: ''
dkim_verified:
type: boolean
example: true
default: true
subdomain: {}
fulldomain:
type: string
example: example.com
dkim_selector:
type: string
example: s123456
trackers:
type: array
items:
type: object
required:
- cname_value
- cname_status
properties:
cname_value:
type: string
example: ''
cname_status:
type: string
example: ''
cname_verified:
type: boolean
example: false
default: true
domain:
type: string
example: example
suffix:
type: string
example: com
subdomain:
type: string
example: link
enabled:
type: boolean
example: false
default: true
fulldomain:
type: string
example: link.example.com
subaccount_access:
type: object
properties:
subaccounts:
type: array
description: A list of subaccount IDs that were given access the sender domain.
future_subaccounts:
type: boolean
description: If true, any new subaccounts added will automatically be given access.
default: false
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/domain/subaccount_access:
post:
tags:
- SENDER DOMAINS
summary: Edit subaccount access
description: Allow subaccounts to send from verified sender domains on the master account.
operationId: edit-subaccount-access
requestBody:
content:
application/json:
schema:
type: object
required:
- domain
- subaccounts
properties:
domain:
type: string
description: The sender domain to edit subaccount access for
subaccounts:
type: array
description: A list of subaccount_ids to be given access. ID's can be found by querying /subaccounts/search
future_subaccounts:
type: boolean
description: If set to true, will automatically add any new subaccounts to the access list
default: false
responses:
'200':
description: Subaccount access updated
content:
application/json:
schema:
type: object
properties:
domain:
type: string
description: The sender domain that was modified.
subaccounts:
type: array
description: A list of subaccount IDs that were given access the sender domain.
future_subaccounts:
type: boolean
description: If true, any new subaccounts added will automatically be given access.
examples:
Result:
value:
request_id: 6d4706c4-54c9-483d-b141-4f16a9c26879
data:
domain: my-verified-domain.com
subaccounts: []
future_subaccounts: false
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/domain/tracking:
post:
tags:
- SENDER DOMAINS
summary: Edit the tracking subdomain
description: A Tracking Subdomain is used to monitor your email opens and clicks. This endpoint allows you to edit a tracking subdomain for a particular sender domain. Full details can be found in the Sender Domain Guide.
operationId: edit-tracking-domain
requestBody:
content:
application/json:
schema:
type: object
required:
- domain
- old_subdomain
- new_subdomain
properties:
domain:
type: string
description: The sender domain to edit the tracking subdomain for
default: null
old_subdomain:
type: string
description: The domains old tracking subdomain
default: track
new_subdomain:
type: string
description: The domains new tracking subdomain
default: link
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Tracking subdomain edited
content:
application/json:
examples:
Result:
value:
request_id: 86758976-934b-11e7-b5be-480fcf01a6f2
data:
domains:
- domain:
fulldomain: exampledomain.com
subdomain: ''
domain: exampledomain
suffix: com
dkim_selector: s123456
dkim_verified: true
dkim_status: ''
dkim_value: dkim.smtp2go.net
rpath_selector: em744766
rpath_verified: true
rpath_status: ''
rpath_value: return.smtp2go.net
trackers:
- fulldomain: newsubdomain.exampledomain.com
subdomain: newsubdomain
domain: exampledomain
suffix: com
cname_verified: true
cname_status: ''
cname_value: track.smtp2go.com
enabled: true
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: e023461c-8c86-11e9-b984-408d5cce2644
data:
type: object
required:
- domains
properties:
domains:
type: array
items:
type: object
properties:
domain:
type: object
required:
- dkim_value
- domain
- suffix
- rpath_status
- rpath_value
- dkim_status
- subdomain
- fulldomain
- dkim_selector
properties:
dkim_value:
type: string
example: dkim.smtp2go.net
domain:
type: string
example: example
suffix:
type: string
example: com
rpath_selector:
type: string
example: ''
rpath_status:
type: string
example: ''
rpath_verified:
type: boolean
example: true
default: true
rpath_value:
type: string
example: return.smtp2go.net
dkim_status:
type: string
example: ''
dkim_verified:
type: boolean
example: true
default: true
subdomain: {}
fulldomain:
type: string
example: example.com
dkim_selector:
type: string
example: s123456
trackers:
type: array
items:
type: object
required:
- cname_value
- cname_status
properties:
cname_value:
type: string
example: ''
cname_status:
type: string
example: ''
cname_verified:
type: boolean
example: false
default: true
domain:
type: string
example: example
suffix:
type: string
example: com
subdomain:
type: string
example: link
enabled:
type: boolean
example: false
default: true
fulldomain:
type: string
example: link.example.com
subaccount_access:
type: object
properties:
subaccounts:
type: array
description: A list of subaccount IDs that were given access the sender domain.
future_subaccounts:
type: boolean
description: If true, any new subaccounts added will automatically be given access.
default: false
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/domain/verify:
post:
tags:
- SENDER DOMAINS
summary: Verify a sender domain
description: Verify a sender domain on your account removing the need to wait for the periodic verification every 7 minutes.
operationId: verify-a-sender-domain
requestBody:
content:
application/json:
schema:
type: object
required:
- domain
properties:
domain:
type: string
description: Domain to attempt verification for
requisition_ssl:
type: boolean
description: If true, requisition an SSL certificate for the tracking domain once verification is complete
default: true
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Sender domain verification
content:
application/json:
examples:
Result:
value:
request_id: e023461c-8c86-11e9-b984-408d5cce2644
data:
domains:
- domain:
fulldomain: example.com
subdomain: null
domain: example
suffix: com
dkim_selector: s123456
dkim_verified: true
dkim_status: ''
dkim_value: dkim.smtp2go.net
rpath_selector: em744766
rpath_verified: true
rpath_status: ''
rpath_value: return.smtp2go.net
setup_link:
trackers:
- fulldomain: link.example.com
subdomain: link
domain: example
suffix: com
cname_verified: false
cname_status: ''
cname_value: track.smtp2go.net
enabled: false
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: e023461c-8c86-11e9-b984-408d5cce2644
data:
type: object
required:
- domains
properties:
domains:
type: array
items:
type: object
properties:
domain:
type: object
required:
- dkim_value
- domain
- suffix
- rpath_status
- rpath_value
- dkim_status
- subdomain
- fulldomain
- dkim_selector
- setup_link
properties:
dkim_value:
type: string
example: dkim.smtp2go.net
domain:
type: string
example: example
suffix:
type: string
example: com
rpath_selector:
type: string
example: ''
rpath_status:
type: string
example: ''
rpath_verified:
type: boolean
example: true
default: true
rpath_value:
type: string
example: return.smtp2go.net
dkim_status:
type: string
example: ''
dkim_verified:
type: boolean
example: true
default: true
subdomain: {}
fulldomain:
type: string
example: example.com
dkim_selector:
type: string
example: s123456
setup_link:
type: string
description: A URL that can be used to automate DNS additions.
trackers:
type: array
items:
type: object
required:
- cname_value
- cname_status
properties:
cname_value:
type: string
example: ''
cname_status:
type: string
example: ''
cname_verified:
type: boolean
example: false
default: true
domain:
type: string
example: example
suffix:
type: string
example: com
subdomain:
type: string
example: link
enabled:
type: boolean
example: false
default: true
fulldomain:
type: string
example: link.example.com
subaccount_access:
type: object
properties:
subaccounts:
type: array
description: A list of subaccount IDs that were given access the sender domain.
future_subaccounts:
type: boolean
description: If true, any new subaccounts added will automatically be given access.
default: false
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/domain/view:
post:
tags:
- SENDER DOMAINS
summary: View sender domains
description: Returns a list of sender domains on your account
operationId: view-sender-domains
requestBody:
content:
application/json:
schema:
type: object
properties:
domain:
type: string
description: (Optional) If provided, will only retrieve records for this domain
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: List of sender domains
content:
application/json:
examples:
Result:
value:
request_id: e023461c-8c86-11e9-b984-408d5cce2644
data:
domains:
- domain:
fulldomain: example.com
subdomain: null
domain: example
suffix: com
dkim_selector: s123456
dkim_verified: true
dkim_status: ''
dkim_value: dkim.smtp2go.net
rpath_selector: em744766
rpath_verified: true
rpath_status: ''
rpath_value: return.smtp2go.net
setup_link:
trackers:
- fulldomain: link.example.com
subdomain: link
domain: example
suffix: com
cname_verified: true
cname_status: ''
cname_value: track.smtp2go.net
enabled: true
subaccount_access:
subaccounts: []
future_subaccounts: false
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: e023461c-8c86-11e9-b984-408d5cce2644
data:
type: object
required:
- domains
properties:
domains:
type: array
items:
type: object
properties:
from_master:
type: boolean
description: True if this domain is delegated to the subaccount from the master account
domain:
type: object
required:
- dkim_value
- domain
- suffix
- rpath_status
- rpath_value
- dkim_status
- subdomain
- fulldomain
- dkim_selector
properties:
dkim_value:
type: string
example: dkim.smtp2go.net
domain:
type: string
example: example
suffix:
type: string
example: com
rpath_selector:
type: string
example: ''
rpath_status:
type: string
example: ''
rpath_verified:
type: boolean
example: true
default: true
rpath_value:
type: string
example: return.smtp2go.net
dkim_status:
type: string
example: ''
dkim_verified:
type: boolean
example: true
default: true
subdomain: {}
fulldomain:
type: string
example: example.com
dkim_selector:
type: string
example: s123456
setup_link:
type: string
description: A URL that can be used to automate DNS additions (only included if a single domain is returned, otherwise 'unavailable')
trackers:
type: array
items:
type: object
required:
- cname_value
- cname_status
properties:
cname_value:
type: string
example: ''
cname_status:
type: string
example: ''
cname_verified:
type: boolean
example: false
default: true
domain:
type: string
example: example
suffix:
type: string
example: com
subdomain:
type: string
example: link
enabled:
type: boolean
example: false
default: true
fulldomain:
type: string
example: link.example.com
subaccount_access:
type: object
properties:
subaccounts:
type: array
description: A list of subaccount IDs that were given access the sender domain.
future_subaccounts:
type: boolean
description: If true, any new subaccounts added will automatically be given access.
default: false
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/email/batch:
post:
tags:
- EMAILS
summary: Send a batch of emails
description: Send a batch of emails
operationId: send-email-batch
requestBody:
content:
application/json:
schema:
type: object
required:
- emails
example:
emails:
- to:
- Jane Jones
sender: John Smith
subject: 'My Test Email #1'
html_body: Test 
text_body: Test
attachments:
- filename: report.pdf
mimetype: application/pdf
fileblob: bm90IGFjdHVhbGx5IGEgcGRm...
inlines:
- filename: mypicture.jpg
mimetype: image/jpeg
url: https://myserver.com/mypicture.jpg
- to:
- Jane Jones
sender: John Smith
subject: 'My Test Email #2'
html_body: Test 
text_body: Test
attachments:
- filename: report.pdf
mimetype: application/pdf
fileblob: bm90IGFjdHVhbGx5IGEgcGRm...
inlines:
- filename: mypicture.jpg
mimetype: image/jpeg
url: https://myserver.com/mypicture.jpg
schedule: 2026-01-01 12:00:00 +1300
properties:
emails:
type: array
description: An array of email objects to schedule
items:
type: object
required:
- sender
- to
- subject
properties:
sender:
type: string
description: The name and email address to send from, in the format `Name `
to:
type: array
description: An array of names and email addresses (up to 100) to send to, in the format `Name `
items:
type: string
cc:
type: array
description: An array of names and email addresses (up to 100) to CC, in the format `Name `
items:
type: string
bcc:
type: array
description: An array of names and email addresses (up to 100) to BCC, in the format `Name `
items:
type: string
subject:
type: string
description: The subject of the email to be sent
html_body:
type: string
description: 'A HTML encoded email body. Either html_body or text_body is required if template_id is not passed.
Warning:- To correctly track clicking of URLs you must:
- Enable click tracking for the API key
- Insert a full anchor HTML element (not just the URL)
- Include "https://" at the start of the HREF property
'
text_body:
type: string
description: A plain text email body. Either html_body or text_body is required if template_id is not passed
custom_headers:
type: array
description: An array of custom header objects to be applied to the email. For example, a `Reply-To` email can be specified here, with header `Reply-To` and value `name@example.com`. For sending purposes the following headers are not allowed `Content-Type`, `Content-Transfer-Encoding` and `MIME-Version`.
items:
properties:
header:
type: string
description: Custom header to add to the email
value:
type: string
description: Custom header value to set
required:
- header
- value
type: object
attachments:
type: array
description: An array of attachment objects to be attached to the email
items:
properties:
filename:
type: string
description: The filename to use for this binary data
fileblob:
type: string
description: The Base64 encoded binary data of the file. Required if no url is specified.
mimetype:
type: string
description: The mimetype of the binary data
url:
type: string
description: A URL pointing to the attachment data. The data is directly retrieved by our system, and cached for fast re-use for 24 hours. Required if no fileblob is specified
required:
- filename
type: object
inlines:
type: array
description: An array of images to be inlined into the email. Use an image in content as `
`
items:
properties:
filename:
type: string
description: The filename to use for this binary data
fileblob:
type: string
description: The Base64 encoded binary data of the file. Required if no url is specified.
mimetype:
type: string
description: The mimetype of the binary data
url:
type: string
description: A URL pointing to the attachment data. The data is directly retrieved by our system, and cached for fast re-use for 24 hours. Required if no fileblob is specified
required:
- filename
type: object
template_id:
type: string
description: The ID of the template you wish to use
template_data:
type: string
description: 'When a template_id is provided, include the pass-through values in the format `{"variable1": "value1", "variable2": "value2"}`'
format: json
schedule:
type: string
description: A timestamp that when passed allows you to schedule an email for sending. Must be in the future and within the next 3 days.
The api response will include a `schedule_id` property which can then be used alongside webhooks (An `X-Smtp2go-Schedule-Id` header is added to the sent email corresponds to this id). A total of 50,000 emails can be queued at any one time.
responses:
'200':
description: An array of `email_id/schedule_id` values coinciding with the same order as the request payload.
content:
application/json:
examples:
Example:
value:
request_id: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
- email_id: 123456-1234-12
- schedule_id: 188262b6-f6cc-4c98-bbe6-84c39d1c0ef4
schema:
type: object
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: array
description: An array of `email_id/schedule_id` information in the same order as the payload.
items:
type: object
properties:
email_id:
type: string
description: The email_id of the email
schedule_id:
type: string
description: The schedule_id of the email (if `schedule` was passed, used to search/remove scheduled emails)
example:
- email_id: 123456-1234-12
- schedule_id: 188262b6-f6cc-4c98-bbe6-84c39d1c0ef4
- schedule_id: 789db207-5aba-4895-801b-4ebf1843721e
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/email/mime:
post:
tags:
- EMAILS
summary: Send a MIME email
description: Send an email by supplying a pre-encoded MIME string
operationId: send-mime-email
requestBody:
content:
application/json:
example:
mime_email: VG86IHRlc3RAZXhhbXBsZS5jb20KU3ViamVjdDogdGVzdApGcm9tOiBvdGhlckBleGFtcGxlLmNvbQoKdGVzdCBlbWFpbA==
schema:
type: object
required:
- mime_email
properties:
mime_email:
type: string
description: A valid MIME-encoded string that has been Base64 encoded
schedule:
type: string
description: A timestamp that when passed allows you to schedule an email for sending. Must be in the future and within the next 3 days.
The api response will include a `schedule_id` property which can then be used alongside webhooks (An `X-Smtp2go-Schedule-Id` header is added to the sent email corresponds to this id). A total of 50,000 emails can be queued at any one time.
fastaccept:
type: boolean
default: false
description: If true, the email will be accepted immediately and sent in a background process. Use webhooks if you need information about final delivery to the recipient. This will soon become the default method of sending via API.
responses:
'200':
description: Mime email sent
content:
application/json:
examples:
Example:
value:
request_id: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
failed: 0
failures: []
succeeded: 1
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
required:
- email_id
properties:
failed:
type: integer
example: 0
default: 0
description: 'The number of emails that failed to send.
Note: An email with multiple recipients is classed as 1 email. Only returned if ''fastaccept'' is false.'
failures:
type: array
description: An array containing any error messages encountered during sending. Only returned if 'fastaccept' is false.
succeeded:
type: integer
example: 1
default: 0
description: 'The number of emails that were successfully sent.
Note: An email with multiple recipients is classed as 1 email. Only returned if ''fastaccept'' is false.'
email_id:
type: string
example: 1u0SwL-B9zBpi9ffUq-JAB2
description: The email ID generated if successfully sent
schedule_id:
type: string
example: caa928f4-24ec-4a68-bcfc-1fd2596342f0
description: The schedule ID generated if queued for sending. Only returned if 'schedule' is passed.
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/email/scheduled/remove:
post:
tags:
- EMAILS
summary: Remove a scheduled email
description: Removes a scheduled email by ID
operationId: remove-scheduled-email
requestBody:
content:
application/json:
schema:
type: object
required:
- schedule_id
example:
schedule_id: fe7d54d0-8f06-40c5-a675-d72f183e8ebf
properties:
schedule_id:
type: string
description: The schedule_id returned from /v3/email/scheduled/search or the following endpoints [/v3/email/send, /v3/email/mime] (when schedule is passed)
responses:
'200':
description: Scheduled email removed
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/email/scheduled/search:
post:
tags:
- EMAILS
summary: Search schedule emails
description: Allows searching of scheduled emails
operationId: search-scheduled-emails
requestBody:
content:
application/json:
schema:
type: object
required: []
example:
schedule_id: 8fb29ea3-286d-493e-83c5-401f76859bb1
search: recipient@example.com
limit: 100
page: 2
properties:
schedule_id:
type: string
description: The schedule_id returned from the `/email/send` endpoint
search_subject:
type: string
description: The subject of the email you want to search for
search_recipient:
type: string
description: The recipient of the email you want to search for
search_sender:
type: string
description: The sender of the email you want to search for
limit:
type: integer
description: If passed will limit the search results
default: 1000
page:
type: integer
description: If passed will return the results of the specific page
responses:
'200':
description: Scheduled email results
content:
application/json:
examples:
Example:
value:
request_id: c2dca1b4-89b9-4dc7-bd82-a86b83b29d84
data:
- schedule_id: 4d3b03a7-8663-4592-899a-b479ba6fcba9
schedule: '2025-06-30T23:11:56Z'
sender: test@example.com
subject: test 1
recipients: test@example2.com
client_ip: 127.0.0.1
- schedule_id: 188262b6-f6cc-4c98-bbe6-84c39d1c0ef4
schedule: '2025-06-30T23:11:56Z'
sender: test@example.com
subject: test 2
recipients: test@example2.com
client_ip: 127.0.0.1
- schedule_id: 789db207-5aba-4895-801b-4ebf1843721e
schedule: '2025-06-30T23:11:56Z'
sender: test@example.com
subject: test 3
recipients: test@example2.com
client_ip: 127.0.0.1
schema:
type: array
items:
type: object
description: An array of emails scheduled to be sent
properties:
schedule_id:
type: string
description: A unique identifier for the scheduled_email
schedule:
type: string
description: A timestamp indicating when the email was scheduled. A total of 50,000 emails can be queued at any one time.
sender:
type: string
description: The sender of the scheduled email
subject:
type: string
description: The subject of the email
recipients:
type: string
description: The recipients the email is scheduled to send to
client_ip:
type: string
description: The IP address that scheduled the email.
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/email/send:
post:
tags:
- EMAILS
summary: Send a standard email
description: Send an email by passing a JSON email object
operationId: send-standard-email
requestBody:
content:
application/json:
schema:
type: object
required:
- sender
- to
example:
to:
- Jane Jones
sender: John Smith
subject: My Test Email
html_body: Test 
text_body: Test
attachments:
- filename: report.pdf
mimetype: application/pdf
fileblob: bm90IGFjdHVhbGx5IGEgcGRm...
inlines:
- filename: mypicture.jpg
mimetype: image/jpeg
url: https://myserver.com/mypicture.jpg
schedule: 2025-09-10 13:15:00 +1200
properties:
sender:
type: string
description: The name and email address to send from, in the format `Name `
to:
type: array
description: An array of names and email addresses (up to 100) to send to, in the format `Name `
items:
type: string
cc:
type: array
description: An array of names and email addresses (up to 100) to CC, in the format `Name `
items:
type: string
bcc:
type: array
description: An array of names and email addresses (up to 100) to BCC, in the format `Name `
items:
type: string
subject:
type: string
description: The subject of the email to be sent, Note: if template_id if passed this field is ignored.
If you would like to set a custom subject in the template_data, use a variable ({{custom_subject}} for instance) as the value of the templates subject and then set its value in template_data respectively.
html_body:
type: string
description: 'A HTML encoded email body. Either html_body or text_body is required if template_id is not passed. If template_id is passed this field is ignored.
Warning:- To correctly track clicking of URLs you must:
- Enable click tracking for the API key
- Insert a full anchor HTML element (not just the URL)
- Include "https://" at the start of the HREF property
'
text_body:
type: string
description: A plain text email body. Either html_body or text_body is required if template_id is not passed. If template_id is passed this field is ignored.
custom_headers:
type: array
description: An array of custom header objects to be applied to the email. For example, a `Reply-To` email can be specified here, with header `Reply-To` and value `name@example.com`. For sending purposes the following headers are not allowed `Content-Type`, `Content-Transfer-Encoding` and `MIME-Version`.
items:
properties:
header:
type: string
description: Custom header to add to the email
value:
type: string
description: Custom header value to set
required:
- header
- value
type: object
attachments:
type: array
description: An array of attachment objects to be attached to the email
items:
properties:
filename:
type: string
description: The filename to use for this binary data
fileblob:
type: string
description: The Base64 encoded binary data of the file. Required if no url is specified.
mimetype:
type: string
description: The mimetype of the binary data
url:
type: string
description: A URL pointing to the attachment data. The data is directly retrieved by our system, and cached for fast re-use for 24 hours. Required if no fileblob is specified
required:
- filename
type: object
inlines:
type: array
description: An array of images to be inlined into the email. Use an image in content as `
`
items:
properties:
filename:
type: string
description: The filename to use for this binary data
fileblob:
type: string
description: The Base64 encoded binary data of the file. Required if no url is specified.
mimetype:
type: string
description: The mimetype of the binary data
url:
type: string
description: A URL pointing to the attachment data. The data is directly retrieved by our system, and cached for fast re-use for 24 hours. Required if no fileblob is specified
required:
- filename
type: object
template_id:
type: string
description: The ID of the template you wish to use
template_data:
type: string
description: 'When a template_id is provided, include the pass-through values in the format `{"variable1": "value1", "variable2": "value2"}`'
format: json
schedule:
type: string
description: A timestamp that when passed allows you to schedule an email for sending. Must be in the future and within the next 3 days.
The api response will include a `schedule_id` property which can then be used alongside webhooks (An `X-Smtp2go-Schedule-Id` header is added to the sent email corresponds to this id). A total of 50,000 emails can be queued at any one time.
fastaccept:
type: boolean
default: false
description: If true, the email will be accepted immediately and sent in a background process. Use webhooks if you need information about final delivery to the recipient. This will soon become the default method of sending via API.
responses:
'200':
description: Email sent
content:
application/json:
examples:
Example:
value:
request_id: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
succeeded: 1
failed: 0
failures: []
email_id: 1u0SwL-B9zBpi9ffUq-JAB2
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
required:
- email_id
properties:
failed:
type: integer
example: 0
default: 0
description: 'The number of emails that failed to send.
Note: An email with multiple recipients is classed as 1 email. Only returned if ''fastaccept'' is false.'
failures:
type: array
description: An array containing any error messages encountered during sending. Only returned if 'fastaccept' is false.
succeeded:
type: integer
example: 1
default: 0
description: 'The number of emails that were successfully sent.
Note: An email with multiple recipients is classed as 1 email. Only returned if ''fastaccept'' is false.'
email_id:
type: string
example: 1u0SwL-B9zBpi9ffUq-JAB2
description: The email ID generated if successfully sent
schedule_id:
type: string
example: caa928f4-24ec-4a68-bcfc-1fd2596342f0
description: The schedule ID generated if queued for sending. Only returned if 'schedule' is passed.
'400':
description: '400'
content:
application/json:
examples:
Example:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
example: You do not have permission to access this API endpoint
deprecated: false
/ip_allow_list:
post:
summary: Enable IP Allow List
operationId: ip-allowlist
description: Enables/Disables an IP allow list.
tags:
- IP Allow List
requestBody:
content:
application/json:
schema:
type: object
properties:
api_key:
example: api-700B************************8F4E
type: string
enabled:
type: boolean
example: true
type:
type: string
example: api
description: Either 'smtp' or 'api' depending on which IP allow list you want to operate on
default: smtp
required:
- api_key
responses:
'200':
description: Success – IP allow list status returned
content:
application/json:
schema:
type: object
properties:
request_id:
type: string
example: c0af7a72-46a8-11ee-9482-6754933d50b9
description: Unique ID for this request
data:
properties:
enabled:
type: boolean
example: true
'400':
description: Bad Request Response
content:
application/json:
schema:
title: 400 Bad Request
type: object
description: The standard payload for a 400 Bad Request response
x-examples:
Example:
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
properties:
data:
type: object
properties:
error_code:
type: string
description: An API error code string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
description: An error description
example: You do not have permission to access this API endpoint
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
description: Unique ID for this request
examples:
Example:
value:
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
'429':
description: Rate Limit Exceeded
/ip_allow_list/add:
post:
summary: Add IP Allow List
operationId: add-ip-allowlist
description: Adds an IP address to an allow list.
tags:
- IP Allow List
requestBody:
content:
application/json:
schema:
type: object
properties:
api_key:
example: api-700B************************8F4E
type: string
description:
type: string
example: servername
ip_address:
type: string
example: 123.45.67.89
type:
type: string
example: api
description: Either 'smtp' or 'api' depending on which IP allow list you want to operate on
default: smtp
required:
- api_key
responses:
'200':
description: Success – IP allow list added
content:
application/json:
schema:
type: object
properties:
request_id:
type: string
example: c0af7a72-46a8-11ee-9482-6754933d50b9
description: Unique ID for this request
data:
properties:
description:
type: string
example: servername
ip_address:
type: string
example: 123.45.67.89
'400':
description: Bad Request Response
content:
application/json:
schema:
title: 400 Bad Request
type: object
description: The standard payload for a 400 Bad Request response
x-examples:
Example:
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
properties:
data:
type: object
properties:
error_code:
type: string
description: An API error code string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
description: An error description
example: You do not have permission to access this API endpoint
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
description: Unique ID for this request
examples:
Example:
value:
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
'429':
description: Rate Limit Exceeded
/ip_allow_list/edit:
post:
summary: Edit IP Allow List
operationId: edit-ip-allowlist
description: Edits an existing IP allow list.
tags:
- IP Allow List
requestBody:
content:
application/json:
schema:
type: object
properties:
api_key:
example: api-700B************************8F4E
type: string
description:
type: string
example: servername
ip_address:
type: string
example: 123.45.67.89
new_ip_address:
type: string
example: 123.45.67.88
type:
type: string
example: api
description: Either 'smtp' or 'api' depending on which IP allow list you want to operate on
default: smtp
required:
- api_key
responses:
'200':
description: Success – IP allow list edited
content:
application/json:
schema:
type: object
properties:
request_id:
type: string
example: c0af7a72-46a8-11ee-9482-6754933d50b9
description: Unique ID for this request
data:
properties:
description:
type: string
example: servername
ip_address:
type: string
example: 123.45.67.88
'400':
description: Bad Request Response
content:
application/json:
schema:
title: 400 Bad Request
type: object
description: The standard payload for a 400 Bad Request response
x-examples:
Example:
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
properties:
data:
type: object
properties:
error_code:
type: string
description: An API error code string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
description: An error description
example: You do not have permission to access this API endpoint
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
description: Unique ID for this request
examples:
Example:
value:
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
'429':
description: Rate Limit Exceeded
/ip_allow_list/remove:
post:
summary: Remove IP Allow List
operationId: remove-ip-allowlist
description: Removes an IP address from an allow list.
tags:
- IP Allow List
requestBody:
content:
application/json:
schema:
type: object
properties:
api_key:
example: api-700B************************8F4E
type: string
ip_address:
type: string
example: 123.45.67.89
type:
type: string
example: api
description: Either 'smtp' or 'api' depending on which IP allow list you want to operate on
default: smtp
required:
- api_key
responses:
'200':
description: Success – IP allow list removed
content:
application/json:
schema:
type: object
properties:
request_id:
type: string
example: c0af7a72-46a8-11ee-9482-6754933d50b9
description: Unique ID for this request
data:
properties:
description:
type: string
example: servername
ip_address:
type: string
example: 123.45.67.89
'400':
description: Bad Request Response
content:
application/json:
schema:
title: 400 Bad Request
type: object
description: The standard payload for a 400 Bad Request response
x-examples:
Example:
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
properties:
data:
type: object
properties:
error_code:
type: string
description: An API error code string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
description: An error description
example: You do not have permission to access this API endpoint
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
description: Unique ID for this request
examples:
Example:
value:
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
'429':
description: Rate Limit Exceeded
/ip_allow_list/view:
post:
summary: View IP Allow List
operationId: view-ip-allowlist
description: Retrieves a list of IP Addresses on the allow list along with the list's enabled status.
tags:
- IP Allow List
requestBody:
content:
application/json:
schema:
type: object
properties:
api_key:
example: api-700B************************8F4E
type: string
type:
type: string
example: api
description: Either 'smtp' or 'api' depending on which IP allow list you want to operate on
default: smtp
required:
- api_key
responses:
'200':
description: Success – configured webhooks returned
content:
application/json:
schema:
type: object
properties:
request_id:
type: string
example: c0af7a72-46a8-11ee-9482-6754933d50b9
description: Unique ID for this request
data:
properties:
enabled:
type: boolean
example: true
ip_addresses:
type: array
description: list of IP addresses
items:
type: object
description: Represents an IP address object
properties:
ip_address:
type: string
example: 123.45.67.89
description:
type: string
example: servername
'400':
description: Bad Request Response
content:
application/json:
schema:
title: 400 Bad Request
type: object
description: The standard payload for a 400 Bad Request response
x-examples:
Example:
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
properties:
data:
type: object
properties:
error_code:
type: string
description: An API error code string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error:
type: string
description: An error description
example: You do not have permission to access this API endpoint
request_id:
type: string
example: 40cbb6f2-935f-11e7-b5be-480fcf01a6f2
description: Unique ID for this request
examples:
Example:
value:
data:
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
error: You do not have permission to access this API endpoint
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
'429':
description: Rate Limit Exceeded
/ip_auth/edit:
patch:
tags:
- IP AUTH
summary: Patch an IP Auth
description: Patch an existing IP Auth ignoring missing properties
operationId: patch-ip-auth
requestBody:
content:
application/json:
schema:
type: object
required:
- ip_address
properties:
ip_address:
type: string
description: A valid IP address of your existing IP Auth that you wish to edit
example: 127.0.0.1
description:
type: string
description: A comment or description of the IP Auth
example: test smtp user
custom_ratelimit:
type: boolean
description: If true, a custom rate limit will be enabled for this user, and defined by the custom_ratelimit_value and custom_ratelimit_period.
custom_ratelimit_value:
type: integer
description: If passed, defines the limit of emails this user can send in the period specified in custom_ratelimit_period.
Note: Only stores this value if custom_ratelimit is true.
custom_ratelimit_period:
type: string
example: 0:30:00
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
ip_pool:
type: integer
description: If passed, any emails sent with this IP Auth will use dedicated IP's in this IP Pool, This value can be found on the /v3/dedicated_ips/view endpoint.
example: 1234
feedback_enabled:
type: boolean
description: If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings.
default: null
feedback_html:
type: string
description: The HTML content to insert into the custom feedback email body via the unsubscribe footer.
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
example: test_html
default: null
feedback_text:
type: string
description: The text content to insert into the custom feedback email body via the unsubscribe footer.
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
example: test_text
default: null
open_tracking_enabled:
type: boolean
description: If true, open tracking will be enabled for this IP Auth user.
default: null
click_tracking_enabled:
type: boolean
description: If true, click tracking will be enabled for this IP Auth.
default: null
archive_enabled:
type: boolean
description: If true, archiving (available on paid plans) will be enabled for this IP Auth.
default: null
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this IP Auth.
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account.
default: null
status:
type: string
description: The initial status of the IP Auth user, one of ['allowed', 'blocked', 'sandbox'].
default: null
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Successfully patched IP Auth
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
- ip_address: 127.0.0.1
description: test ip auth
feedback_enabled: true
feedback_html: test_html
feedback_text: test_text
ippool: 1234
bounce_notifications: from
status: allowed
schema:
type: object
required:
- data
- request_id
properties:
data:
type: array
description: An array of IP Auth results
items:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
properties:
ip_address:
type: string
example: ip_address
description: The IP address of the IP Auth
description:
type: string
description: A comment or description of the IP Auth.
custom_rate_limit:
type: boolean
example: true
default: false
description: If enabled will use the values of custom_ratelimit_value and custom_ratelimit_period for rate limiting.
custom_ratelimit_value:
type: integer
example: 123
description: If passed, defines the limit of emails this IP Auth can send in the period specified in custom_ratelimit_period.
custom_ratelimit_period:
type: string
example: 0:30:00
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
default_ratelimit_value:
type: string
example: 123
description: The default limit of emails this IP Auth can send in the period specified in default_ratelimit_period. Note: Used if custom_ratelimit is false.
default_ratelimit_period:
type: string
example: unlimited
description: 'The default period for which this IP Auth will be limited to the number of emails specified in default_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Used if custom_ratelimit is false.'
ippool:
type: integer
example: 1234
feedback_enabled:
type: boolean
description: If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings.
default: false
feedback_html:
type: string
description: 'The HTML content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
feedback_text:
type: string
description: 'The text content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
open_tracking_enabled:
type: boolean
description: If true, open tracking will be enabled for this IP Auth.
default: false
click_tracking_enabled:
type: boolean
description: If true, click tracking will be enabled for this IP Auth.
default: false
archive_enabled:
type: boolean
description: If true, archiving (available on paid plans) will be enabled for this IP Auth.
default: false
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this IP Auth.
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account.
default: from
status:
type: string
description: The initial status of the IP Auth, one of ['allowed', 'blocked', 'sandbox'].
default: allowed
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/ip_auth/remove:
post:
tags:
- IP AUTH
summary: Remove an IP Auth entry
description: Remove an IP Auth entry from your account
operationId: remove-ip-auth
requestBody:
content:
application/json:
schema:
type: object
required:
- ip_address
properties:
ip_address:
type: string
description: A valid ip address of an existing IP Auth entry that you wish to remove
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: IP Auth removed
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/ip_auth/view:
post:
tags:
- IP AUTH
summary: View IP Auth
description: Returns a list of all IP Auth entries that are managed by this account, or details of a specific IP Auth, when you include the [ip_address] in your request. If no entries are available, this will return an empty list.
operationId: view-ip-auth
requestBody:
content:
application/json:
schema:
type: object
properties:
ip_address:
type: string
description: If passed, a valid ip address of an existing IP Auth entry that you wish to view
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: List of IP Auth entries
content:
application/json:
examples:
Result:
value:
request_id: ae4a8446-63c6-11ed-95d3-f23c92160e3c
data:
results:
- ip_address: 127.0.0.1
sending_allowed: true
custom_ratelimit: false
custom_ratelimit_value: null
custom_ratelimit_period: 0:00:00
description: ''
feedback_enabled: false
feedback_domain: default
feedback_html: ''
feedback_text: ''
archive_enabled: false
open_tracking_enabled: false
audit_email: null
bounce_notifications: from
status: allowed
default_ratelimit_value: 0
default_ratelimit_period: unlimited
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
required:
- results
properties:
results:
type: array
items:
type: object
required:
- ip_addres
- sending_allowed
- custom_ratelimit
properties:
comments:
type: string
example: Comment explaining how amazing this IP Auth entry is
ip_addres:
type: string
example: 127.0.0.1
email_password:
type: string
example: H#8dkK2djs
deprecated: true
sending_allowed:
type: boolean
example: true
default: true
custom_ratelimit:
type: boolean
example: true
default: true
custom_ratelimit_value:
type: integer
example: 100
default: 0
nullable: true
custom_ratelimit_period:
type: string
example: 1 day
default_ratelimit_value:
type: string
example: 123
description: The default limit of emails this IP Auth user can send in the period specified in default_ratelimit_period. Note: Used if custom_ratelimit is false.
default_ratelimit_period:
type: string
example: unlimited
description: 'The default period for which this IP Auth will be limited to the number of emails specified in default_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Used if custom_ratelimit is false.'
ippool:
type: integer
example: 1234
description:
type: string
feedback_enabled:
type: boolean
example: true
feedback_domain:
type: string
example: default
feedback_html:
type: string
feedback_text:
type: string
archive_enabled:
type: boolean
example: true
open_tracking_enabled:
type: boolean
example: true
audit_email:
type: string
nullable: true
bounce_notifications:
type: string
example: from
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/single_sender_emails/add:
post:
tags:
- SINGLE SENDER EMAILS
summary: Add a single sender email
description: Use the API to add a single sender email address to your account, to use from which to send mail. If the email address has previously been added and not yet verified, this action will simply resend the verification email.
operationId: add-a-single-sender-email
requestBody:
content:
application/json:
schema:
type: object
required:
- email_address
properties:
email_address:
type: string
description: The email address that you wish to send emails from
default: send@example.com
message:
type: string
description: (Optional) If provided, will add a text only message to the email.
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Single sender email added
content:
application/json:
examples:
Result:
value:
just_returns_this: ok
schema:
type: object
required:
- request_id
properties:
request_id:
type: string
example: e023461c-8c86-11e9-b984-408d5cce2644
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/single_sender_emails/remove:
post:
tags:
- SINGLE SENDER EMAILS
summary: Remove a single sender email
description: Remove a single sender email address from your account. Include the address to remove as the email_address parameter.
operationId: remove-a-single-sender-email
requestBody:
content:
application/json:
schema:
type: object
required:
- email_address
properties:
email_address:
type: string
description: The email address to remove from your Single Sender Emails
default: send@example.com
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Single sender email removed
content:
application/json:
examples:
Result:
value:
just_returns_this: OK
schema:
type: object
required:
- request_id
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: string
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/single_sender_emails/view:
post:
tags:
- SINGLE SENDER EMAILS
summary: View single sender emails
description: Returns a list of single sender email addresses on your account, along with their verification status. If you include a email_address, the response will only include items matching this search.
operationId: view-all-single-sender-emails
requestBody:
content:
application/json:
schema:
type: object
properties:
email_address:
type: string
description: (Optional) If provided, only return email addresses that match value
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: List of single sender emails
content:
application/json:
examples:
Result:
value:
data:
request_id: e023461c-8c86-11e9-b984-408d5cce2644
senders:
- email_address: test@test.com
verified: true
schema:
type: object
properties:
data:
type: object
required:
- request_id
- senders
properties:
request_id:
type: string
example: e023461c-8c86-11e9-b984-408d5cce2644
senders:
type: array
items:
type: object
required:
- email_address
- verified
properties:
email_address:
type: string
example: test@test.com
verified:
type: boolean
example: true
default: true
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/sms/send:
post:
tags:
- SMS
summary: Send SMS
description: Send an SMS message to one or more numbers, up to a maximum of 100 numbers.
operationId: send-sms
requestBody:
content:
application/json:
schema:
type: object
required:
- destination
- content
properties:
destination:
type: array
description: 'An array of SMS numbers to send the message to (Maximum: 100 numbers). Numbers should include the country code of the recipient, and can optionally start with a plus symbol (+).'
items:
type: string
example: '+12025550959'
sender:
type: string
description: The message will be sent from this number (must be in e.164 format). Leave empty to use the default sender number. If the source and destination are located in different countries, a shared number in the recipient's country will be used for sending.
content:
type: string
description: The content of the SMS. If more than 160 characters, will be sent as multiple units.
responses:
'200':
description: SMS Sent
content:
application/json:
examples:
Result:
value:
request_id: 13ab6f3a-ddea-11eb-b4ce-1002b51e60a4
data:
statuses:
queued: 1
total_sent: 1
schema:
type: object
required:
- request_id
- data
properties:
data:
type: object
required:
- statuses
- total_sent
properties:
statuses:
type: object
required:
- queued
properties:
queued:
type: integer
example: 1
default: 0
total_sent:
type: integer
example: 1
default: 0
messages:
type: array
description: An array of objects containing the object of each message sent
items:
type: object
required:
- destination
- message_id
- status
properties:
destination:
type: string
example: '+12025550959'
message_id:
type: string
example: d6b0e06d-f031-4485-8e92-8141816b3a22
status:
type: string
enum:
- processing
- enroute
- queued
- submitted
- processed
- delivered
- held
- expired
- cancelled
- failed
- rejected
example: queued
example:
- destination: '+12025550959'
message_id: d6b0e06d-f031-4485-8e92-8141816b3a22
status: queued
request_id:
type: string
example: 13ab6f3a-ddea-11eb-b4ce-1002b51e60a4
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/sms/summary:
post:
tags:
- SMS
summary: SMS Summary
description: Retrieve a summary of SMS messages within a certain time range.
operationId: sms-summary
requestBody:
content:
application/json:
schema:
type: object
properties:
start_date:
type: string
description: ISO-8601 formatted datetime which defaults to current date at midnight. The range will be inclusive of start_date and exclusive of end_date. Timezone is UTC.
format: date
end_date:
type: string
description: ISO-8601 formatted datetime which defaults to now. Timezone is UTC.
format: date
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Summary of SMS activity
content:
application/json:
examples:
Result:
value:
data:
total_messages: 123
total_units: 156
total_cost: 10.456
request_id: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
schema:
type: object
required:
- data
- request_id
properties:
data:
type: object
properties:
total_messages:
type: integer
example: 123
description: The total number of SMS messages sent within the passed time range
total_units:
type: integer
example: 156
description: The total number of SMS units used to send the messages within the passed time range
total_cost:
type: number
example: 10.456
description: The total cost of the SMS messages within the passed time range
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/sms/view-received:
post:
tags:
- SMS
summary: View received SMS
description: View received SMS messages.
operationId: view-received-sms
requestBody:
content:
application/json:
schema:
type: object
properties:
start_date:
type: string
description: ISO-8601 formatted datetime which defaults to 7 days ago at midnight. The range will be inclusive of start_date and exclusive of end_date. Timezone is UTC.
format: date
end_date:
type: string
description: ISO-8601 formatted datetime which defaults to now. Timezone is UTC.
format: date
unix_start:
type: integer
description: 'Deprecated: this is a legacy method of selecting the start of the search period as a unix timestamp. This can be left empty to use the start_date.'
unix_end:
type: integer
description: 'Deprecated: this is a legacy method of selecting the end of the search period as a unix timestamp. This can be left empty to use the end_date.'
username:
type: string
description: If passed will filter the results based on the username information on the message
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: SMS Messages
content:
application/json:
examples:
Result:
value:
data:
request_id: 99b91538-53e4-4e97-8700-4284dcba148d
messages:
- source_address: 15185550120
destination_address: 15185550141
timestamp: '2022-09-30T02:02:41.000Z'
content: Example content
message_id: 4c1d0952-1c91-48ab-9a72-5221281c0c95
username: api-12345678
schema:
type: object
properties:
data:
type: object
required:
- messages
properties:
request_id:
type: string
example: e023461c-8c86-11e9-b984-408d5cce2644
messages:
type: array
items:
type: object
required:
- source_address
- destination_address
- timestamp
- content
- message_id
- username
properties:
source_address:
type: string
example: 15185550120
destination_address:
type: string
example: 15185550141
timestamp:
type: string
example: '2022-09-30T02:02:41Z'
content:
type: string
example: Example content
message_id:
type: string
example: 2434321b-566d-40cf-a16b-34570931c205
username:
type: string
example: api-12345678
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/sms/view-sent:
post:
tags:
- SMS
summary: View sent SMS
description: View sent SMS messages.
operationId: view-sent-sms
requestBody:
content:
application/json:
schema:
type: object
properties:
start_date:
type: string
description: ISO-8601 formatted datetime which defaults to 7 days ago at midnight. The range will be inclusive of start_date and exclusive of end_date. Timezone is UTC.
format: date
end_date:
type: string
description: ISO-8601 formatted datetime which defaults to now. Timezone is UTC.
format: date
username:
type: string
description: If passed will filter the results based on the username information on the message
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: SMS Messages
content:
application/json:
examples:
Result:
value:
data:
request_id: 99b91538-53e4-4e97-8700-4284dcba148d
messages:
- id: 11170632-25c9-4fbd-85b3-7491fa506d74
timestamp: '2025-06-08T19:05:25.830Z'
username: username
sender: shared
sender_email: test@example.com
destination_address: '+123456789'
destination_address_country: US
format: SMS
status: Message discarded
content: Example content
units: 1
schema:
type: object
properties:
data:
type: object
required:
- messages
properties:
request_id:
type: string
example: e023461c-8c86-11e9-b984-408d5cce2644
messages:
type: array
items:
type: object
properties:
id:
type: string
example: a9d6d238-900c-4b9a-9e42-2d55c48785ab
description: A unique ID associated with the message
timestamp:
type: string
example: '2025-06-08T19:05:25.830Z'
description: A timestamp indicating when the message was sent
username:
type: string
example: username
description: The username used to send the message
sender:
type: string
example: shared
descriptions: The sender used to send the message
sender_email:
type: string
example: test@example.com
description: If sent via email this is the sender email
destination_address:
type: string
example: '+123456789'
description: The number the message was sent to
destination_address_county:
type: string
example: US
description: The country the destination address resides in
format:
type: string
example: SMS
description: The format of the sent message
status:
type: string
example: Message sent
description: The status of the sent message
content:
type: string
example: test message
description: The content of the sent message
units:
type: integer
example: The number of units used to send the mssage
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/stats/email_bounces:
post:
tags:
- STATISTICS
summary: Email bounces
description: Retrieve a summary of bounces and rejects, for the last 30 days.
operationId: email-bounces
requestBody:
content:
application/json:
schema:
type: object
required: []
properties:
username:
type: string
description: Allows statistics to be returned for a specific user.
responses:
'200':
description: Bounce report
content:
application/json:
examples:
Result:
value:
request_id: ee9b9484-63eb-11ed-8da7-f23c9216ce11
data:
emails: 1
rejects: 0
softbounces: 0
hardbounces: 0
bounce_percent: '0.00'
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 2917fc07-d685-4fea-b49a-14087058461f
data:
type: object
required:
- emails
- hardbounces
- bounce_percent
- softbounces
- rejects
properties:
emails:
type: integer
example: 159
default: 0
hardbounces:
type: integer
example: 0
default: 0
bounce_percent:
type: string
example: '0.00'
softbounces:
type: integer
example: 0
default: 0
rejects:
type: integer
example: 0
default: 0
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/stats/email_cycle:
post:
tags:
- STATISTICS
summary: Email cycle
description: Retrieve a summary of your Account activity, including the start and end date of your monthly plan, the number of emails sent this cycle, the number of emails remaining and the number of emails in your monthly allowance.
operationId: email-cycle
responses:
'200':
description: Summary of Account
content:
application/json:
examples:
Result:
value:
request_id: 4b84c952-9bca-432f-a68e-585e4c7a969c
data:
cycle_start: '2022-11-01 00:00:00+00:00'
cycle_end: '2022-11-30 00:00:00+00:00'
cycle_used: 1
cycle_remaining: 9999
cycle_max: 10000
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 4b84c952-9bca-432f-a68e-585e4c7a969c
data:
type: object
required:
- cycle_end
- cycle_used
- cycle_start
- cycle_max
- cycle_remaining
properties:
cycle_end:
type: string
example: '2016-08-04 01:49:15.863998'
cycle_used:
type: integer
example: 0
default: 0
cycle_start:
type: string
example: '2016-08-01 01:49:15.863998'
cycle_max:
type: integer
example: 1000
default: 0
cycle_remaining:
type: integer
example: 1000
default: 0
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/stats/email_history:
post:
tags:
- STATISTICS
summary: Email history
description: Retrieve a summary of activity from a specified date range (defaults to last 30 days), per sender email address, SMTP username, domain or subaccount.
operationId: email-history
requestBody:
content:
application/json:
schema:
type: object
properties:
group_by:
type: string
description: One of [email_address, username, domain, subaccount] - controls the grouping of results. Defaults to email_address
start_date:
type: string
description: ISO-8601 formatted datetime which defaults to 30 days prior to the current date at midnight. Timezone is UTC
end_date:
type: string
description: ISO-8601 formatted datetime which defaults the current time. Timezone is UTC
subaccounts:
type: array
description: Pass an optional list of subaccount ids to fetch a summary of only particular subaccounts, ID's can be found by querying /subaccounts/search
responses:
'200':
description: Summary of Account
content:
application/json:
examples:
Result:
value:
request_id: f3898083-f5d5-4512-86bd-e02bd1685840
data:
count: 1
history:
- used: 1
bytecount: 1022
avgsize: 1022
email_address: test3@example.com
lastip: 82.1.149.48
bounces: 0
clicks: 0
opens: 0
rejects: 0
spam: 0
unsubscribes: 0
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: f3898083-f5d5-4512-86bd-e02bd1685840
data:
type: object
required:
- count
- history
properties:
count:
type: integer
example: 159
default: 0
bounce_percent_total:
type: number
example: 1.24
default: 0
description: The total percentage of emails that bounced.
open_percent_total:
type: number
example: 1.24
default: 0
description: The total percentage of emails that were opened.
reject_percent_total:
type: number
example: 1.24
default: 0
description: The total percentage of emails that were rejected.
spam_percent_total:
type: number
example: 1.24
default: 0
description: The total percentage of emails that were marked as spam.
unsubscribe_percent_total:
type: number
example: 1.24
default: 0
description: The total percentage of emails that were unsubscribed from.
history:
type: array
items:
type: object
required:
- lastip
- used
- bytecount
- avgsize
properties:
subaccount:
type: string
example: My Subaccount Name
description: Only returned if group_by is set to subaccount
domain:
type: string
example: test.com
description: Only returned if group_by is set to domain
domain_verified:
type: boolean
example: true
description: Only returned if group_by is set to domain
lastip:
type: string
example: 55.67.22.12
used:
type: integer
example: 123
default: 0
email_address:
type: string
example: test3@example.com
description: Only returned if group_by is set to email_address
username:
type: string
example: my_user
description: Only returned if group_by is set to username
description:
type: string
description: A comment or description of the user, Only returned if group_by is set to username
bytecount:
type: integer
example: 148113
default: 0
avgsize:
type: number
example: 1204.1707317073171
default: 0
bounces:
type: integer
example: 123
default: 0
clicks:
type: integer
example: 123
default: 0
opens:
type: integer
example: 123
default: 0
rejects:
type: integer
example: 123
default: 0
spam:
type: integer
example: 123
default: 0
unsubscribes:
type: integer
example: 123
default: 0
bounce_percent:
type: number
example: 1.24
default: 0
description: The percentage of emails that bounced.
open_percent:
type: number
example: 1.24
default: 0
description: The percentage of emails that were opened.
reject_percent:
type: number
example: 1.24
default: 0
description: The percentage of emails that were rejected.
spam_percent:
type: number
example: 1.24
default: 0
description: The percentage of emails that were marked as spam.
unsubscribe_percent:
type: number
example: 1.24
default: 0
description: The percentage of emails that recipients unsubscribed.
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/stats/email_spam:
post:
tags:
- STATISTICS
summary: Email spam
description: Retrieve a summary of spam complaints and rejects, for the last 30 days.
operationId: email-spam
requestBody:
content:
application/json:
schema:
type: object
required: []
properties:
username:
type: string
description: Allows statistics to be returned for a specific user.
responses:
'200':
description: Spam report
content:
application/json:
examples:
Result:
value:
request_id: 0757ba83-9dfc-4584-bb0c-baa06a28a377
data:
emails: 1
rejects: 0
spams: 0
spam_percent: '0.00'
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 0757ba83-9dfc-4584-bb0c-baa06a28a377
data:
type: object
required:
- spam_percent
- emails
- spams
- rejects
properties:
spam_percent:
type: string
example: '0.00'
emails:
type: integer
example: 159
default: 0
spams:
type: integer
example: 0
default: 0
rejects:
type: integer
example: 0
default: 0
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/stats/email_summary:
post:
tags:
- STATISTICS
summary: Email summary
description: Retrieve a combination of the email_bounces, email_cycle, email_spam, and email_unsubs calls in one report. Note this call may take longer to complete.
operationId: email-summary
requestBody:
content:
application/json:
schema:
type: object
properties:
username:
type: string
description: Allows statistics to be returned for a specific user
responses:
'200':
description: Account Statistics
content:
application/json:
examples:
Result:
value:
request_id: 72f48187-64d9-4a2f-ba9c-527a2a7911f7
data:
spam_emails: 0
cycle_start: '2022-11-01 00:00:00+00:00'
cycle_end: '2022-11-30 00:00:00+00:00'
cycle_used: 1
cycle_remaining: 9999
cycle_max: 10000
email_count: 1
bounce_rejects: 0
softbounces: 0
hardbounces: 0
bounce_percent: '0.00'
spam_rejects: 0
spam_percent: '0.00'
unsubscribes: 0
unsubscribe_percent: '0.0'
opens: 0
clicks: 0
rejects: 0
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 72f48187-64d9-4a2f-ba9c-527a2a7911f7
data:
type: object
required:
- cycle_end
- spam_rejects
- bounce_percent
- unsubscribes
- bounce_rejects
- spam_percent
- softbounces
- cycle_max
- spam_emails
- cycle_remaining
- cycle_start
- unsubscribe_percent
- cycle_used
- hardbounces
- email_count
- opens
- clicks
- rejects
properties:
cycle_end:
type: string
example: '2016-08-04 01:49:15.863998'
spam_rejects:
type: integer
example: 1
default: 0
deprecated: true
bounce_percent:
type: string
example: '7.33'
unsubscribes:
type: integer
example: 32
default: 0
bounce_rejects:
type: integer
example: 11
default: 0
deprecated: true
spam_percent:
type: string
example: '1.33'
softbounces:
type: integer
example: 6
default: 0
cycle_max:
type: integer
example: 1000
default: 0
spam_emails:
type: integer
example: 2
default: 0
cycle_remaining:
type: integer
example: 850
default: 0
cycle_start:
type: string
example: '2016-08-01 01:49:15.863998'
unsubscribe_percent:
type: string
example: '21.33'
cycle_used:
type: integer
example: 150
default: 0
hardbounces:
type: integer
example: 5
default: 0
email_count:
type: integer
example: 150
default: 0
opens:
type: integer
example: 123
default: 0
clicks:
type: integer
example: 321
default: 0
rejects:
type: integer
example: 11
default: 0
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/stats/email_unsubs:
post:
tags:
- STATISTICS
summary: Email unsubscribes
description: Retrieve a summary of unsubscribes and rejects, for the last 30 days.
operationId: email-unsubscribes
requestBody:
content:
application/json:
schema:
type: object
required: []
properties:
username:
type: string
description: Allows statistics to be returned for a specific user.
responses:
'200':
description: Unsubscribe report
content:
application/json:
examples:
Result:
value:
request_id: e6e94157-90c7-496d-abdf-a5fef899ad54
data:
emails: 1
rejects: 0
unsubscribes: 0
unsubscribe_percent: '0.00'
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: e6e94157-90c7-496d-abdf-a5fef899ad54
data:
type: object
required:
- emails
- unsubscribes
- rejects
- unsubscribe_percent
properties:
emails:
type: integer
example: 159
default: 0
unsubscribes:
type: integer
example: 0
default: 0
rejects:
type: integer
example: 0
default: 0
unsubscribe_percent:
type: string
example: '0.00'
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/subaccount/add:
post:
tags:
- SUBACCOUNTS
summary: Add a subaccount
description: Adds a new subaccount on your master account. Note: This end-point is rate limited to 50 calls per hour.
operationId: add-subaccount
requestBody:
content:
application/json:
schema:
type: object
required:
- fullname
properties:
fullname:
type: string
description: A full name used for the subaccount
subaccount_email:
type: string
description: An optional email address for the first team member in the subaccount. An email invitation will be sent to this address.
limit:
type: integer
description: The number of emails the subaccount is allowed to send per billing cycle.
Valid values:
2000, 5000, 10000, 20000, 30000, 40000, 50000, 60000, 80000, 100000, 250000, 500000, 1000000, 2000000, 3000000, 5000000, 10000000
default: 10000
format: int32
dedicated_ip:
type: boolean
description: Auto assign a dedicated IP to the subaccount (Only available if limit is greater than 100,000)
default: false
archiving:
type: boolean
description: Choose whether the subaccount is allowed to enable archiving. You still need to turn on archiving for individual senders within the subaccount.
default: false
enforce_2fa:
type: boolean
description: Enforce team members of this subaccount to use 2FA.
default: false
enable_sms:
type: boolean
description: Enable SMS messaging for the subaccount. Additional charges apply.
default: false
sms_limit:
type: integer
description: Your subaccount will be able to send up to this monthly limit of SMS messages. Their sending will also be limited by the master account's overall monthly limit.
default: 1000
responses:
'200':
description: Subaccount added
content:
application/json:
examples:
Result:
value:
request_id: 8af53474-63fc-11ed-825f-f23c92160e3c
data:
name: Test Person
id: 34l8oj
plan_size: 10000
plan_used: 0
plan_remaining: 10000
state: Active
dedicated_ip: false
archiving: true
enforce_2fa: true
sms_enabled: true
sms_limit: 1000
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 0ef3f48a-2cfb-11eb-aee9-408d5cce2644
data:
type: object
required:
- name
- id
- plan_size
- plan_used
- plan_remaining
- state
- dedicated_ip
- archiving
- enforce_2fa
- sms_enabled
- sms_limit
properties:
name:
type: string
example: Test Person
id:
type: string
example: NDU5OTgw
plan_size:
type: integer
example: 10000
plan_used:
type: integer
example: 0
plan_remaining:
type: integer
example: 10000
state:
type: string
example: Active
dedicated_ip:
type: boolean
example: false
archiving:
type: boolean
example: false
enforce_2fa:
type: boolean
example: false
sms_enabled:
type: boolean
example: false
sms_limit:
type: integer
example: 1000
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/subaccount/close:
post:
tags:
- SUBACCOUNTS
summary: Close a subaccount
description: Changes the status of an Active subaccount to Closed
operationId: close-a-subaccount
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: string
description: The id of the subaccount you want to close
email:
type: string
description: The email address of the subaccount you want to close
responses:
'200':
description: Subaccount closed
content:
application/json:
examples:
Result:
value:
request_id: d02ce100-2cfd-11eb-ab52-408d5cce2644
data: Successfully closed subaccount test@example.com
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: d02ce100-2cfd-11eb-ab52-408d5cce2644
data:
type: string
example: Successfully closed subaccount test@example.com
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/subaccount/edit:
post:
tags:
- SUBACCOUNTS
summary: Update a subaccount
description: Changes the details on an existing subaccount
operationId: update-a-subaccount
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: string
description: The id of an existing subaccount
fullname:
type: string
description: If provided, will set to the new full name for the subaccount
limit:
type: integer
description: If provided, will set to the new limit for the subaccount
format: int32
dedicated_ip:
type: boolean
description: If provided, will set to the new dedicated IP address for the subaccount (If limit is greater than 100,000)
default: false
archiving:
type: boolean
description: Choose whether the subaccount is allowed to enable archiving. You still need to turn on archiving for individual senders within the subaccount.
default: false
enforce_2fa:
type: boolean
description: Enforce team members of this subaccount to use 2FA.
default: false
enable_sms:
type: boolean
description: Enable SMS messaging for the subaccount. Additional charges apply.
default: false
sms_limit:
type: integer
description: Your subaccount will be able to send up to this monthly limit of SMS messages. Their sending will also be limited by the master account's overall monthly limit.
default: 1000
responses:
'200':
description: Subaccount updated
content:
application/json:
examples:
Result:
value:
request_id: dc1b8a6a-63fc-11ed-b6de-f23c9216bfec
data:
name: Test Person
id: 34l8oj
plan_size: 10000
plan_used: 0
plan_remaining: 10000
state: Active
dedicated_ip: false
archiving: true
enforce_2fa: true
sms_enabled: true
sms_limit: 1000
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 0ef3f48a-2cfb-11eb-aee9-408d5cce2644
data:
type: object
required:
- name
- id
- plan_size
- plan_used
- plan_remaining
- state
- dedicated_ip
- archiving
- enforce_2fa
- sms_enabled
- sms_limit
properties:
name:
type: string
example: Test Person
id:
type: string
example: NDU5OTgw
plan_size:
type: integer
example: 10000
plan_used:
type: integer
example: 0
plan_remaining:
type: integer
example: 10000
state:
type: string
example: Active
dedicated_ip:
type: boolean
example: false
archiving:
type: boolean
example: false
enforce_2fa:
type: boolean
example: false
sms_enabled:
type: boolean
example: false
sms_limit:
type: integer
example: 1000
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/subaccount/reopen:
post:
tags:
- SUBACCOUNTS
summary: Reopen a closed subaccount
description: Changes the status of a Closed subaccount back to Active
operationId: reopen-a-closed-subaccount
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
email:
type: string
description: The email address of the subaccount you want to reopen
id:
type: string
description: The id of the subaccount you want to reopen
responses:
'200':
description: Subaccount reopened
content:
application/json:
examples:
Result:
value:
request_id: d02ce100-2cfd-11eb-ab52-408d5cce2644
data: Successfully reopened subaccount test@example.com
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 0ef3f48a-2cfb-11eb-aee9-408d5cce2644
data:
type: object
required:
- id
properties:
id:
type: string
example: NDU5OTgw
email:
type: string
example: test@example.com
name:
type: string
example: Test Person
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/subaccounts/search:
post:
tags:
- SUBACCOUNTS
summary: View subaccounts
description: Returns any subaccounts that match search criteria
operationId: search-subaccounts
requestBody:
content:
application/json:
schema:
type: object
properties:
fuzzy_search:
type: boolean
description: 'Determines if search terms match complete field values and are case sensitive (false) or partial fields and are case insensitive (true). Default: true'
default: true
search_terms:
type: array
description: Return subaccounts with one or more of the strings in the following array.
Note: See 'fuzzy_search' for impact on case sensitivity
items:
type: string
states:
type: string
description: Controls which states you will be searched
Valid values:
all, active, closed, suspended
default: all
sort_direction:
type: string
description: Sort direction, sorts either asc or desc by subaccount name
default: asc
page_size:
type: integer
description: Number of subaccounts to retrieve per call
default: 100
format: int32
continue_token:
type: string
description: A token provided by a prior call to this endpoint, passing this will cause it to fetch the next page of results
responses:
'200':
description: List of subaccounts
content:
application/json:
examples:
Result:
value:
request_id: 169e0780-63fd-11ed-860d-f23c92160e3c
data:
continue_token: ''
subaccounts:
- name: '10000'
email: test@gmail.com
id: GnlKn5
plan_size: 10000
plan_used: 0
plan_remaining: 10000
state: Active
dedicated_ip: false
total_count: 1
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 0ef3f48a-2cfb-11eb-aee9-408d5cce2644
data:
type: object
required:
- continue_token
- total_count
- subaccounts
properties:
continue_token: {}
total_count:
type: integer
example: 1
default: 0
subaccounts:
type: array
items:
type: object
required:
- email
- state
- plan_size
- plan_remaining
- plan_used
- name
properties:
email:
type: string
example: test@gmail.com
state:
type: string
example: Active
plan_size:
type: integer
example: 10000
default: 0
plan_remaining:
type: integer
example: 10000
default: 0
plan_used:
type: integer
example: 0
default: 0
name:
type: string
example: Matt & Juanita
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/suppression/add:
post:
tags:
- SUPPRESSIONS
summary: Add a suppression
description: Suppresses the specified email address or domain
operationId: add-a-suppression
requestBody:
content:
application/json:
schema:
type: object
required:
- email_address
properties:
email_address:
type: string
description: The email address or domain you would like to suppress from deliveries
block_description:
type: string
description: The description given for suppressing the email or domain from deliveries
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Suppression successful
content:
application/json:
examples:
Result:
value:
request_id: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
added: true
block_description: ''
email_address: temp@example.com
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
required:
- block_description
- added
- email_address
properties:
block_description:
type: string
example: No longer a customer.
added:
type: boolean
example: true
default: true
email_address:
type: string
example: test@example.com
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/suppression/remove:
post:
tags:
- SUPPRESSIONS
summary: Remove a suppression
description: Removes the suppression on the specified email address or domain
operationId: remove-a-suppression
requestBody:
content:
application/json:
schema:
type: object
required:
- email_address
- reasons
properties:
email_address:
type: string
description: The email address or domain you would like to remove from your suppression list
default: test@example.com
reasons:
type: array
description: A list of block types you would like to remove for the given email or domain
default:
- manual
- spam
items:
type: string
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: Suppression removed
content:
application/json:
examples:
Result:
value:
request_id: be4811ac-63f2-11ed-ab1c-f23c9216bfec
data:
suppressions:
- email_address: temp@test.com
reason: manual
removed: true
- email_address: temp@test.com
reason: spam
removed: false
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
required:
- suppressions
properties:
suppressions:
type: array
items:
type: object
required:
- reason
- email_address
- removed
properties:
reason:
type: string
example: manual
email_address:
type: string
example: test@example.com
removed:
type: boolean
example: true
default: true
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/suppression/view:
post:
tags:
- SUPPRESSIONS
summary: View suppressions
description: Returns your suppressed email addresses and domains
operationId: view-suppressions
requestBody:
content:
application/json:
schema:
type: object
properties:
continue_token:
type: string
description: If returned from a request this can be passed to continue paging through the result of the results
email_address:
type: string
description: If provided, checks if a specific email address or domain is in the block list
end_date:
type: string
description: ISO-8601 formatted datetime which defaults to 30 days prior to the current date at midnight. Timezone is UTC
fuzzy:
type: boolean
description: Indicates if the search should use fuzzy matching on recipients & reasons
reason:
type: string
description: A reason string to search for
reasons:
type: array
description: An array of reason strings to search for
items:
type: string
recipient:
type: string
description: A recipient string to search for
recipients:
type: array
description: An array of recipient strings to search for
items:
type: string
sort:
type: string
description: The direction to sort the results, either asc or desc
start_date:
type: string
description: ISO-8601 formatted datetime which defaults to the current date at midnight. Timezone is UTC
suppression_type:
type: string
description: If passed restricts the search to a single suppression type manual, spam, unsubscribe, bounce or compliance
suppression_types:
type: array
description: If passed restricts the search to multiple suppression types manual, spam, unsubscribe, bounce or compliance
items:
type: string
wildcard:
type: string
description: If provided, only suppressions with this wildcard string in name, domain, or email address fields, will be returned
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: List of suppressions
content:
application/json:
examples:
Result:
value:
request_id: 0d782ff6-63f2-11ed-9e11-f23c92160e3c
data:
continue_token: null
results:
- block_description: ''
complaint: ''
email_address: temp@example.com
reason: manual
subject: null
timestamp: '2022-11-14 07:54:45'
total_results: 1
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: e61431d0-a532-11e8-a307-f23c91285f72
data:
type: object
required:
- continue_token
- results
- total_results
properties:
results:
type: array
items:
type: object
required:
- complaint
- reason
- block_description
- timestamp
- email_address
properties:
complaint:
type: string
example: ''
reason:
type: string
example: manual
block_description:
type: string
example: no longer a customer
timestamp:
type: string
example: '2018-08-21 11:10:55.457489+00:00'
email_address:
type: string
example: test@example.com
continue_token:
type: string
nullable: true
total_results:
type: integer
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/template/add:
post:
tags:
- TEMPLATES
summary: Add an email template
description: Adds a new email template that you can use to format your emails.
operationId: add-an-email-template
requestBody:
content:
application/json:
schema:
type: object
required:
- template_name
- id
- subject
- html_body
- text_body
properties:
template_name:
type: string
description: 'The name of the email template. Min length: 1 Character. Max length: 64 Characters.'
id:
type: string
description: 'The case-sensitive ID of the email template. Min length: 5 Character. Max length: 24 Characters.'
subject:
type: string
description: The subject of the email template.
html_body:
type: string
description: The HTML body of the email template.
text_body:
type: string
description: The Plain Text body of the email template.
template_variables:
type: object
description: 'The variables to use within this email template in the format `{"variable1": "value1", "variable2": "value2"}`'
tags:
type: array
description: The list of Tags to associate to this email template
items:
type: string
responses:
'200':
description: Template added
content:
application/json:
examples:
Result:
value:
request_id: f00c0856-dde8-11eb-b4ce-1002b51e60a4
data:
template_name: Shiny new name
id: testid
subject: Shiny new Subject
html_body: Shiny HTML body. This is a {{ variable }}
text_body: Shiny Text body
template_variables:
variable: strawberries
tags:
- tagged
schema:
type: object
properties:
request_id:
type: string
example: f00c0856-dde8-11eb-b4ce-1002b51e60a4
data:
type: object
required:
- id
- subject
- tags
properties:
id:
type: string
example: '5355878'
name:
type: string
example: Order receipt
description: This parameter is only returned in 'search' response
template_name:
type: string
example: Order receipt
description: This parameter is not present in 'search' response
subject:
type: string
example: Order receipt for {{ product_name }}
tags:
type: array
required:
- types
- example
items:
type: string
example: one
last_updated:
type: string
example: '2024-01-01 12:00:00'
description: A timestamp indicating when this template was last updated
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/template/delete:
post:
tags:
- TEMPLATES
summary: Remove an email template
description: Deletes the specified email template.
operationId: remove-an-email-template
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: string
description: The case-sensitive ID of the email template that you wish to remove
responses:
'200':
description: Template removed
content:
application/json:
examples:
Result:
value:
request_id: 0ad5c75a-640f-11ed-83e8-f23c9216bf70
data: Successfully deleted template 'example'
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: string
example: Successfully deleted template 'example'
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/template/edit:
post:
tags:
- TEMPLATES
summary: Update an email template
description: Changes details of an existing email template.
operationId: update-an-email-template
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: string
description: The ID of the email template that you wish to change
new_id:
type: string
description: If provided, will update the email template ID
template_name:
type: string
description: If provided, will update the email template name
subject:
type: string
description: If provided, will update the email template subject
html_body:
type: string
description: If provided, will update the email template HTML body
text_body:
type: string
description: If provided, will update the email template Plain Text body
template_variables:
type: object
description: 'The pass-through values required by the template in the format `{"variable1": "value1", "variable2": "value2"}` (When template_id is provided)'
tags:
type: array
description: If provided, will update the email template tags
items:
type: string
responses:
'200':
description: Template updated
content:
application/json:
examples:
Result:
value:
request_id: 43ab454e-dde9-11eb-b4ce-1002b51e60a4
data:
template_name: Shiny new name
id: newid
subject: Shiny new Subject
html_body: Shiny HTML body. This is a {{ variable }}
text_body: Shiny Text body
template_variables:
variable: strawberries
tags:
- tagged
schema:
type: object
properties:
request_id:
type: string
example: f00c0856-dde8-11eb-b4ce-1002b51e60a4
data:
type: object
required:
- id
- subject
- tags
properties:
id:
type: string
example: '5355878'
name:
type: string
example: Order receipt
description: This parameter is only returned in 'search' response
template_name:
type: string
example: Order receipt
description: This parameter is not present in 'search' response
subject:
type: string
example: Order receipt for {{ product_name }}
tags:
type: array
required:
- types
- example
items:
type: string
example: one
last_updated:
type: string
example: '2024-01-01 12:00:00'
description: A timestamp indicating when this template was last updated
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/template/search:
post:
tags:
- TEMPLATES
summary: View email templates
description: Search your collection of email templates. Returns any templates that match your search criteria.
operationId: search-email-templates
requestBody:
content:
application/json:
schema:
type: object
properties:
fuzzy_search:
type: boolean
description: 'If provided, will determine whether search terms are matched exactly or using wildcards. Default: false'
search_terms:
type: array
description: If provided, will return email templates containing any of the strings provided in name, tag, id or subject fields.
items:
type: string
tags:
type: array
description: If provided, will return email templates containing any of the tags provided
items:
type: string
sort_direction:
type: string
description: 'If provided, will sort the returned email templates in ascending or descending order. Default: asc
Values: asc or desc'
page_size:
type: integer
description: If provided, will limit the number of email templates returned. Default 100
format: int32
continue_token:
type: string
description: If provided, will fetch the next page of results, following on from the previous page of results from which this continue token was returned
responses:
'200':
description: Matching templates
content:
application/json:
examples:
Result:
value:
request_id: 13ab6f3a-ddea-11eb-b4ce-1002b51e60a4
data:
continue_token: null
templates:
- name: Order receipt
id: '5355878'
subject: Order receipt for {{ product_name }}
tags:
- one
- two
- five
- four
last_updated: '2024-01-01 12:00:00'
total_count: 1
schema:
type: object
properties:
request_id:
type: string
example: 13ab6f3a-ddea-11eb-b4ce-1002b51e60a4
data:
type: object
properties:
continue_token: {}
templates:
type: array
items:
type: object
required:
- id
- subject
- tags
properties:
id:
type: string
example: '5355878'
name:
type: string
example: Order receipt
description: This parameter is only returned in 'search' response
template_name:
type: string
example: Order receipt
description: This parameter is not present in 'search' response
subject:
type: string
example: Order receipt for {{ product_name }}
tags:
type: array
required:
- types
- example
items:
type: string
example: one
last_updated:
type: string
example: '2024-01-01 12:00:00'
description: A timestamp indicating when this template was last updated
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/template/view:
post:
tags:
- TEMPLATES
summary: View template details
description: Returns details of the email template with the specified ID.
operationId: view-template-details
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: string
description: The case-sensitive ID of the email template that you wish to view
responses:
'200':
description: Details of a template
content:
application/json:
examples:
Result:
value:
request_id: b0107930-6410-11ed-b1a0-f23c9216bf47
data:
name: Shiny new name
id: testid
subject: Shiny new Subject
tags:
- tag1
- tag2
html_body: ''
text_body: ''
template_variables:
variable: strawberries
last_updated: '2024-01-01 12:00:00'
schema:
type: object
properties:
request_id:
type: string
example: f00c0856-dde8-11eb-b4ce-1002b51e60a4
data:
type: object
required:
- html_body
- id
- subject
- tags
- name
- template_variables
- text_body
properties:
html_body:
type: string
example: Shiny HTML body. This is a {{ variable }}
id:
type: string
example: testid
subject:
type: string
example: Shiny new Subject
tags:
type: array
items:
type: string
example: tagged
name:
type: string
example: Shiny new name
template_variables:
type: object
description: 'The pass-through values required by the template in the format `{"variable1": "value1", "variable2": "value2"}`'
text_body:
type: string
example: Shiny Text body
last_updated:
type: string
example: '2024-01-01 12:00:00'
description: A timestamp indicating when this template was last updated
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/users/smtp/add:
post:
tags:
- SMTP USERS
summary: Add an SMTP user
description: Add a new SMTP user to your account. Full details of the available options for new user accounts can be found in the SMTP User Guide.
operationId: add-an-smtp-user
requestBody:
content:
application/json:
schema:
type: object
required:
- username
properties:
username:
type: string
description: A username to access the SMTP2GO service via SMTP. Length = 5 to 100
email_password:
type: string
description: 'A valid password for your new SMTP User.
Must have an entropy of at least 64 bits. Consider using a password generator or leave blank for an auto generated value. Ideally contain at least: 12 characters, 1 digit, symbol, uppercase letter, and lowercase letter.'
description:
type: string
description: A comment or description of your new SMTP User
custom_ratelimit:
type: boolean
description: 'If true, a custom rate limit will be enabled for this user, and defined by the custom_ratelimit_value and custom_ratelimit_period. Default: false'
custom_ratelimit_value:
type: integer
description: If passed, defines the limit of emails this user can send in the period specified in custom_ratelimit_period.
Note: Only stores this value if custom_ratelimit is true.
format: int32
custom_ratelimit_period:
type: string
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
ip_pool:
type: integer
description: If passed, any emails sent with this SMTP user will use dedicated IP's in this IP Pool, This value can be found on the /v3/dedicated_ips/view endpoint.
example: 1234
feedback_enabled:
type: boolean
description: 'If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings. Default: false'
feedback_domain:
type: string
description: 'The domain to insert into the custom feedback links via the unsubscribe footer. Default: blank
Warning: - In order to use the SMTP2go feedback handling feature, this parameter needs to be set to "default"
- Setting this value to anything other than "default", disables the ability for SMTP2go to correctly manage the feedback responses and should not normally be set to anything other than "default"
'
default: default
feedback_html:
type: string
description: 'The HTML content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
feedback_text:
type: string
description: 'The text content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
open_tracking_enabled:
type: boolean
description: 'If true, open tracking will be enabled for this user. Default: false'
click_tracking_enabled:
type: boolean
description: 'If true, click tracking will be enabled for this user. Default: false'
archive_enabled:
type: boolean
description: 'If true, archiving (available on paid plans) will be enabled for this user. Default: false.'
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this SMTP User
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account. Default is [from].
status:
type: string
description: The initial status of the SMTP user, one of ['allowed', 'blocked', 'sandbox'], defaults to 'allowed'
default: allowed
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: SMTP User added
content:
application/json:
examples:
Result:
value:
request_id: 1d95eb4c-63c2-11ed-a771-f23c9216ce11
data:
results:
- username: test@example.com
email_password: aklkweiyasdaf
sending_allowed: true
custom_ratelimit: false
custom_ratelimit_value: null
custom_ratelimit_period: 0:00:00
description: ''
feedback_enabled: false
feedback_domain: default
feedback_html: ''
feedback_text: ''
archive_enabled: false
open_tracking_enabled: false
audit_email: null
bounce_notifications: from
status: allowed
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
required:
- results
properties:
results:
type: array
items:
type: object
required:
- username
- sending_allowed
- custom_ratelimit
properties:
comments:
type: string
example: Comment explaining how amazing this Test person is
username:
type: string
example: smtpuser@example.com
email_password:
type: string
example: H#8dkK2djs
deprecated: true
sending_allowed:
type: boolean
example: true
default: true
custom_ratelimit:
type: boolean
example: true
default: true
custom_ratelimit_value:
type: integer
example: 100
default: 0
nullable: true
custom_ratelimit_period:
type: string
example: 1 day
default_ratelimit_value:
type: string
example: 123
description: The default limit of emails this SMTP user can send in the period specified in default_ratelimit_period. Note: Used if custom_ratelimit is false.
default_ratelimit_period:
type: string
example: unlimited
description: 'The default period for which this SMTP user will be limited to the number of emails specified in default_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Used if custom_ratelimit is false.'
ippool:
type: integer
example: 1234
description:
type: string
feedback_enabled:
type: boolean
example: true
feedback_domain:
type: string
example: default
feedback_html:
type: string
feedback_text:
type: string
archive_enabled:
type: boolean
example: true
open_tracking_enabled:
type: boolean
example: true
audit_email:
type: string
nullable: true
bounce_notifications:
type: string
example: from
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/users/smtp/edit:
post:
tags:
- SMTP USERS
summary: Edit SMTP user details
description: Update an SMTP user's details with the parameters passed. Full details of the available options for SMTP user accounts is found in the SMTP User Guide.
operationId: edit-an-smtp-user
requestBody:
content:
application/json:
schema:
type: object
required:
- username
properties:
username:
type: string
description: A valid username of your existing SMTP User that you wish to edit
email_password:
type: string
description: 'A valid password for your new SMTP User.
Must have an entropy of at least 64 bits. Consider using a password generator or leave blank for an auto generated value. Ideally contain at least: 12 characters, 1 digit, symbol, uppercase letter, and lowercase letter.'
description:
type: string
description: A comment or description of your new SMTP User
custom_ratelimit:
type: boolean
description: If true, a custom rate limit will be enabled for this user, and defined by the custom_ratelimit_value and custom_ratelimit_period.
default: false
custom_ratelimit_value:
type: integer
description: 'If passed, defines the maximum number of emails this user can send in the custom_ratelimit_period. Values: 1 to 2147483647'
format: int32
custom_ratelimit_period:
type: string
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value. Syntax: " {hour[s]|day[s]|week[s]|month[s]}[,hh:mm:ss]". Examples: "1 day", "1 week", "1 month", "2 months 3:00:00"'
ip_pool:
type: integer
description: If passed, any emails sent with this SMTP user will use dedicated IP's in this IP Pool, This value can be found on the /v3/dedicated_ips/view endpoint.
example: 1234
feedback_enabled:
type: boolean
description: 'If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings. Default: false'
feedback_domain:
type: string
description: The domain to insert into the custom feedback links via the unsubscribe footer
feedback_html:
type: string
description: The HTML content to insert into the custom feedback email body via the unsubscribe footer
feedback_text:
type: string
description: The text content to insert into the custom feedback email body via the unsubscribe footer
open_tracking_enabled:
type: boolean
description: 'If true, open tracking will be enabled for this user. Default: false'
click_tracking_enabled:
type: boolean
description: 'If true, click tracking will be enabled for this user. Default: false'
archive_enabled:
type: boolean
description: 'If true, archiving will be enabled for this user. Default: false'
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this SMTP User
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account. Default is [from].
status:
type: string
description: If passed will set the status of the SMTP user, one of ['allowed', 'blocked', 'sandbox']
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: SMTP User edited
content:
application/json:
examples:
Result:
value:
request_id: 2c1e4002-63c6-11ed-8bc9-f23c9216ceac
data:
results:
- username: smtpuser@example.com
email_password: qet_^3qU1341%*ert
sending_allowed: true
custom_ratelimit: false
custom_ratelimit_value: null
custom_ratelimit_period: 0:00:00
description: ''
feedback_enabled: false
feedback_domain: default
feedback_html: ''
feedback_text: ''
archive_enabled: false
open_tracking_enabled: false
audit_email: null
bounce_notifications: from
status: allowed
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
required:
- results
properties:
results:
type: array
items:
type: object
required:
- username
- sending_allowed
- custom_ratelimit
properties:
comments:
type: string
example: Comment explaining how amazing this Test person is
username:
type: string
example: smtpuser@example.com
email_password:
type: string
example: H#8dkK2djs
deprecated: true
sending_allowed:
type: boolean
example: true
default: true
custom_ratelimit:
type: boolean
example: true
default: true
custom_ratelimit_value:
type: integer
example: 100
default: 0
nullable: true
custom_ratelimit_period:
type: string
example: 1 day
default_ratelimit_value:
type: string
example: 123
description: The default limit of emails this SMTP user can send in the period specified in default_ratelimit_period. Note: Used if custom_ratelimit is false.
default_ratelimit_period:
type: string
example: unlimited
description: 'The default period for which this SMTP user will be limited to the number of emails specified in default_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Used if custom_ratelimit is false.'
ippool:
type: integer
example: 1234
description:
type: string
feedback_enabled:
type: boolean
example: true
feedback_domain:
type: string
example: default
feedback_html:
type: string
feedback_text:
type: string
archive_enabled:
type: boolean
example: true
open_tracking_enabled:
type: boolean
example: true
audit_email:
type: string
nullable: true
bounce_notifications:
type: string
example: from
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
patch:
tags:
- SMTP USERS
summary: Patch an SMTP user
description: Patch an existing SMTP user ignoring missing properties
operationId: patch-smtp-user
requestBody:
content:
application/json:
schema:
type: object
required:
- username
properties:
username:
type: string
description: A valid username of your existing SMTP User that you wish to edit
example: my_user
email_password:
type: string
description: A valid SMTP2GO password for your existing SMTP User.
Must have an entropy of at least 64 bits. Consider using a password generator or leave blank for an auto generated value.
description:
type: string
description: A comment or description of the SMTP user
example: test smtp user
custom_ratelimit:
type: boolean
description: If true, a custom rate limit will be enabled for this user, and defined by the custom_ratelimit_value and custom_ratelimit_period.
custom_ratelimit_value:
type: integer
description: If passed, defines the limit of emails this user can send in the period specified in custom_ratelimit_period.
Note: Only stores this value if custom_ratelimit is true.
custom_ratelimit_period:
type: string
example: 0:30:00
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
ip_pool:
type: integer
description: If passed, any emails sent with this API key will use dedicated IP's in this IP Pool, This value can be found on the /v3/dedicated_ips/view endpoint.
example: 1234
feedback_enabled:
type: boolean
description: If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings.
default: null
feedback_html:
type: string
description: The HTML content to insert into the custom feedback email body via the unsubscribe footer.
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
example: test_html
default: null
feedback_text:
type: string
description: The text content to insert into the custom feedback email body via the unsubscribe footer.
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
example: test_text
default: null
open_tracking_enabled:
type: boolean
description: If true, open tracking will be enabled for this SMTP user.
default: null
click_tracking_enabled:
type: boolean
description: If true, click tracking will be enabled for this SMTP user.
default: null
archive_enabled:
type: boolean
description: If true, archiving (available on paid plans) will be enabled for this SMTP user.
default: null
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this SMTP user.
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account.
default: null
status:
type: string
description: The initial status of the SMTP user, one of ['allowed', 'blocked', 'sandbox'].
default: null
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Successfully patched SMTP user
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
- username: my_user
description: test smtp user
feedback_enabled: true
feedback_html: test_html
feedback_text: test_text
ippool: 1234
bounce_notifications: from
status: allowed
schema:
type: object
required:
- data
- request_id
properties:
data:
type: array
description: An array of SMTP user results
items:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
properties:
username:
type: string
example: username
description: The username of the SMTP user
description:
type: string
description: A comment or description of the SMTP user.
custom_rate_limit:
type: boolean
example: true
default: false
description: If enabled will use the values of custom_ratelimit_value and custom_ratelimit_period for rate limiting.
custom_ratelimit_value:
type: integer
example: 123
description: If passed, defines the limit of emails this SMTP user can send in the period specified in custom_ratelimit_period.
custom_ratelimit_period:
type: string
example: 0:30:00
description: 'If passed, defines the period for which this user will be limited to the number of emails specified in custom_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Only stores this value if custom_ratelimit is true.'
default_ratelimit_value:
type: string
example: 123
description: The default limit of emails this SMTP user can send in the period specified in default_ratelimit_period. Note: Used if custom_ratelimit is false.
default_ratelimit_period:
type: string
example: unlimited
description: 'The default period for which this SMTP user will be limited to the number of emails specified in default_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Used if custom_ratelimit is false.'
ippool:
type: integer
example: 1234
feedback_enabled:
type: boolean
description: If true, custom feedback via the unsubscribe footer will be enabled and defined by the below settings.
default: false
feedback_html:
type: string
description: 'The HTML content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
feedback_text:
type: string
description: 'The text content to insert into the custom feedback email body via the unsubscribe footer. Default: blank
System Variables (Only available here):- Unsubscribe URL = %%UNSUBSCRIBE%%
- Email address = %%EMAIL%%
'
open_tracking_enabled:
type: boolean
description: If true, open tracking will be enabled for this SMTP user.
default: false
click_tracking_enabled:
type: boolean
description: If true, click tracking will be enabled for this SMTP user.
default: false
archive_enabled:
type: boolean
description: If true, archiving (available on paid plans) will be enabled for this SMTP user.
default: false
audit_email:
type: string
description: If passed, this email will be BCC'd on all emails sent by this SMTP user.
bounce_notifications:
type: string
description: If passed, will control how bounce notifications are handled. Must be one of [from, drop, or a valid email address]. [from] will return the email to sender, [drop] will discard the event, and the inclusion of an email address will send the event on to this account.
default: from
status:
type: string
description: The initial status of the SMTP user, one of ['allowed', 'blocked', 'sandbox'].
default: allowed
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/users/smtp/remove:
post:
tags:
- SMTP USERS
summary: Remove an SMTP user
description: Remove an SMTP user from your account
operationId: remove-an-smtp-user
requestBody:
content:
application/json:
schema:
type: object
required:
- username
properties:
username:
type: string
description: A valid SMTP2GO username of your existing SMTP User that you wish to remove
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: SMTP User removed
content:
application/json:
examples:
Result:
value:
request_id: 2fde4fc4-63c7-11ed-a210-f23c93560c0e
data:
results:
- username: temp2
email_password: 8dkK2djs
sending_allowed: true
custom_ratelimit: false
custom_ratelimit_value: null
custom_ratelimit_period: 0:00:00
description: ''
feedback_enabled: false
feedback_domain: default
feedback_html: ''
feedback_text: ''
archive_enabled: false
open_tracking_enabled: false
audit_email: null
bounce_notifications: from
status: allowed
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
required:
- results
properties:
results:
type: array
items:
type: object
required:
- username
- sending_allowed
- custom_ratelimit
properties:
comments:
type: string
example: Comment explaining how amazing this Test person is
username:
type: string
example: smtpuser@example.com
email_password:
type: string
example: H#8dkK2djs
deprecated: true
sending_allowed:
type: boolean
example: true
default: true
custom_ratelimit:
type: boolean
example: true
default: true
custom_ratelimit_value:
type: integer
example: 100
default: 0
nullable: true
custom_ratelimit_period:
type: string
example: 1 day
default_ratelimit_value:
type: string
example: 123
description: The default limit of emails this SMTP user can send in the period specified in default_ratelimit_period. Note: Used if custom_ratelimit is false.
default_ratelimit_period:
type: string
example: unlimited
description: 'The default period for which this SMTP user will be limited to the number of emails specified in default_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Used if custom_ratelimit is false.'
ippool:
type: integer
example: 1234
description:
type: string
feedback_enabled:
type: boolean
example: true
feedback_domain:
type: string
example: default
feedback_html:
type: string
feedback_text:
type: string
archive_enabled:
type: boolean
example: true
open_tracking_enabled:
type: boolean
example: true
audit_email:
type: string
nullable: true
bounce_notifications:
type: string
example: from
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/users/smtp/view:
post:
tags:
- SMTP USERS
summary: View SMTP users
description: Returns a list of all SMTP users that are managed by this account, or details of a specific user, when you include the [username] in your request. If no users are available, this will return an empty list.
operationId: view-smtp-users
requestBody:
content:
application/json:
schema:
type: object
properties:
username:
type: string
description: If passed, a valid SMTP2GO username of your existing SMTP User that you wish to view
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here
responses:
'200':
description: List of SMTP Users
content:
application/json:
examples:
Result:
value:
request_id: ae4a8446-63c6-11ed-95d3-f23c92160e3c
data:
results:
- username: smtpuser@example.com
email_password: ',w0z9YFTT[izrH7>'
sending_allowed: true
custom_ratelimit: false
custom_ratelimit_value: null
custom_ratelimit_period: 0:00:00
description: ''
feedback_enabled: false
feedback_domain: default
feedback_html: ''
feedback_text: ''
archive_enabled: false
open_tracking_enabled: false
audit_email: null
bounce_notifications: from
status: allowed
default_ratelimit_value: 0
default_ratelimit_period: unlimited
schema:
type: object
required:
- request_id
- data
properties:
request_id:
type: string
example: aa253464-0bd0-467a-b24b-6159dcd7be60
data:
type: object
required:
- results
properties:
results:
type: array
items:
type: object
required:
- username
- sending_allowed
- custom_ratelimit
properties:
comments:
type: string
example: Comment explaining how amazing this Test person is
username:
type: string
example: smtpuser@example.com
email_password:
type: string
example: H#8dkK2djs
deprecated: true
sending_allowed:
type: boolean
example: true
default: true
custom_ratelimit:
type: boolean
example: true
default: true
custom_ratelimit_value:
type: integer
example: 100
default: 0
nullable: true
custom_ratelimit_period:
type: string
example: 1 day
default_ratelimit_value:
type: string
example: 123
description: The default limit of emails this SMTP user can send in the period specified in default_ratelimit_period. Note: Used if custom_ratelimit is false.
default_ratelimit_period:
type: string
example: unlimited
description: 'The default period for which this SMTP user will be limited to the number of emails specified in default_ratelimit_value.
Syntax: "\ [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".
Examples: "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".
Note: Used if custom_ratelimit is false.'
ippool:
type: integer
example: 1234
description:
type: string
feedback_enabled:
type: boolean
example: true
feedback_domain:
type: string
example: default
feedback_html:
type: string
feedback_text:
type: string
archive_enabled:
type: boolean
example: true
open_tracking_enabled:
type: boolean
example: true
audit_email:
type: string
nullable: true
bounce_notifications:
type: string
example: from
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/webhook/add:
post:
tags:
- WEBHOOKS
summary: Add a new Webhook
description: Add a new webhook with the given configuration. Setup of webhooks can be done on the Settings > Webhooks page in your SMTP2GO control panel.
operationId: add-webhook
requestBody:
content:
application/json:
schema:
type: object
required:
- url
properties:
url:
type: string
description: The URL of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [delivered,unsubscribe,spam,bounce,processed,reject,click,open].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [delivered,failed,rejected,sending,submitted].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either form or json.
default: form
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
auth_header_type:
type: string
description: The type of authentiction header, Either bearer or basic or empty for no authentication.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either base64(user:pass) or a custom token.
default: ''
responses:
'200':
description: Webhook added
content:
application/json:
examples:
Result:
value:
request_id: 5b6c5cf6-9517-44fd-a273-9a62efb12e57
data:
url: https://example.com/test-webhook
id: 4320
events:
- processed
headers: X-Test-Header
usernames: MyUser1
sms_events:
- sending
output_format: json
schema:
type: object
required:
- data
- request_id
properties:
data:
type: object
properties:
url:
type: string
example: https://example.com/test-webhook
description: The URL of the webhook.
id:
type: integer
description: The ID of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [delivered,unsubscribe,spam,bounce,processed,reject,click,open].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [delivered,failed,rejected,sending,submitted].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either form or json.
default: form
auth_header_type:
type: string
description: The type of authentiction header, Either bearer or basic.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either base64(user:pass) or a custom token.
default: ''
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/webhook/edit:
post:
tags:
- WEBHOOKS
summary: Edit a specified Webhook
description: Make changes to a specific webhook using its unique ID.
operationId: edit-webhook
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: integer
description: The ID of an existing webhook you want to edit
url:
type: string
description: The URL of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [delivered,unsubscribe,spam,bounce,processed,reject,click,open].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [delivered,failed,rejected,sending,submitted].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either form or json
default: form
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
auth_header_type:
type: string
description: The type of authentiction header, Either bearer or basic or empty for no authentication.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either base64(user:pass) or a custom token.
default: ''
responses:
'200':
description: Webhook updated
content:
application/json:
examples:
Result:
value:
request_id: 5b6c5cf6-9517-44fd-a273-9a62efb12e57
data:
url: https://example.com/test-webhook-2"
id: 4320
events:
- processed
- open
- spam
headers: X-Test-Header
usernames: MyUser1
sms_events: []
output_format: form
schema:
type: object
required:
- data
- request_id
properties:
data:
type: object
properties:
url:
type: string
example: https://example.com/test-webhook
description: The URL of the webhook.
id:
type: integer
description: The ID of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [delivered,unsubscribe,spam,bounce,processed,reject,click,open].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [delivered,failed,rejected,sending,submitted].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either form or json.
default: form
auth_header_type:
type: string
description: The type of authentiction header, Either bearer or basic.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either base64(user:pass) or a custom token.
default: ''
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/webhook/remove:
post:
tags:
- WEBHOOKS
summary: Remove a specified Webhook
description: Remove a specific webhook using its unique ID.
operationId: remove-webhook
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: integer
description: The ID of an existing webhook you want to remove
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Webhook removed
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
url: https://example.com/webhook"
id: 4317
events:
- spam
sms_events: []
headers: []
usernames: []
output_format: json
schema:
type: object
required:
- data
- request_id
properties:
data:
type: object
properties:
url:
type: string
example: https://example.com/test-webhook
description: The URL of the webhook.
id:
type: integer
description: The ID of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [delivered,unsubscribe,spam,bounce,processed,reject,click,open].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [delivered,failed,rejected,sending,submitted].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either form or json.
default: form
auth_header_type:
type: string
description: The type of authentiction header, Either bearer or basic.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either base64(user:pass) or a custom token.
default: ''
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/webhook/view:
post:
tags:
- WEBHOOKS
summary: View Webhooks
description: Returns information for configured webhooks.
operationId: view-webhook
requestBody:
content:
application/json:
schema:
type: object
required:
- url
properties:
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Returned webhook information
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
url: https://example.com/webhook"
id: 4317
events:
- spam
sms_events: []
headers: []
usernames: []
output_format: json
schema:
type: object
required:
- data
- request_id
properties:
data:
type: object
properties:
url:
type: string
example: https://example.com/test-webhook
description: The URL of the webhook.
id:
type: integer
description: The ID of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [delivered,unsubscribe,spam,bounce,processed,reject,click,open].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [delivered,failed,rejected,sending,submitted].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either form or json.
default: form
auth_header_type:
type: string
description: The type of authentiction header, Either bearer or basic.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either base64(user:pass) or a custom token.
default: ''
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
components:
securitySchemes:
sec0:
type: apiKey
in: header
name: X-Smtp2go-Api-Key
x-default: ${SMTP2GO_API_KEY}