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-subaccounts-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 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}