Postman
Importable v2.1 collections for the public API surface.
Available collections
| Channel | File | Covers |
|---|---|---|
| SMS | docs/api/sendoka-sms.postman_collection.json |
single + batch send, list, get, cancel, 10DLC provisioning (brand → campaign → number) |
docs/api/sendoka-email.postman_collection.json |
single + batch send, scheduled, template, CC/BCC/Reply-To, attachments, tracking, list, get, cancel, suppressions |
Import
- Postman → File → Import → drop the JSON file
- Open the collection's Variables tab
- Edit:
baseUrl→ your deploy (http://localhost:3000,https://YOUR-HOST)apiKey→sok_test_...for safe smoke tests (no AWS spend, suppression + idempotency gates still run) orsok_live_...for real sendsfromNumber/toNumber→ defaults are+15555550100/+15555550199(RFC 5733 reserved test numbers)smsId/brandId/campaignId→ fill in from previous responses as you chain requests
Built-in helpers
- Pre-request script auto-generates a fresh
{{idempotencyKey}}per request, so retries within the 24h window replay the cached response instead of double-sending. - Bearer auth is set on the collection — every request inherits it, no per-request header needed.
Working flow for live (sok_live_*)
- Provision (10DLC) → brand — wait for
status: verified(re-PATCH with empty body to poll) - Provision (10DLC) → campaign — bind
brandId, wait for verified - Provision (10DLC) → phone number — bind
campaignId, wait for verified - Update collection variable
fromNumberto the provisioned E.164 - Run any Send request
The sms-verify-poll cron flips verification statuses every 5 minutes; alternatively re-PATCH with an empty body to force a re-check.
Working flow for test (sok_test_*)
- Set
apiKeyto a test key - Run Send SMS — minimal — returns
{ id: "msg_...", status: "sent" }with a simulated provider id - All gates run except sender-registration and AWS publish, so you can exercise suppression, idempotency, template rendering, and scheduled sends without provisioning anything
Coming soon
Webhook-replay collection will land here next.