SMTP2GO SMTP Users API

SMTP user account management

Operations 5

POST /users/smtp/add Add an SMTP user #
POST /users/smtp/edit Edit SMTP user details #
PATCH /users/smtp/edit Patch an SMTP user #
POST /users/smtp/remove Remove an SMTP user #
POST /users/smtp/view View SMTP users #

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.
All 92 tools →

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.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

smtp2go-smtp-users-api-openapi.yml Raw ↑
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