Send Email
POST/email/campaign
Send emails to contacts for business campaigns or automated emails.
Metadata
You can optionally attach a metadata object to the send. Metadata is echoed back on every webhook event generated for that send, allowing you to associate webhook events with your own entities such as order IDs, tenant IDs, or internal campaign identifiers.
Example:
{
"subject": "Your order shipped",
"body": "<html>...</html>",
"sender": {
"from": {
"name": "Shop",
"email": "orders@shop.com"
}
},
"recipients": {
"to": [
{
"email": "ann@example.com"
}
]
},
"campaignId": "order_shipped_SO-1001",
"metadata": {
"order_id": "SO-1001",
"tenant_id": "acme"
}
}
The metadata is available in every webhook event generated for the send.
Metadata is scoped to the campaignId. If the same campaignId is used by multiple requests, they share the same metadata and the latest value replaces the previous value. To keep metadata isolated, use a unique campaignId for each batch or omit campaignId and use the generated requestId.
Request
Header Parameters
When set to true, tracking links in the email hide the destination inside an opaque, tamper-proof token instead of exposing it as a readable redirectUrl query parameter. This keeps destination URLs out of the message body where blocklist scanners can read them. Defaults to the account setting when the header is omitted.
- application/json
Body
required
- Array [
- ]
headers object
Additional headers to be added to the email.
Unsubscribe header for the email. This will override the default unsubscribe header generated by TinyEmail. It must support POST requests. For more information, visit email sender guidelines
metadata object
Optional metadata to associate with the send. The metadata is returned in every webhook event generated for the send.
Metadata is scoped to the campaignId. If campaignId is not provided, the generated requestId is used instead. All recipients in the request share the same metadata.
Maximum 10 key/value pairs. Keys can be up to 64 characters and values up to 256 characters. Values must be flat strings, numbers, or booleans; numbers and booleans are converted to strings. Nested objects, arrays, and null values are not supported.
Keys are normalized to lowercase snake_case. For example, OrderID becomes order_id. Keys that normalize to the same name are rejected.
sender object
from object
replyTo object
recipients object
to object[]
attributes object
when enabled, prevents from automatically tracking links in emails
Responses
- 202
- 400
- 401
- 405
Successful operation
- application/json
- Schema
- Example (from schema)
Schema
{
"requestId": "833c5151-5a98-4bad-a30f-7cc816352b7a",
"message": "SUCCESS"
}
Bad Request
- application/json
- Schema
- Example (from schema)
Schema
{
"message": "Some error message"
}
API key is missing or invalid
Method Not Allowed