Jumploon

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

FieldTypeDescription
fromstringRequired. hello@acme.com or Acme <hello@acme.com>. The domain must be verified.
tostring or string[]Required. Up to 50 addresses.
subjectstringRequired unless a template supplies it.
htmlstringHTML body.
textstringPlain-text body. Send both html and text for the best deliverability.
cc, bccstring or string[]Copy recipients.
reply_tostring or string[]Reply-To addresses.
headersobjectExtra headers, such as { "X-Entity-Ref-ID": "123" }.
attachmentsarraySee Attachments.
tagsarray{ name, value } pairs, letters, digits, _ and -. They appear in webhooks and can be used to filter activity and stats.
scheduled_atstringSend later. See Scheduling.
templateobject{ "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

  1. The API validates the request, checks that the sender's domain is verified and that you're within your daily quota, and returns.
  2. Each recipient becomes its own delivery. Suppressed addresses (earlier bounces, unsubscribes, spam reports) are dropped.
  3. The message is DKIM-signed and delivered to the recipient's mail server.
  4. Temporary failures are retried with increasing delays for up to 72 hours. Permanent failures become bounces and the address is suppressed.
  5. Every step is recorded in Activity and sent to your webhooks.