Skip to main content
POST
/
emails
Send an email
curl --request POST \
  --url https://api.sendkit.dev/emails \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "to": "user@example.com",
  "from": "Your Name <hello@yourdomain.com>",
  "subject": "Welcome to SendKit",
  "html": "<h1>Hello!</h1><p>Welcome aboard.</p>",
  "text": "Hello! Welcome aboard.",
  "cc": [
    "cc@example.com"
  ],
  "bcc": [
    "bcc@example.com"
  ],
  "reply_to": [
    "support@yourdomain.com"
  ],
  "headers": {
    "X-Custom-Header": "value"
  },
  "tags": [
    {
      "name": "campaign",
      "value": "welcome"
    }
  ],
  "scheduled_at": "2026-03-05 10:30:00",
  "attachments": [
    {
      "filename": "invoice.pdf",
      "content": "JVBERi0xLjQKJeLj...",
      "content_type": "application/pdf"
    }
  ],
  "template": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "variables": {
      "FIRST_NAME": "John",
      "COMPANY": "Acme Inc"
    }
  }
}
'
{
  "id": "550e8400-e29b-41d4-a716-446655440000"
}

Authorizations

Authorization
string
header
required

API key from your SendKit dashboard. Pass it as a Bearer token in the Authorization header.

Body

application/json
to
required

Recipient email address(es). Accepts a single email string or an array of up to 50 emails. Supports display name format (e.g. "Bob bob@example.com").

Example:

"user@example.com"

from
string

Sender email address. Required unless a template is provided (in which case, the template's sender is used as default). Must belong to a verified domain.

Example:

"Your Name <hello@yourdomain.com>"

subject
string

Email subject line. Required unless a template is provided. Maximum 998 characters.

Maximum string length: 998
Example:

"Welcome to SendKit"

html
string

HTML body of the email. Required if text is not provided and no template is used.

Example:

"<h1>Hello!</h1><p>Welcome aboard.</p>"

text
string

Plain text body of the email. Required if html is not provided and no template is used.

Example:

"Hello! Welcome aboard."

cc
string[]

Carbon copy recipients. Supports display name format (e.g. "Name ").

Example:
["cc@example.com"]
bcc
string[]

Blind carbon copy recipients. Supports display name format (e.g. "Name ").

Example:
["bcc@example.com"]
reply_to
string[]

Reply-to email addresses. Supports display name format (e.g. "Name ").

Example:
["support@yourdomain.com"]
headers
object

Custom email headers as key-value pairs.

Example:
{ "X-Custom-Header": "value" }
tags
object[]

Metadata tags as key-value pairs.

scheduled_at
string<date-time>

Schedule the email for future delivery. Must be a future ISO 8601 timestamp.

Example:

"2026-03-05 10:30:00"

attachments
object[]

File attachments. Maximum 10 per email.

Maximum array length: 10
template
object

Use a published template instead of providing html/text directly. When provided, the template's content, subject, and sender are used as defaults. Any explicitly provided fields (from, subject, html, text, reply_to) will override the template values.

Response

Email accepted for delivery

id
string<uuid>

Unique identifier of the created email.

Example:

"550e8400-e29b-41d4-a716-446655440000"