SMTP2GO Subaccounts API

Subaccount management

Operations 5

POST /subaccount/add Add a subaccount #
POST /subaccount/close Close a subaccount #
POST /subaccount/edit Update a subaccount #
POST /subaccount/reopen Reopen a closed subaccount #
POST /subaccounts/search View subaccounts #

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-subaccounts-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-subaccounts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SMTP2GO SUBACCOUNTS 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: SUBACCOUNTS
  description: Create, update, close and reopen subaccounts
paths:
  /subaccount/add:
    post:
      tags:
      - SUBACCOUNTS
      summary: Add a subaccount
      description: Adds a new subaccount on your master account.<strong> Note:</strong> 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. <br><br><strong>Valid values:</strong><br>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.<br><br><strong>Note:</strong> See 'fuzzy_search' for impact on case sensitivity
                  items:
                    type: string
                states:
                  type: string
                  description: Controls which states you will be searched <br><br><strong>Valid values:</strong><br> 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
components:
  securitySchemes:
    sec0:
      type: apiKey
      in: header
      name: X-Smtp2go-Api-Key
      x-default: ${SMTP2GO_API_KEY}