Skip to main content
POST
Sends an email you already quoted. Pass the quote_id from /email/quote in X-Quote-ID, with an x402 payment proof for its total_cost. The send runs as a job: poll with the returned request_id. On a new domain, OneShot provisions it first, then sends.

Authentication

Requires x402 payment proof in the payment-signature header.

Headers

string
required
Quote ID from /email/quote. Must be an unused quote owned by the same wallet, less than 1 hour old.
string
required
Base64-encoded x402 payment payload authorizing the quoted total_cost.

Request body

string
Required when you passed from_address to /email/quote. Optional when rotation picked the address: the server uses the address locked into the quote, and a different value returns 400 from_address_mismatch.
string
Sender display name, rendered as From: From Name <from_address>. Max 100 characters, no newlines or angle brackets.
string
relay (default; no mailbox fee) or mailbox (each new from-address adds a one-time mailbox_provisioning_fee). Set it on /email/quote, which locks the mode, and omit it here; mailbox on a live relay domain returns 400 mailbox_mode_conflict. A provisioned domain keeps its own mode whatever you pass. Check mailbox_mode per domain on /email/domains.
string | string[]
required
Recipient address or addresses. An array sends each recipient a separate email, not CC or BCC.
string
required
Email subject line
string
required
Email body (plain text)
array
Attachment objects with filename, content_type, and content (base64)

Response

string
Job ID for tracking the send
string
pending, processing, completed, or failed
string
Status message
string
Advisory; the send still proceeds. pinned_domain_warming: the pinned domain is still warming. pinned_over_limit: it is over today’s daily_send_limit. Only rotation enforces the limit and warmup score.

Domain provisioning

For a new domain, OneShot registers it, configures DNS, sets up sending and verifies ownership. This takes 2-5 minutes; the email goes out when provisioning completes.

Errors