Send an email
Source: OpenAPI (openapi/openapi.yaml).
curl -X POST "https://api.sendtier.example/emails" \ -H "Authorization: Bearer st_live_REPLACE_ME" \ -H "API-Version: 2026-10-01" \ -H "Content-Type: application/json" \ -d '{ "from": "Example <hello@mail.example.com>", "to": [ "user@example.com" ], "subject": "Your first email", "text": "Hello from Sendtier." }'{ "id": "string", "status": "queued", "status_detail": "string", "created_at": "2019-08-24T14:15:22Z"}Validates and queues one email. A st_test_ key never sends a real email. It may use any domain the tenant has added that is not deleted, including pending and failed. A live key needs that domain verified. An unknown, deleted, or other-tenant domain returns 404 not_found. Optional resend_of keeps the source email's mode. A test email stays in test and is never delivered, even when the caller is live. A test key cannot resend a live email.
AuthorizationBearer <token>API key: st_live_... or st_test_...
Idempotency-Key?stringRepeated POST with the same key within 24 h returns the first response.
length <= 255API-Version?stringapplication/json- body
from*stringto*array<string>1 <= items <= 50subject*stringlength <= 998html?stringtext?stringtags?scheduled_at?stringISO 8601 UTC, at most 72 h in the future.
date-timeresend_of?stringEmail ID to resend. The new email keeps that email's mode. A test email is never sent live. A live email cannot be resent with a test key.
Email accepted and queued.
application/json- response
id*stringstatus*EmailStatus"queued""scheduled""sent""delayed""delivered""bounced""complained""failed""canceled"status_detail?stringProvider detail for the current status, truncated to 500 characters when present.
length <= 500created_at*stringdate-time