Docs

POST /emails/batch

Send up to 500 emails. Each item succeeds or fails on its own — read data[i].status.

Parameters

  • Idempotency-Key header · string · optionalMakes this call safe to retry. Send the same key with the same body and the original response is replayed instead of the work happening twice. Keys are 1-256 characters and are remembered for 7 days. While the first attempt is still running, a second call with that key returns 409 idempotency_in_flight (Resend calls this concurrent_idempotent_requests); the same key with a different body returns 409 idempotency_payload_mismatch (Resend: invalid_idempotent_request).

Request body

FieldTypeRequiredNotes
[].attachmentsarray<object>no
[].attachments[].contentstringno
[].attachments[].content_idstringno
[].attachments[].content_typestringno
[].attachments[].filenamestringno
[].attachments[].pathstringno
[].bccstring | array<string>no
[].ccstring | array<string>no
[].fromstringyes
[].headersobjectno
[].htmlstringno
[].reply_tostring | array<string>no
[].scheduled_atstringno
[].subjectstringyes
[].tagsobject | array<object>no
[].template_idstringno
[].template_valuesobjectno
[].textstringno
[].tostring | array<string>yes
[].topic_idstringno

Responses

  • 201 Success
  • 400 Validation error
  • 401 Missing API key
  • 403 Forbidden
  • 404 Not found
  • 409 Conflict
  • 429 Rate limited
  • 500 Internal server error

Response headers

  • ratelimit-limit — Messages this API key may spend in one 60-second window.
  • ratelimit-remaining — Messages left in the current window.
  • ratelimit-reset — Seconds until the current window resets and the budget refills.

201 body

FieldTypeRequiredNotes
dataarray<object>yes
data[].errorobjectno
data[].idstringno
data[].indexintegeryes
data[].simulatedbooleanno
data[].status"accepted" | "rejected"yes

Errors

Codes in the catalogue that answer with one of this operation’s error statuses. Every one of them carries a fix.