Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/smtp2go-smtp-users-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
OpenAPI Specification
openapi: 3.2.0
info:
title: SMTP2GO SMTP USERS 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: SMTP USERS
description: Manage SMTP relay usernames
paths:
/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. <br><br>Must have an entropy of at least 64 bits. <a target=''_blank'' href=''https://www.calculator.net/password-generator.html''>Consider using a password generator</a> 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 <code>custom_ratelimit_value</code> and <code>custom_ratelimit_period</code>. Default: false'
custom_ratelimit_value:
type: integer
description: If passed, defines the limit of emails this user can send in the period specified in <code>custom_ratelimit_period</code>.<br><br><strong>Note:</strong> Only stores this value if <code>custom_ratelimit</code> 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 <code>custom_ratelimit_value</code>.<br><br><strong>Syntax:</strong> "\<n\> [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".<br><br><strong>Examples: </strong> "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".<br><br><strong>Note:</strong> Only stores this value if <code>custom_ratelimit</code> 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 <code>/v3/dedicated_ips/view</code> 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<br><br><strong>Warning:</strong> <ul> <li>In order to use the SMTP2go feedback handling feature, this parameter needs to be set to "default"</li><li>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"</li><ul>'
default: default
feedback_html:
type: string
description: 'The HTML content to insert into the custom feedback email body via the unsubscribe footer. Default: blank <br><br><strong>System Variables (Only available here):</strong><ul><li>Unsubscribe URL = %%UNSUBSCRIBE%% </li><li>Email address = %%EMAIL%%</li></ul>'
feedback_text:
type: string
description: 'The text content to insert into the custom feedback email body via the unsubscribe footer. Default: blank<br><br><strong>System Variables (Only available here):</strong><ul><li>Unsubscribe URL = %%UNSUBSCRIBE%% </li><li>Email address = %%EMAIL%%</li></ul>'
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 <code>default_ratelimit_period</code>. <strong>Note:</strong> Used if <code>custom_ratelimit</code> 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 <code>default_ratelimit_value</code>.<br><br><strong>Syntax:</strong> "\<n\> [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".<br><br><strong>Examples: </strong> "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".<br><br><strong>Note:</strong> Used if <code>custom_ratelimit</code> 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. <br><br> 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 <code>custom_ratelimit_value</code> and <code>custom_ratelimit_period</code>.
default: false
custom_ratelimit_value:
type: integer
description: 'If passed, defines the maximum number of emails this user can send in the <code>custom_ratelimit_period</code>. 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 <code>custom_ratelimit_value</code>. Syntax: "<n> {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 <code>/v3/dedicated_ips/view</code> 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 <code>default_ratelimit_period</code>. <strong>Note:</strong> Used if <code>custom_ratelimit</code> 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 <code>default_ratelimit_value</code>.<br><br><strong>Syntax:</strong> "\<n\> [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".<br><br><strong>Examples: </strong> "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".<br><br><strong>Note:</strong> Used if <code>custom_ratelimit</code> 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. <br><br>Must have an entropy of at least 64 bits. <a target='_blank' href='https://www.calculator.net/password-generator.html'>Consider using a password generator</a> 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 <code>custom_ratelimit_value</code> and <code>custom_ratelimit_period</code>.
custom_ratelimit_value:
type: integer
description: If passed, defines the limit of emails this user can send in the period specified in <code>custom_ratelimit_period</code>.<br><br><strong>Note:</strong> Only stores this value if <code>custom_ratelimit</code> 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 <code>custom_ratelimit_value</code>.<br><br><strong>Syntax:</strong> "\<n\> [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".<br><br><strong>Examples: </strong> "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".<br><br><strong>Note:</strong> Only stores this value if <code>custom_ratelimit</code> 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 <code>/v3/dedicated_ips/view</code> 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.<br><br><strong>System Variables (Only available here):</strong><ul><li>Unsubscribe URL = %%UNSUBSCRIBE%% </li><li>Email address = %%EMAIL%%</li></ul>
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.<br><br><strong>System Variables (Only available here):</strong><ul><li>Unsubscribe URL = %%UNSUBSCRIBE%% </li><li>Email address = %%EMAIL%%</li></ul>
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 <code>custom_ratelimit_value</code> and <code>custom_ratelimit_period</code> 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 <code>custom_ratelimit_period</code>.
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 <code>custom_ratelimit_value</code>.<br><br><strong>Syntax:</strong> "\<n\> [hour[s]|day[s]|week[s]|month[s]] [hh:mm:ss]".<br><br><strong>Examples: </strong> "0:30:00", "1 hour", "2 days", "3 months", "4 months 5:00:00".<br><br><strong>Note:</strong> Only stores this value if <code>custom_ratelimit</code> 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 <code>default_ratelimit_period</code>. <strong>Note:</strong> Used if <code
# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/smtp2go/refs/heads/main/openapi/smtp2go-smtp-users-api-openapi.yml