Skip to Content

API Reference

Default base URL: http://localhost:3010.

Auth

When NOTIFICATION_API_KEY is set, pass Authorization: Bearer <key> or X-API-Key: <key> on /notifications routes. Unset = no auth.

POST /notifications

Send a notification to all env-configured recipients for each requested channel.

FieldRequiredDescription
messageyesPlain text or HTML body
channelsyesAt least one of TELEGRAM, EMAIL, SMS, WHATSAPP
sourceyesCalling service identifier
subjectnoUsed for email; prepended for other channels
contentTypenotext (default) or html
idempotencyKeynoDeduplicates retries within the same source (max 200 characters)

Example

curl -X POST http://localhost:3010/notifications \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $NOTIFICATION_API_KEY" \ -d '{ "subject": "EUR/USD signal", "message": "<b>BUY</b> EUR/USD @ 1.0850", "contentType": "html", "channels": ["EMAIL", "TELEGRAM", "SMS"], "source": "fu-strategy" }'

Response 201

{ "requestId": "uuid", "deliveryIds": ["uuid", "..."], "deliveriesAttempted": 4 }

When NOTIFICATIONS_ENABLED=false, returns 200 with status: "skipped". Repeated (source, idempotencyKey) requests return the original request and delivery IDs without sending again — see Idempotency.

GET /notifications

List delivery records. Query params: limit, source, recipient, status, channel.

GET /notifications/:id

Get a single delivery record by ID.

WhatsApp webhooks

Method & pathPurpose
GET /webhooks/whatsappMeta WhatsApp webhook verification
POST /webhooks/whatsappDelivery status updates (delivered, read, etc.)
Last updated on