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-webhooks-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 WEBHOOKS 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: WEBHOOKS
description: Create and manage event webhooks
paths:
/webhook/add:
post:
tags:
- WEBHOOKS
summary: Add a new Webhook
description: Add a new webhook with the given configuration. Setup of webhooks can be done on the Settings > Webhooks page in your SMTP2GO control panel.
operationId: add-webhook
requestBody:
content:
application/json:
schema:
type: object
required:
- url
properties:
url:
type: string
description: The URL of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [<code>delivered</code>,<code>unsubscribe</code>,<code>spam</code>,<code>bounce</code>,<code>processed</code>,<code>reject</code>,<code>click</code>,<code>open</code>].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [<code>delivered</code>,<code>failed</code>,<code>rejected</code>,<code>sending</code>,<code>submitted</code>].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either <code>form</code> or <code>json</code>.
default: form
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
auth_header_type:
type: string
description: The type of authentiction header, Either <code>bearer</code> or <code>basic</code> or empty for no authentication.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either <code>base64(user:pass)</code> or <code>a custom token</code>.
default: ''
responses:
'200':
description: Webhook added
content:
application/json:
examples:
Result:
value:
request_id: 5b6c5cf6-9517-44fd-a273-9a62efb12e57
data:
url: https://example.com/test-webhook
id: 4320
events:
- processed
headers: X-Test-Header
usernames: MyUser1
sms_events:
- sending
output_format: json
schema:
type: object
required:
- data
- request_id
properties:
data:
type: object
properties:
url:
type: string
example: https://example.com/test-webhook
description: The URL of the webhook.
id:
type: integer
description: The ID of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [<code>delivered</code>,<code>unsubscribe</code>,<code>spam</code>,<code>bounce</code>,<code>processed</code>,<code>reject</code>,<code>click</code>,<code>open</code>].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [<code>delivered</code>,<code>failed</code>,<code>rejected</code>,<code>sending</code>,<code>submitted</code>].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either <code>form</code> or <code>json</code>.
default: form
auth_header_type:
type: string
description: The type of authentiction header, Either <code>bearer</code> or <code>basic</code>.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either <code>base64(user:pass)</code> or <code>a custom token</code>.
default: ''
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/webhook/edit:
post:
tags:
- WEBHOOKS
summary: Edit a specified Webhook
description: Make changes to a specific webhook using its unique ID.
operationId: edit-webhook
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: integer
description: The ID of an existing webhook you want to edit
url:
type: string
description: The URL of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [<code>delivered</code>,<code>unsubscribe</code>,<code>spam</code>,<code>bounce</code>,<code>processed</code>,<code>reject</code>,<code>click</code>,<code>open</code>].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [<code>delivered</code>,<code>failed</code>,<code>rejected</code>,<code>sending</code>,<code>submitted</code>].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either <code>form</code> or <code>json</code>
default: form
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
auth_header_type:
type: string
description: The type of authentiction header, Either <code>bearer</code> or <code>basic</code> or empty for no authentication.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either <code>base64(user:pass)</code> or <code>a custom token</code>.
default: ''
responses:
'200':
description: Webhook updated
content:
application/json:
examples:
Result:
value:
request_id: 5b6c5cf6-9517-44fd-a273-9a62efb12e57
data:
url: https://example.com/test-webhook-2"
id: 4320
events:
- processed
- open
- spam
headers: X-Test-Header
usernames: MyUser1
sms_events: []
output_format: form
schema:
type: object
required:
- data
- request_id
properties:
data:
type: object
properties:
url:
type: string
example: https://example.com/test-webhook
description: The URL of the webhook.
id:
type: integer
description: The ID of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [<code>delivered</code>,<code>unsubscribe</code>,<code>spam</code>,<code>bounce</code>,<code>processed</code>,<code>reject</code>,<code>click</code>,<code>open</code>].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [<code>delivered</code>,<code>failed</code>,<code>rejected</code>,<code>sending</code>,<code>submitted</code>].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either <code>form</code> or <code>json</code>.
default: form
auth_header_type:
type: string
description: The type of authentiction header, Either <code>bearer</code> or <code>basic</code>.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either <code>base64(user:pass)</code> or <code>a custom token</code>.
default: ''
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/webhook/remove:
post:
tags:
- WEBHOOKS
summary: Remove a specified Webhook
description: Remove a specific webhook using its unique ID.
operationId: remove-webhook
requestBody:
content:
application/json:
schema:
type: object
required:
- id
properties:
id:
type: integer
description: The ID of an existing webhook you want to remove
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Webhook removed
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
url: https://example.com/webhook"
id: 4317
events:
- spam
sms_events: []
headers: []
usernames: []
output_format: json
schema:
type: object
required:
- data
- request_id
properties:
data:
type: object
properties:
url:
type: string
example: https://example.com/test-webhook
description: The URL of the webhook.
id:
type: integer
description: The ID of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [<code>delivered</code>,<code>unsubscribe</code>,<code>spam</code>,<code>bounce</code>,<code>processed</code>,<code>reject</code>,<code>click</code>,<code>open</code>].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [<code>delivered</code>,<code>failed</code>,<code>rejected</code>,<code>sending</code>,<code>submitted</code>].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either <code>form</code> or <code>json</code>.
default: form
auth_header_type:
type: string
description: The type of authentiction header, Either <code>bearer</code> or <code>basic</code>.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either <code>base64(user:pass)</code> or <code>a custom token</code>.
default: ''
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
/webhook/view:
post:
tags:
- WEBHOOKS
summary: View Webhooks
description: Returns information for configured webhooks.
operationId: view-webhook
requestBody:
content:
application/json:
schema:
type: object
required:
- url
properties:
subaccount_id:
type: string
description: If you wish to make this API call on behalf of a subaccount then include its unique ID here.
responses:
'200':
description: Returned webhook information
content:
application/json:
examples:
Result:
value:
request_id: f3e50113-deb2-4e54-9675-2ea497c3732e
data:
url: https://example.com/webhook"
id: 4317
events:
- spam
sms_events: []
headers: []
usernames: []
output_format: json
schema:
type: object
required:
- data
- request_id
properties:
data:
type: object
properties:
url:
type: string
example: https://example.com/test-webhook
description: The URL of the webhook.
id:
type: integer
description: The ID of the webhook.
events:
type: array
description: A list of events the webhook will receive, from this list [<code>delivered</code>,<code>unsubscribe</code>,<code>spam</code>,<code>bounce</code>,<code>processed</code>,<code>reject</code>,<code>click</code>,<code>open</code>].
items:
type: string
sms_events:
type: array
description: A list of SMS events the webhook will receive, from this list [<code>delivered</code>,<code>failed</code>,<code>rejected</code>,<code>sending</code>,<code>submitted</code>].
items:
type: string
headers:
type: array
description: Custom headers you would specifically like sent in the event data. The headers must already exist in the emails. Subject and Message-id headers are sent by default.
items:
type: string
usernames:
type: array
description: Usernames to be included in this webhook. All usernames will be included if none are specified.
items:
type: string
output_format:
type: string
description: The format of the webhook data. Either <code>form</code> or <code>json</code>.
default: form
auth_header_type:
type: string
description: The type of authentiction header, Either <code>bearer</code> or <code>basic</code>.
default: ''
auth_header_value:
type: string
description: The value of authentiction header, Either <code>base64(user:pass)</code> or <code>a custom token</code>.
default: ''
request_id:
type: string
example: 4b661d88-6b2d-11eb-8bb3-f23c92bb31d2
'400':
description: '400'
content:
application/json:
examples:
Result:
value:
request_id: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
error: You do not have permission to access this API endpoint
error_code: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
schema:
type: object
properties:
request_id:
type: string
example: 22e5acba-43bf-11e6-ae42-408d5cce2644
data:
type: object
properties:
error:
type: string
example: You do not have permission to access this API endpoint
error_code:
type: string
example: E_ApiResponseCodes.ENDPOINT_PERMISSION_DENIED
deprecated: false
components:
securitySchemes:
sec0:
type: apiKey
in: header
name: X-Smtp2go-Api-Key
x-default: ${SMTP2GO_API_KEY}