MailBridgeAPI Sending API
Send and validate email through the selected mailbox.
Send and validate email through the selected mailbox.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/mailbridgeapi:mailbridgeapi-sending-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: MailBridge Sending API
summary: Turn your own mailbox into a secure email API.
version: 2026-10-20.1
description: 'MailBridgeAPI connects a mailbox you own to authenticated HTTP endpoints.
Use the account API key together with a mailbox API key to send email, read incoming messages, search activity and monitor mailbox readiness without distributing SMTP or IMAP passwords across projects.
Compatible connections include standard SMTP/IMAP, Gmail, Microsoft 365, Yahoo Mail, Zoho Mail and iCloud Mail. Provider capabilities and limits still apply.
Keep both API keys in server-side environment variables or a secret manager. Never expose them in browser code, public repositories or mobile application bundles.'
termsOfService: https://mailbridgeapi.com/terms-of-service/
contact:
name: MailBridgeAPI Support
url: https://mailbridgeapi.com/contact/
email: info@mailbridgeapi.com
license:
name: MailBridgeAPI Terms of Service
url: https://mailbridgeapi.com/terms-of-service/
x-logo:
url: https://mailbridgeapi.com/logo-mark.svg
altText: MailBridgeAPI
servers:
- url: https://api.mailbridgeapi.com
description: Production API
security:
- AccountKey: []
MailboxKey: []
tags:
- name: Sending
description: Send and validate email through the selected mailbox.
paths:
/sendemail/:
post:
summary: Send an email through your connected mailbox
description: Sends one message through the mailbox selected by `apikeybox`. A successful SMTP acceptance is recorded in MailBridgeAPI. When sent-copy archiving is enabled, storage in the mailbox Sent folder happens asynchronously. Set `skip_sent_copy=true` to exclude this message from that queue.
security: []
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SendEmailPayload'
examples:
textEmail:
summary: Plain-text email
value:
apikey: YOUR_ACCOUNT_API_KEY
apikeybox: YOUR_MAILBOX_API_KEY
recipient_email: jane@example.com
mail_subject: Hello from MailBridgeAPI
mail_body: This message was sent through my connected mailbox.
format: text
from_source: my-application
responses:
'200':
description: Request processed. Check `result.error` and `result.sent` for the provider result.
content:
application/json:
schema:
$ref: '#/components/schemas/LegacySendResponse'
example:
result:
error: '0'
sent: OK
id: msg_example
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/ServerError'
tags:
- Sending
operationId: sendEmail
x-codeSamples:
- lang: cURL
label: cURL
source: 'curl -X POST ''https://api.mailbridgeapi.com/sendemail/'' \
+ -H ''Content-Type: application/x-www-form-urlencoded'' \
+ --data-urlencode ''apikey=YOUR_ACCOUNT_API_KEY'' \
+ --data-urlencode ''apikeybox=YOUR_MAILBOX_API_KEY'' \
+ --data-urlencode ''recipient_email=jane@example.com'' \
+ --data-urlencode ''mail_subject=Hello from MailBridgeAPI'' \
+ --data-urlencode ''mail_body=Sent through my connected mailbox'' \
+ --data-urlencode ''format=text'''
- lang: PHP
label: PHP
source: "<?php\n$payload = http_build_query([\n 'apikey' => getenv('MAILBRIDGE_API_KEY'),\n 'apikeybox' => getenv('MAILBRIDGE_BOX_KEY'),\n 'recipient_email' => 'jane@example.com',\n 'mail_subject' => 'Hello from MailBridgeAPI',\n 'mail_body' => 'Sent through my connected mailbox',\n 'format' => 'text',\n]);\n$context = stream_context_create(['http' => [\n 'method' => 'POST',\n 'header' => 'Content-Type: application/x-www-form-urlencoded',\n 'content' => $payload,\n]]);\n$result = file_get_contents('https://api.mailbridgeapi.com/sendemail/', false, $context);\necho $result;"
/email/validate/:
post:
summary: Validate a send request without sending email
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ValidateEmail'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/ValidateEmail'
responses:
'200':
description: Validation errors and warnings. data.sends_email is always false.
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/ServerError'
tags:
- Sending
operationId: validateEmail
components:
schemas:
ValidateEmail:
type: object
required:
- recipient_email
- mail_subject
- mail_body
properties:
recipient_email:
type: string
format: email
mail_subject:
type: string
mail_body:
type: string
maxLength: 1048576
format:
type: string
enum:
- html
- text
default: html
Error:
type: object
required:
- ok
- error
- meta
properties:
ok:
const: false
error:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
additionalProperties: false
meta:
$ref: '#/components/schemas/Meta'
additionalProperties: false
SendEmailPayload:
type: object
additionalProperties: false
required:
- apikey
- apikeybox
- recipient_email
- mail_subject
- mail_body
properties:
apikey:
type: string
description: Account API key.
example: YOUR_ACCOUNT_API_KEY
apikeybox:
type: string
description: Mailbox API key.
example: YOUR_MAILBOX_API_KEY
recipient_email:
type: string
format: email
description: Primary recipient.
mail_subject:
type: string
minLength: 1
maxLength: 998
mail_body:
type: string
minLength: 1
description: HTML or plain-text message body.
sender_email:
type: string
format: email
description: Optional sender override. The provider must authorize this address.
sender_name:
type: string
maxLength: 200
reply_email:
type: string
format: email
reply_name:
type: string
maxLength: 200
email_cc1:
type: string
format: email
email_cc2:
type: string
format: email
email_cc3:
type: string
format: email
format:
type: string
enum:
- html
- text
default: html
charset:
type: string
default: UTF-8
attachmentBase64_1:
type: string
format: byte
description: First attachment encoded as base64.
attachmentBase64_name_1:
type: string
description: Filename for the first attachment.
attachmentBase64_2:
type: string
format: byte
description: Second attachment encoded as base64.
attachmentBase64_name_2:
type: string
description: Filename for the second attachment.
embeddedImage:
type: string
format: uri
description: Public image URL to embed inline.
embeddedImage_cid:
type: string
description: Content ID referenced from HTML as `cid:VALUE`.
unsubscribe:
oneOf:
- type: boolean
- type: integer
enum:
- 0
- 1
default: false
description: Append the configured unsubscribe footer.
from_source:
type: string
maxLength: 80
pattern: ^[A-Za-z0-9._:-]+$
default: api
description: Source label stored with sent activity, such as `wordpress` or `crm`.
allow_self_signed:
oneOf:
- type: boolean
- type: string
enum:
- 'yes'
- 'no'
default: false
description: Allow a self-signed SMTP certificate. Keep disabled unless the mailbox server requires it.
skip_sent_copy:
type: boolean
default: false
description: Never queue this message for an IMAP Sent-folder copy.
mail_message_id:
type: string
description: Optional RFC 5322 Message-ID without angle brackets.
mail_in_reply_to:
type: string
description: Optional parent Message-ID used to preserve a conversation thread.
mail_references:
type: string
description: Space-separated Message-ID values used to preserve a conversation thread.
mail_auto_submitted:
type: string
enum:
- auto-generated
- auto-replied
description: Optional Auto-Submitted header value for automated mail.
Pagination:
type: object
properties:
page:
type: integer
minimum: 1
per_page:
type: integer
minimum: 1
total:
type: integer
minimum: 0
pages:
type: integer
minimum: 0
next_page_token:
type:
- string
- 'null'
LegacySendResponse:
type: object
required:
- result
properties:
result:
type: object
required:
- error
- sent
properties:
error:
type: string
description: '`0` indicates success.'
sent:
type: string
description: '`OK` indicates that the provider accepted the send.'
id:
type: string
description: MailBridgeAPI message identifier when available.
Meta:
type: object
properties:
request_id:
type: string
api_version:
type: string
timestamp:
type: string
format: date-time
pagination:
$ref: '#/components/schemas/Pagination'
additionalProperties: false
responses:
ServerError:
description: The mailbox provider rejected the operation or an internal service error occurred.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
TooManyRequests:
description: The MailBridgeAPI or provider request limit was reached. Do not retry email sends blindly.
headers:
Retry-After:
description: Seconds to wait before retrying when supplied.
schema:
type: integer
minimum: 1
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: The account API key or mailbox API key is missing, invalid, expired or not allowed to access this mailbox.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: The request is missing a required value or contains an invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
AccountKey:
type: apiKey
in: header
name: X-API-Key
description: 'Account API key. New endpoints also accept the value as an `Authorization: Bearer` token.'
MailboxKey:
type: apiKey
in: header
name: X-Mailbox-Key
description: Mailbox API key selecting exactly one configured mailbox.
AccountKeyQuery:
type: apiKey
in: query
name: apikey
description: Account API key used by legacy-compatible endpoints. Prefer headers for new integrations when supported.
MailboxKeyQuery:
type: apiKey
in: query
name: apikeybox
description: Mailbox API key used by legacy-compatible endpoints.
externalDocs:
description: Interactive documentation, guides and live endpoint tester
url: https://mailbridgeapi.com/doc/