Documentation
Authentication
All requests to the RelayPulse API require an active API key with proper scope permissions. Provide your key in the Authorization header using the Bearer scheme, or via the X-API-Key header.
Authorization: Bearer rp_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
POST
/api/v1/emails
Dispatches a single transactional email into the background queue.
Request Body (JSON)
{
"from": {
"email": "noreply@yourdomain.com",
"name": "Acme Auth"
},
"to": [
{ "email": "user@example.com", "name": "John Doe" }
],
"subject": "Your Authentication Code",
"html": "<h1>Code: 123456</h1>",
"text": "Code: 123456",
"open_tracking": true,
"click_tracking": true,
"tags": ["auth", "otp"]
}
Response (202 Accepted)
{
"success": true,
"data": {
"message_id": "msg_8b2a19f40e1c2d3e4f5a6b7c",
"status": "queued",
"from": "noreply@yourdomain.com",
"to": ["user@example.com"],
"created_at": "2026-08-22T22:30:00+00:00"
}
}
POST
/api/v1/emails/batch
Accepts an array of up to 100 email payloads to dispatch concurrently.
{
"messages": [
{
"from": { "email": "alerts@domain.com" },
"to": [{ "email": "user1@example.com" }],
"subject": "System Notice 1",
"html": "<p>Notice 1</p>"
},
{
"from": { "email": "alerts@domain.com" },
"to": [{ "email": "user2@example.com" }],
"subject": "System Notice 2",
"html": "<p>Notice 2</p>"
}
]
}
Webhooks Verification
Every webhook payload dispatched from RelayPulse contains an X-RelayPulse-Signature header containing a Unix timestamp and HMAC-SHA256 signature calculated against your endpoint secret.
X-RelayPulse-Signature: t=1755901200,v1=5d41402abc4b2a76b9719d911017c592...
Error Handling
The RelayPulse API uses standard HTTP response codes accompanied by structured JSON error payloads.
{
"success": false,
"error": {
"code": "SEND_FAILED",
"message": "Daily sending limit of 500 emails exceeded. Used: 500."
}
}