Sending email
POST /emails sends one email. For per-recipient subjects, data and arguments in a single request, there's also Mail Send (v3); both go through the same delivery pipeline.
curl https://api.jumploon.com/emails \
-H "Authorization: Bearer $JUMPLOON_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "Acme <hello@acme.com>",
"to": ["ada@example.org"],
"subject": "Your receipt",
"html": "<p>Thanks for your order.</p>",
"text": "Thanks for your order.",
"tags": [{ "name": "type", "value": "receipt" }]
}'{ "id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c" }Parameters
| Field | Type | Description |
|---|---|---|
from | string | Required. hello@acme.com or Acme <hello@acme.com>. The domain must be verified. |
to | string or string[] | Required. Up to 50 addresses. |
subject | string | Required unless a template supplies it. |
html | string | HTML body. |
text | string | Plain-text body. Send both html and text for the best deliverability. |
cc, bcc | string or string[] | Copy recipients. |
reply_to | string or string[] | Reply-To addresses. |
headers | object | Extra headers, such as { "X-Entity-Ref-ID": "123" }. |
attachments | array | See Attachments. |
tags | array | { name, value } pairs, letters, digits, _ and -. They appear in webhooks and can be used to filter activity and stats. |
scheduled_at | string | Send later. See Scheduling. |
template | object | { "id": "d-…", "variables": { … } } to render a template. |
Attachments
"attachments": [
{
"filename": "invoice-1042.pdf",
"content": "JVBERi0xLjcKCjEgMCBvYmoK...",
"content_type": "application/pdf"
}
]content is the file as a base64 string (or, in the Node SDK, a Buffer). Fetching attachments from a URL with path isn't supported: download the file yourself and pass its content.
To embed an image in the HTML, give it a content_id and reference it as <img src="cid:logo">.
Retrieve an email
curl https://api.jumploon.com/emails/<id> -H "Authorization: Bearer $JUMPLOON_API_KEY"The response includes the recipients, subject, bodies and last_event, such as delivered or bounced. GET /emails lists recent emails.
Sandbox mode
To validate a request without sending anything (useful in CI), use the v3 API with sandbox mode:
"mail_settings": { "sandbox_mode": { "enable": true } }The request is fully validated, including the sender's domain and your quota, and returns 200 instead of 202. Nothing is queued or delivered.
What happens after you send
- The API validates the request, checks that the sender's domain is verified and that you're within your daily quota, and returns.
- Each recipient becomes its own delivery. Suppressed addresses (earlier bounces, unsubscribes, spam reports) are dropped.
- The message is DKIM-signed and delivered to the recipient's mail server.
- Temporary failures are retried with increasing delays for up to 72 hours. Permanent failures become bounces and the address is suppressed.
- Every step is recorded in Activity and sent to your webhooks.