Developers
APIs that stay boring under load
send.et separates test and production credentials, hashes keys at rest, and exposes delivery events you can trust in your own observability stack.
Authentication
Bearer tokens and API keys
Short-lived JWT access tokens pair with refresh rotation for interactive sessions. Server-to-server traffic uses scoped API keys with optional expiry.
curl -sS https://api.send.et/v1/messages \ -H "Authorization: Bearer sk_test_********" \ -H "Content-Type: application/json" \ -d '{"to":"+251911******","sender":"ACME","body":"hello"}'API keys
Create, label, rotate, and revoke keys without downtime. Production keys can require IP ranges before traffic is accepted.
Test vs production
Test mode uses separate endpoints and quotas so engineers can integrate safely before KYB approval completes.
CIDR allowlisting
Attach one or more CIDR ranges to production keys to reduce credential misuse risk from unexpected networks.
Webhooks
Signed delivery events
Each webhook includes a signature header with a timestamp so your workers can verify send.et as the origin and drop replays.
{ "type": "message.delivered", "data": { "message_id": "msg_91ad", "to": "+251911******", "operator": "ET-900" }}Retries backoff with jitter; failures show up next to the originating message for operators and developers alike.
- Rate limits return explicit 429 responses with retry guidance.
POST /v1/webhooks/testvalidates your endpoint before go-live.
Delivery status lifecycle
queued
Accepted and scheduled for routing
submitted
Handed to operator gateway
delivered
Delivery receipt captured
failed
Retry policy applies; surfaced in UI and webhooks
Official SDKs
Official SDKs will ship after the public API freeze. Until then, use curl, HTTPie, or your preferred HTTP client against the documented endpoints on send.et.