Send Email
Send a transactional email — order confirmations, password resets, OTPs, receipts — to a single recipient. Same sk_live_… API key as the WhatsApp send endpoints.
Prefer SMTP? Most CMS / eCommerce platforms (WordPress, Magento, Shopify) and frameworks (Django, Laravel, Rails) integrate with email via SMTP rather than a REST API. See SMTP Setup for drop-in credentials — same pricing, same pipeline, same DKIM signing.
Marketing vs transactional: this endpoint is transactional only (₹0.05/email beyond the daily-100 free tier). For marketing blasts to a list, use the in-app
/email/campaignsflow which carries a per-campaign analytics shape (open rate, click rate, unsubscribes).
Prerequisites
- Plan with
email_marketingenabled — free during trial; paid plans need the Email Marketing feature flag set by the platform admin. - A verified sender domain at Settings → Email Domain . The
from_emailyou pass must be on a verified domain (ormail.splashifypro.comfor transitional sends without your own DKIM). - A
sk_live_…API key from Settings → Developer .
Endpoint
POST https://apis.splashifypro.com/api/v1/public/email/sendHeaders
| Header | Value |
|---|---|
Authorization | Basic YOUR_API_KEY |
Content-Type | application/json |
Request body
{
"to": "alice@example.com",
"subject": "Your order #1234 is confirmed",
"html": "<p>Hi Alice,</p><p>Thanks for your order.</p>",
"text": "Hi Alice,\nThanks for your order.",
"from_name": "Acme Store",
"from_email": "orders@acme-store.com",
"reply_to": "support@acme-store.com"
}| Field | Required | Notes |
|---|---|---|
to | yes | Recipient email address |
subject | yes | Subject line (UTF-8 supported, MIME-encoded automatically) |
html | one of html/text | HTML body. Use absolute URLs for images so they render in all clients |
text | one of html/text | Plaintext fallback. Recommended even when html is provided — improves deliverability |
from_name | recommended | Display name (e.g., “Acme Store”). Falls back to the local-part of from_email if omitted |
from_email | yes | Must be on a domain verified for your account |
reply_to | optional | Where customer replies should go (often your support inbox) |
Example
curl -X POST https://apis.splashifypro.com/api/v1/public/email/send \
-H "Authorization: Basic YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "alice@example.com",
"subject": "Your order #1234 is confirmed",
"html": "<h1>Order confirmed</h1><p>Thank you, Alice — your order ships in 2 business days.</p>",
"text": "Order confirmed\\n\\nThank you, Alice — your order ships in 2 business days.",
"from_name": "Acme Store",
"from_email": "orders@acme-store.com",
"reply_to": "support@acme-store.com"
}'Successful response — 200 OK
{
"result": true,
"status": "queued",
"message_id": "0190ed42-1234-7c8e-9f0a-abcdef012345"
}The email is queued — actual delivery happens within seconds. Use the message_id to poll the status endpoint for delivery confirmation.
Common errors
| Status | message body | Meaning |
|---|---|---|
400 | to must be a valid email address | Missing or malformed recipient |
400 | from_email domain '<x>' is not verified. | Verify the domain at /settings/email-domain first |
400 | subject is required | Subject must be non-empty |
400 | html or text body required | Provide at least one body format |
401 | Invalid API key. | Key revoked, wrong, or expired |
402 | email_marketing not enabled on your plan | Plan flag is off; ask admin to upgrade |
429 | Rate limit exceeded | Per-plan rate limit; check Retry-After header |
500 | Failed to enqueue: … | Transient — retry with the same payload |
Billing
- First 100 emails per UTC day are free across both the public API + in-app campaigns combined.
- Beyond that, transactional sends cost ₹0.05/email + reseller markup (if any). Charges appear in Settings → Track Expenses under category
email_transactional. - Hard bounces are billed (the SMTP attempt happened); soft bounces that retry are billed once on final acceptance.
Delivery notes
- DKIM signed with
d=<your-verified-domain>so recipients seedkim=passagainst your brand. - List-Unsubscribe + List-Unsubscribe-Post headers are added automatically. Some inbox providers (Gmail, Outlook) require these on bulk transactional too — they don’t show the native Unsubscribe button on a single send, but headers don’t hurt.
- Suppression list is checked at send-time. Recipients who unsubscribed from any of your past campaigns won’t receive transactional sends either unless you explicitly remove them via Settings → Email Domain → Manage Suppression .
Status endpoint
Poll for delivery confirmation:
GET https://apis.splashifypro.com/api/v1/public/email/status/{message_id}Returns:
{
"result": true,
"message_id": "0190ed42-1234-7c8e-9f0a-abcdef012345",
"to": "alice@example.com",
"from": "orders@acme-store.com",
"subject": "Your order #1234 is confirmed",
"status": "delivered",
"category": "email_transactional",
"attempt_count": 1,
"created_at": "2026-04-30T12:34:56Z",
"sent_at": "2026-04-30T12:34:58Z",
"delivered_at": "2026-04-30T12:35:01Z"
}status is one of: queued, sending, sent, delivered, bounced, failed, suppressed.
See also
- Send Template Email — use a saved template + variables instead of inline HTML.
- Authentication — how the
sk_live_…key works. - Rate Limits — per-plan request budgets.