Developer API

Emails

Send, schedule, batch, retrieve and cancel emails.

Send email

POST/emailssending keys allowed

Sends an email immediately or at scheduled_at. Recipients on your suppression list (previous hard bounce or complaint) are skipped and reported with an email.suppressed event.

Body parameters

fromstringrequired

Sender, e.g. "Acme <hello@acme.com>". The domain must be verified.

tostring | string[]required

Up to 50 recipients.

subjectstringrequired

Subject line.

htmlstring

HTML body (up to 2 MB).

textstring

Plain-text body. Generated from html when omitted.

cc / bccstring | string[]

Up to 50 each.

reply_tostring | string[]

Reply-To addresses.

headersobject

Custom headers (envelope headers like From/To can't be overridden).

attachmentsarray

{ filename, content (base64) | path (URL), content_type, content_id }. 40 MB total. Not allowed with scheduled_at or in batch.

tagsarray

Up to 10 { name, value } pairs (ASCII letters, numbers, _ and -). Returned in webhooks.

scheduled_atstring

ISO 8601 date or natural language ("in 1 hour"), up to 30 days ahead.

templateobject

{ id, variables } — a published template id or alias. Replaces html/text; subject/from fall back to the template's.

Request

curl -X POST 'https://api.iresendly.com/emails' \
  -H 'Authorization: Bearer irs_xxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
  "from": "Acme <hello@acme.com>",
  "to": [
    "delivered@example.com"
  ],
  "subject": "Your receipt",
  "html": "<p>Thanks for your order!</p>",
  "tags": [
    {
      "name": "category",
      "value": "receipt"
    }
  ]
}'

Response

{
  "id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c"
}

Send batch

POST/emails/batchsending keys allowed

Sends up to 100 emails in one request. Header x-batch-validation: strict (default — any invalid email fails the whole batch) or permissive (valid emails are sent and errors are listed).

Request

curl -X POST 'https://api.iresendly.com/emails/batch' \
  -H 'Authorization: Bearer irs_xxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '[
  {
    "from": "Acme <hello@acme.com>",
    "to": [
      "a@example.com"
    ],
    "subject": "Hi A",
    "html": "<p>Hello A</p>"
  },
  {
    "from": "Acme <hello@acme.com>",
    "to": [
      "b@example.com"
    ],
    "subject": "Hi B",
    "html": "<p>Hello B</p>"
  }
]'

Response

{
  "data": [
    {
      "id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c"
    },
    {
      "id": "ae2014de-c168-4c61-8267-70d2662a1ce1"
    }
  ]
}

Retrieve email

GET/emails/{id}

Returns one email with its latest status (last_event).

Request

curl -X GET 'https://api.iresendly.com/emails/{id}' \
  -H 'Authorization: Bearer irs_xxxxxxxxx'

Response

{
  "object": "email",
  "id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
  "from": "Acme <hello@acme.com>",
  "to": [
    "delivered@example.com"
  ],
  "subject": "Your receipt",
  "last_event": "delivered",
  "created_at": "2026-10-15T10:00:00.000Z",
  "scheduled_at": null,
  "tags": []
}

List emails

GET/emails

Newest first, within your plan's retention window.

Query parameters

limitnumber

1–100, default 20.

after / beforestring

Cursor (email id).

Request

curl -X GET 'https://api.iresendly.com/emails' \
  -H 'Authorization: Bearer irs_xxxxxxxxx'

Response

{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "object": "email",
      "id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
      "last_event": "delivered"
    }
  ]
}

Reschedule email

PATCH/emails/{id}

Moves a scheduled email to a new time.

Request

curl -X PATCH 'https://api.iresendly.com/emails/{id}' \
  -H 'Authorization: Bearer irs_xxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
  "scheduled_at": "2026-10-20T09:00:00Z"
}'

Response

{
  "object": "email",
  "id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c"
}

Cancel scheduled email

POST/emails/{id}/cancel

Cancels an email that hasn't been sent yet. The quota is returned.

Request

curl -X POST 'https://api.iresendly.com/emails/{id}/cancel' \
  -H 'Authorization: Bearer irs_xxxxxxxxx'

Response

{
  "object": "email",
  "id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c"
}