YOUR GATEWAY, AT A GLANCE
Messaging overview.
Connect your number. Keep every conversation moving.
WhatsApp connection
You're connected
Open WhatsApp → Linked devices → Link a device.
Queue control
You decide when messages leave the queue.
Pause affects future sends. A message already sending cannot be recalled.Compose a message
Recent activity
OUTGOING ACTIVITY
Messages.
A clear record of every request and its actual status.
Message history
| Recipient | Message | Type | Status | Updated · IST |
|---|
Latest 500 requests. Full history remains in SQLite and is available by message ID.
INCOMING CONVERSATIONS
Your inbox.
New incoming messages from your connected session.
Latest 100 incoming events. Media is described by type; attachments are not downloaded. Linked-device IDs may appear when a phone number is unavailable.
BUILD WITH ORION
One simple API.
Connect your Sheet, CRM or application to your WhatsApp number.
Queue your first message
Authenticate with your local API key. Reuse the same idempotency key when retrying the same request.
202 = queued. This is not a delivery confirmation.
Google Sheets integration
- Open your dedicated WhatsApp Sheet → Extensions → Apps Script.
- Copy
apps-script/Code.gsfrom this project. Use the separate integration key fromnpm run key -- --integration. - Set
ORION_BASE_URLandORION_API_KEYin Script Properties. - Reload the Sheet and choose Orion WhatsApp → Prepare sheet.
- Select a row, queue it, then sync its status.
Google Apps Script cannot reach localhost. Use your gateway’s HTTPS address and its integration key.
API reference
Outgoing webhooks
Set WEBHOOK_URL and WEBHOOK_SECRET in .env. Verify x-orion-signature against HMAC-SHA256 of timestamp + "." + rawBody. Check timestamp freshness and deduplicate by event ID. Failed delivery retries up to 8 times.
Use GET /v1/events?after=EVENT_ID for reliable incremental polling. All timestamps are stored in UTC.
YOUR LOCAL ENVIRONMENT
Configuration.
Connection settings and sending boundaries for this workspace.
Runtime configuration
Edit .env in the project folder, then restart the server to apply changes. Start with the provided .env.example.
Session & access
Retrieve your dashboard key with npm run key. The API key and encryption key are stored in the ignored data/secrets.json file. Keep this file with your encrypted database backup.
This prototype uses an unofficial linked-device connection. Pairing and real delivery must be tested with your own test phone. WhatsApp changes can disconnect sessions.