API Reference

Every endpoint across the email (v1) and WhatsApp/Push/OTP (v2) APIs. Same Authorization: Bearer $API_KEY on both. Machine-readable: v1 OpenAPI JSON · v2 OpenAPI JSON.

v1 — Email

https://theaurapost.com/api/v1

API Keys 3 endpoints
GET /api-keys

List this tenant's API keys

Prefixes and metadata only — the key hash is never serialized.

POST /api-keys

Generate a new API key

The plaintext key is returned exactly once, in this response — it is never retrievable again.

DELETE /api-keys/{id}/revoke

Revoke an API key

Immediate and irreversible — a revoked key can never be un-revoked, only replaced by generating a new one.

Campaigns 4 endpoints
GET /campaigns

List campaigns

POST /campaigns

Create a campaign

GET /campaigns/{id}/estimate

Pre-send cost estimate + live balance

Returns estimated cost vs live balance + daily limit, and the projected sent/partial/blocked status.

POST /campaigns/{id}/send

Send a campaign (truthful status)

Enforces the pre-send credit gate; reports sent / partial / blocked, never a fake "sent".

Embedded Designer 2 endpoints
POST /embed/designer/token

Mint an embedded designer token (master key)

Returns { url, token, expires_at } scoped to one merchant, ~10 min TTL.

GET /embed/designer/context

Embedded designer bootstrap context

GDPR 6 endpoints
POST /gdpr/export

Request a data export for a contact

POST /gdpr/deletion

Request deletion of a contact's data

GET /gdpr/requests

List data export/deletion requests

GET /gdpr/requests/{id}

Check a data request's status

GET /gdpr/retention-policy

Get this tenant's data retention settings

PUT /gdpr/retention-policy

Update data retention settings

Health 1 endpoint
GET /health/lanes

Per-channel, per-lane queue depth

Lets a partner's failover logic detect a backed-up lane (e.g. OTP) and reroute before it times out. Depth is 0 on the sync queue driver — meaningful under Redis/database queues.

Reseller 3 endpoints
GET /partners/sub-accounts

List merchants

POST /partners/sub-accounts

Create a merchant

POST /partners/sub-accounts/{id}/fund

Fund a merchant wallet

Sending 3 endpoints
POST /messages/send

Send a single transactional email

POST /messages/batch

Send a batch (<=50 recipients)

GET /messages/{id}/status

Message delivery status

Templates 4 endpoints
GET /templates

List templates

POST /templates

Create a template

GET /templates/{id}

Get a template

PUT /templates/{id}

Update / save-back a template (API key or embed token)

Accepts a merchant-scoped embed token to persist design_json + html_body from the embedded designer.

Webhooks 3 endpoints
GET /webhooks

Get this tenant's webhook configuration

`secret` is reported as `"set"` or `null` — the plaintext signing secret is never returned by this endpoint.

PUT /webhooks

Configure the webhook URL, mode, signing secret, and subscribed events

Sending `secret` rotates it (set-or-rotate — there is no separate rotate endpoint). Omit `events` to leave the subscription unchanged; `[]` subscribes to all events; a non-empty array subscribes to only those.

GET /webhooks/deliveries

Recent webhook delivery attempts

Paginated, newest first — status_code, attempt_count, and error_message per delivery.

v2 — WhatsApp, Push & OTP

https://theaurapost.com/api/v2

Push 4 endpoints
POST /push/send

Send a single transactional push notification

Targets a person by email OR phone (whichever you have) — delivered to every browser they're subscribed from.

GET /push/analytics

Push funnel analytics (views, clicks, conversions)

GET /activity/push

Per-notification push activity feed

GET /activity/push/summary

Push activity summary

Push Campaigns 4 endpoints
GET /push/campaigns

List push campaigns

POST /push/campaigns

Create a push campaign

POST /push/campaigns/{id}/send

Send a push campaign

GET /push/campaigns/{id}/report

Push campaign delivery report

Push Templates 2 endpoints
GET /push/templates

List push templates

POST /push/templates

Create a push template

WhatsApp 7 endpoints
POST /messages/whatsapp/send

Send a single WhatsApp message (approved template required)

POST /messages/whatsapp/batch

Send WhatsApp to multiple recipients

GET /messages/whatsapp/{id}/status

WhatsApp message delivery status

POST /messages/whatsapp/{id}/retry

Retry a failed WhatsApp message

POST /whatsapp/otp/send

Send a WhatsApp OTP

Idempotency-Key is MANDATORY here (422 without it) — a blind retry without one could deliver the same code twice.

GET /activity/whatsapp

Per-message WhatsApp activity feed

GET /activity/whatsapp/summary

WhatsApp activity summary (rates, category breakdown)

WhatsApp Campaigns 6 endpoints
GET /campaigns/whatsapp

List WhatsApp campaigns

POST /campaigns/whatsapp

Create a WhatsApp campaign

POST /campaigns/whatsapp/{id}/recipients/batch

Append recipients to a campaign (ingest, before seal)

POST /campaigns/whatsapp/{id}/seal

Seal a campaign's recipient list (no more appends after this)

POST /campaigns/whatsapp/{id}/send

Send a sealed WhatsApp campaign

GET /campaigns/whatsapp/{id}/report

WhatsApp campaign delivery report, incl. failure-category breakdown

WhatsApp Templates 4 endpoints
GET /whatsapp/templates

List WhatsApp templates

POST /whatsapp/templates

Create a WhatsApp template draft

POST /whatsapp/templates/{id}/publish

Submit a template to Meta for review

POST /whatsapp/templates/{id}/deploy

Deploy an approved template to a connection

SDKs

Node, PHP and Python clients cover both the v1 (email/template/campaign/suppression/usage/GDPR) and v2 (WhatsApp, Push, OTP) surfaces. Contact support@theaurapost.com for access.