Skip to main content
POST
Send an email

Authorizations

Authorization
string
header
required

Your API key, ps_live_… or ps_test_….

Headers

Idempotency-Key
string

Any unique string, up to 255 characters. Retrying with the same key returns the original response instead of sending twice. Kept for 24 hours.

Body

application/json
from
string
required

Sender address on a verified domain. Accepts Name <address>.

Maximum string length: 320
Example:

"Acme <hello@acme.com>"

to
required

One address, or a list. Up to 50 recipients in total across to, cc and bcc.

Example:

"jane@example.com"

subject
string
required
Maximum string length: 998
Example:

"Your verification code"

cc
string<email>[]
bcc
string<email>[]
reply_to
string<email> | null

Address replies should go to.

html
string | null

HTML body. Send html, text, or both.

Example:

"<p>Your code is <strong>482913</strong></p>"

text
string | null

Plain-text body.

tags
string[]

Free-form labels to find and filter emails later. Up to 10.

Maximum array length: 10
Maximum string length: 256
headers
object

Custom headers, as name → value.

Response

Accepted. The email is queued; follow its status with webhooks or GET /emails/{id}.

object
string
required

Always email.

Allowed value: "email"
id
string
required

Unique identifier, prefixed em_.

Example:

"em_01jbz8m3k2q7x9c4v5n6p8r0st"

from
string
required
Example:

"Acme <hello@acme.com>"

to
string[]
required
Example:
cc
string[] | null
required
bcc
string[] | null
required
subject
string
required
status
enum<string>
required

Delivery status. queued → sent → delivered. Final states: delivered, bounced, complained, failed, canceled.

Available options:
queued,
sent,
delivered,
delivery_delayed,
bounced,
complained,
failed,
canceled
test_mode
boolean
required

True when sent with a ps_test_ key. Test emails are never delivered and cost no credits.

tags
string[] | null
required

Tags you attached when sending.

credits_charged
integer
required

One credit per recipient (to, cc and bcc). Zero in test mode.

created_at
string<date-time>
required
Example:

"2026-10-17T09:41:00Z"