Skip to main content
POST
/
v1
/
send
curl --request POST \
  --url https://api.senderkit.com/v1/send \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "template": "welcome",
  "to": "user@example.com",
  "vars": {
    "name": "Ada",
    "dashboardUrl": "https://app.example.com/dashboard"
  },
  "metadata": {
    "userId": "usr_123"
  }
}
'
{
  "id": "msg_0a1b2c3d4e5f6g7h",
  "livemode": true
}
{
"error": {
"code": "invalid_request",
"message": "<string>",
"issues": [
{}
],
"limit": 123
}
}
{
"error": {
"code": "invalid_request",
"message": "<string>",
"issues": [
{}
],
"limit": 123
}
}
{
"error": {
"code": "invalid_request",
"message": "<string>",
"issues": [
{}
],
"limit": 123
}
}
{
"error": {
"code": "invalid_request",
"message": "<string>",
"issues": [
{}
],
"limit": 123
}
}
{
"error": {
"code": "invalid_request",
"message": "<string>",
"issues": [
{}
],
"limit": 123
}
}
{
"error": {
"code": "invalid_request",
"message": "<string>",
"issues": [
{}
],
"limit": 123
}
}

Authorizations

Authorization
string
header
required

API key with an sk_live_ or sk_test_ prefix.

Headers

Idempotency-Key
string

Optional caller-supplied key to make a send safely retryable. A repeat request with the same key (within the same workspace and environment) returns the original send instead of creating a duplicate. Recommended for all sends so client retries never double-send.

Body

application/json
template
string
required

Template slug to send.

to
string
required

Recipient (email address, phone number, or device token).

version
integer

Optional explicit version pin. Defaults to the latest version in test mode and the current published version in live mode.

Required range: x >= 1
channel
enum<string>
Available options:
email,
sms,
push,
web-push
vars
object

Variables interpolated into the template.

metadata
object

Caller-supplied tags/IDs. Values must be string, number, or boolean.

scheduledAt
string<date-time>

Optional ISO-8601 timestamp to schedule the send for later. Must be in the future and within 30 days. When provided, the send is accepted with status: "scheduled" and dispatched at that time.

cc
string<email>[]

Email-only. Cc recipients applied at send time.

bcc
string<email>[]

Email-only. Bcc recipients applied at send time.

replyTo
string<email>

Email-only. Reply-To address applied at send time.

attachments
object[]

Email-only. Per-send attachments — not stored on the template.

from
string<email>

Email-only. Optional From address override (bare address — put the display name in fromName). Defaults to the provider connection's address. On managed sending it is honored only when the address is on the workspace's verified sending domain.

fromName
string

Email-only. Optional From display name override, rendered as Name <address>. Defaults to the provider connection's from name. Must not contain control characters or angle brackets.

Maximum string length: 128

Response

Message accepted and queued for delivery.

id
string
required

Public message ID (e.g. msg_...).

Example:

"msg_0a1b2c3d4e5f6g7h"

status
enum<string>
required

queued for an immediate send, or scheduled when scheduledAt was provided on the request.

Available options:
queued,
scheduled
livemode
boolean
required