openapi: 3.2.0 info: title: SMTP2GO SENDER DOMAINS 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: SENDER DOMAINS description: Add, verify and manage sender domains, tracking and return-path subdomains paths: /domain/add: post: tags: - SENDER DOMAINS summary: Add a sender domain description: Add a sender domain to your account. Note that you must own any domains you wish to include in this list, as you will be required to verify and authenticate the emails sent via that domain. Find full details in the Sender Domains Guide. operationId: add-sender-domain requestBody: content: application/json: schema: type: object required: - domain properties: domain: type: string description: Domain to add as a sender domain tracking_subdomain: type: string description: An optional subdomain used for click or open tracking and unsubscribe links returnpath_subdomain: type: string description: An optional subdomain to use as a return-path subdomain auto_verify: type: boolean description: If true, verify the domain now removing the need to call the 'domain/verify' endpoint or wait for the periodic verification every 7 minutes.

Note: In order to successfully complete the verification, the 'tracking_subdomain' and 'returnpath_subdomain' must be configured in the domain DNS and propagated. default: true requisition_ssl: type: boolean description: If true, requisition an SSL certificate for the tracking domain once verification is complete default: true subaccount_id: type: string description: If you wish to make this API call on behalf of a subaccount then include its unique ID here subaccount_access: type: object description: Allow subaccounts to send from verified sender domains on the master account properties: subaccounts: type: array description: A list of subaccount_ids to be given access. ID's can be found by querying /subaccounts/search future_subaccounts: type: boolean description: If set to true, will automatically add any new subaccounts to the access list responses: '200': description: Domain added content: application/json: examples: Result: value: request_id: e023461c-8c86-11e9-b984-408d5cce2644 data: domains: - domain: fulldomain: example.com subdomain: null domain: example suffix: com dkim_selector: s123456 dkim_verified: true dkim_status: '' dkim_value: dkim.smtp2go.net rpath_selector: em123456 rpath_verified: true rpath_status: '' rpath_value: return.smtp2go.net setup_link: trackers: - fulldomain: link.example.com subdomain: link domain: example suffix: com cname_verified: false cname_status: '' cname_value: '' enabled: false schema: type: object required: - request_id - data properties: request_id: type: string example: e023461c-8c86-11e9-b984-408d5cce2644 data: type: object required: - domains properties: domains: type: array items: type: object properties: domain: type: object required: - dkim_value - domain - suffix - rpath_status - rpath_value - dkim_status - subdomain - fulldomain - dkim_selector - setup_link properties: dkim_value: type: string example: dkim.smtp2go.net domain: type: string example: example suffix: type: string example: com rpath_selector: type: string example: '' rpath_status: type: string example: '' rpath_verified: type: boolean example: true default: true rpath_value: type: string example: return.smtp2go.net dkim_status: type: string example: '' dkim_verified: type: boolean example: true default: true subdomain: {} fulldomain: type: string example: example.com dkim_selector: type: string example: s123456 setup_link: type: string description: A URL that can be used to automate DNS additions trackers: type: array items: type: object required: - cname_value - cname_status properties: cname_value: type: string example: '' cname_status: type: string example: '' cname_verified: type: boolean example: false default: true domain: type: string example: example suffix: type: string example: com subdomain: type: string example: link enabled: type: boolean example: false default: true fulldomain: type: string example: link.example.com subaccount_access: type: object properties: subaccounts: type: array description: A list of subaccount IDs that were given access the sender domain. future_subaccounts: type: boolean description: If true, any new subaccounts added will automatically be given access. default: false '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 /domain/remove: post: tags: - SENDER DOMAINS summary: Remove a sender domain description: Remove a sender domain from your account operationId: remove-sender-domain requestBody: content: application/json: schema: type: object required: - domain properties: domain: type: string description: Sender Domain to delete. 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: Sender domain removed content: application/json: examples: Result: value: request_id: 117607da-8c88-11e9-96fa-408d5cce2644 data: domains: [] schema: type: object required: - request_id - data properties: request_id: type: string example: e023461c-8c86-11e9-b984-408d5cce2644 data: type: object required: - domains properties: domains: type: array items: type: object properties: domain: type: object required: - dkim_value - domain - suffix - rpath_status - rpath_value - dkim_status - subdomain - fulldomain - dkim_selector properties: dkim_value: type: string example: dkim.smtp2go.net domain: type: string example: example suffix: type: string example: com rpath_selector: type: string example: '' rpath_status: type: string example: '' rpath_verified: type: boolean example: true default: true rpath_value: type: string example: return.smtp2go.net dkim_status: type: string example: '' dkim_verified: type: boolean example: true default: true subdomain: {} fulldomain: type: string example: example.com dkim_selector: type: string example: s123456 trackers: type: array items: type: object required: - cname_value - cname_status properties: cname_value: type: string example: '' cname_status: type: string example: '' cname_verified: type: boolean example: false default: true domain: type: string example: example suffix: type: string example: com subdomain: type: string example: link enabled: type: boolean example: false default: true fulldomain: type: string example: link.example.com subaccount_access: type: object properties: subaccounts: type: array description: A list of subaccount IDs that were given access the sender domain. future_subaccounts: type: boolean description: If true, any new subaccounts added will automatically be given access. default: false '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 /domain/returnpath: post: tags: - SENDER DOMAINS summary: Edit the return-path subdomain description: A Return Path Subdomain is used to instruct the server where to return emails that are not deliverable (ie. Bounces). This endpoint allows you to edit a Return Path Subdomain for a particular sender domain. Full details can be found in the Sender Domain Guide. operationId: edit-return-path-domain requestBody: content: application/json: schema: type: object required: - domain - old_subdomain - new_subdomain properties: domain: type: string description: The sender domain to edit the return-path subdomain for old_subdomain: type: string description: The domains old return-path subdomain default: returns new_subdomain: type: string description: The domains new return-path subdomain default: return 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: Return-path subdomain edited content: application/json: examples: Result: value: request_id: 86758976-934b-11e7-b5be-480fcf01a6f2 data: domains: - domain: fulldomain: example.com subdomain: null domain: example suffix: com dkim_selector: s123456 dkim_verified: true dkim_status: '' dkim_value: dkim.smtp2go.net rpath_selector: returns rpath_verified: true rpath_status: '' rpath_value: return.smtp2go.net trackers: - fulldomain: link.example.co.uk subdomain: link domain: example suffix: co.uk cname_verified: false cname_status: 'Lookup CNAME(link.example.co.uk.) on ns1.falcoda.net returned no results Lookup CNAME(link.example.co.uk.) on ns1.falcoda.net returned no results Lookup CNAME(link.example.co.uk.) on ns2.falcoda.net returned no results Lookup CNAME(link.example.co.uk.) on ns2.falcoda.net returned no results' cname_value: '' enabled: false schema: type: object required: - request_id - data properties: request_id: type: string example: e023461c-8c86-11e9-b984-408d5cce2644 data: type: object required: - domains properties: domains: type: array items: type: object properties: domain: type: object required: - dkim_value - domain - suffix - rpath_status - rpath_value - dkim_status - subdomain - fulldomain - dkim_selector properties: dkim_value: type: string example: dkim.smtp2go.net domain: type: string example: example suffix: type: string example: com rpath_selector: type: string example: '' rpath_status: type: string example: '' rpath_verified: type: boolean example: true default: true rpath_value: type: string example: return.smtp2go.net dkim_status: type: string example: '' dkim_verified: type: boolean example: true default: true subdomain: {} fulldomain: type: string example: example.com dkim_selector: type: string example: s123456 trackers: type: array items: type: object required: - cname_value - cname_status properties: cname_value: type: string example: '' cname_status: type: string example: '' cname_verified: type: boolean example: false default: true domain: type: string example: example suffix: type: string example: com subdomain: type: string example: link enabled: type: boolean example: false default: true fulldomain: type: string example: link.example.com subaccount_access: type: object properties: subaccounts: type: array description: A list of subaccount IDs that were given access the sender domain. future_subaccounts: type: boolean description: If true, any new subaccounts added will automatically be given access. default: false '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 /domain/subaccount_access: post: tags: - SENDER DOMAINS summary: Edit subaccount access description: Allow subaccounts to send from verified sender domains on the master account. operationId: edit-subaccount-access requestBody: content: application/json: schema: type: object required: - domain - subaccounts properties: domain: type: string description: The sender domain to edit subaccount access for subaccounts: type: array description: A list of subaccount_ids to be given access. ID's can be found by querying /subaccounts/search future_subaccounts: type: boolean description: If set to true, will automatically add any new subaccounts to the access list default: false responses: '200': description: Subaccount access updated content: application/json: schema: type: object properties: domain: type: string description: The sender domain that was modified. subaccounts: type: array description: A list of subaccount IDs that were given access the sender domain. future_subaccounts: type: boolean description: If true, any new subaccounts added will automatically be given access. examples: Result: value: request_id: 6d4706c4-54c9-483d-b141-4f16a9c26879 data: domain: my-verified-domain.com subaccounts: [] future_subaccounts: false '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 /domain/tracking: post: tags: - SENDER DOMAINS summary: Edit the tracking subdomain description: A Tracking Subdomain is used to monitor your email opens and clicks. This endpoint allows you to edit a tracking subdomain for a particular sender domain. Full details can be found in the Sender Domain Guide. operationId: edit-tracking-domain requestBody: content: application/json: schema: type: object required: - domain - old_subdomain - new_subdomain properties: domain: type: string description: The sender domain to edit the tracking subdomain for default: null old_subdomain: type: string description: The domains old tracking subdomain default: track new_subdomain: type: string description: The domains new tracking subdomain default: link 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: Tracking subdomain edited content: application/json: examples: Result: value: request_id: 86758976-934b-11e7-b5be-480fcf01a6f2 data: domains: - domain: fulldomain: exampledomain.com subdomain: '' domain: exampledomain suffix: com dkim_selector: s123456 dkim_verified: true dkim_status: '' dkim_value: dkim.smtp2go.net rpath_selector: em744766 rpath_verified: true rpath_status: '' rpath_value: return.smtp2go.net trackers: - fulldomain: newsubdomain.exampledomain.com subdomain: newsubdomain domain: exampledomain suffix: com cname_verified: true cname_status: '' cname_value: track.smtp2go.com enabled: true schema: type: object required: - request_id - data properties: request_id: type: string example: e023461c-8c86-11e9-b984-408d5cce2644 data: type: object required: - domains properties: domains: type: array items: type: object properties: domain: type: object required: - dkim_value - domain - suffix - rpath_status - rpath_value - dkim_status - subdomain - fulldomain - dkim_selector properties: dkim_value: type: string example: dkim.smtp2go.net domain: type: string example: example suffix: type: string example: com rpath_selector: type: string example: '' rpath_status: type: string example: '' rpath_verified: type: boolean example: true default: true rpath_value: type: string example: return.smtp2go.net dkim_status: type: string example: '' dkim_verified: type: boolean example: true default: true subdomain: {} fulldomain: type: string example: example.com dkim_selector: type: string example: s123456 trackers: type: array items: type: object required: - cname_value - cname_status properties: cname_value: type: string example: '' cname_status: type: string example: '' cname_verified: type: boolean example: false default: true domain: type: string example: example suffix: type: string example: com subdomain: type: string example: link enabled: type: boolean example: false default: true fulldomain: type: string example: link.example.com subaccount_access: type: object properties: subaccounts: type: array description: A list of subaccount IDs that were given access the sender domain. future_subaccounts: type: boolean description: If true, any new subaccounts added will automatically be given access. default: false '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 /domain/verify: post: tags: - SENDER DOMAINS summary: Verify a sender domain description: Verify a sender domain on your account removing the need to wait for the periodic verification every 7 minutes. operationId: verify-a-sender-domain requestBody: content: application/json: schema: type: object required: - domain properties: domain: type: string description: Domain to attempt verification for requisition_ssl: type: boolean description: If true, requisition an SSL certificate for the tracking domain once verification is complete default: true 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: Sender domain verification content: application/json: examples: Result: value: request_id: e023461c-8c86-11e9-b984-408d5cce2644 data: domains: - domain: fulldomain: example.com subdomain: null domain: example suffix: com dkim_selector: s123456 dkim_verified: true dkim_status: '' dkim_value: dkim.smtp2go.net rpath_selector: em744766 rpath_verified: true rpath_status: '' rpath_value: return.smtp2go.net setup_link: trackers: - fulldomain: link.example.com subdomain: link domain: example suffix: com cname_verified: false cname_status: '' cname_value: track.smtp2go.net enabled: false schema: type: object required: - request_id - data properties: request_id: type: string example: e023461c-8c86-11e9-b984-408d5cce2644 data: type: object required: - domains properties: domains: type: array items: type: object properties: domain: type: object required: - dkim_value - domain - suffix - rpath_status - rpath_value - dkim_status - subdomain - fulldomain - dkim_selector - setup_link properties: dkim_value: type: string example: dkim.smtp2go.net domain: type: string example: example suffix: type: string example: com rpath_selector: type: string example: '' rpath_status: type: string example: '' rpath_verified: type: boolean example: true default: true rpath_value: type: string example: return.smtp2go.net dkim_status: type: string example: '' dkim_verified: type: boolean example: true default: true subdomain: {} fulldomain: type: string example: example.com dkim_selector: type: string example: s123456 setup_link: type: string description: A URL that can be used to automate DNS additions. trackers: type: array items: type: object required: - cname_value - cname_status properties: cname_value: type: string example: '' cname_status: type: string example: '' cname_verified: type: boolean example: false default: true domain: type: string example: example suffix: type: string example: com subdomain: type: string example: link enabled: type: boolean example: false default: true fulldomain: type: string example: link.example.com subaccount_access: type: object properties: subaccounts: type: array description: A list of subaccount IDs that were given access the sender domain. future_subaccounts: type: boolean description: If true, any new subaccounts added will automatically be given access. default: false '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 /domain/view: post: tags: - SENDER DOMAINS summary: View sender domains description: Returns a list of sender domains on your account operationId: view-sender-domains requestBody: content: application/json: schema: type: object properties: domain: type: string description: (Optional) If provided, will only retrieve records for this domain 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: List of sender domains content: application/json: examples: Result: value: request_id: e023461c-8c86-11e9-b984-408d5cce2644 data: domains: - domain: fulldomain: example.com subdomain: null domain: example suffix: com dkim_selector: s123456 dkim_verified: true dkim_status: '' dkim_value: dkim.smtp2go.net rpath_selector: em744766 rpath_verified: true rpath_status: '' rpath_value: return.smtp2go.net setup_link: trackers: - fulldomain: link.example.com subdomain: link domain: example suffix: com cname_verified: true cname_status: '' cname_value: track.smtp2go.net enabled: true subaccount_access: subaccounts: [] future_subaccounts: false schema: type: object required: - request_id - data properties: request_id: type: string example: e023461c-8c86-11e9-b984-408d5cce2644 data: type: object required: - domains properties: domains: type: array items: type: object properties: from_master: type: boolean description: True if this domain is delegated to the subaccount from the master account domain: type: object required: - dkim_value - domain - suffix - rpath_status - rpath_value - dkim_status - subdomain - fulldomain - dkim_selector properties: dkim_value: type: string example: dkim.smtp2go.net domain: type: string example: example suffix: type: string example: com rpath_selector: type: string example: '' rpath_status: type: string example: '' rpath_verified: type: boolean example: true default: true rpath_value: type: string example: return.smtp2go.net dkim_status: type: string example: '' dkim_verified: type: boolean example: true default: true subdomain: {} fulldomain: type: string example: example.com dkim_selector: type: string example: s123456 setup_link: type: string description: A URL that can be used to automate DNS additions (only included if a single domain is returned, otherwise 'unavailable') trackers: type: array items: type: object required: - cname_value - cname_status properties: cname_value: type: string example: '' cname_status: type: string example: '' cname_verified: type: boolean example: false default: true domain: type: string example: example suffix: type: string example: com subdomain: type: string example: link enabled: type: boolean example: false default: true fulldomain: type: string example: link.example.com subaccount_access: type: object properties: subaccounts: type: array description: A list of subaccount IDs that were given access the sender domain. future_subaccounts: type: boolean description: If true, any new subaccounts added will automatically be given access. default: false '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}