For developers
A public API per business, and signed outgoing events. The same locks and limits that govern the interface govern these too.
Public API
A key is created in the business settings, carries an identifying prefix and is limited to the scopes you choose. Sending passes the same gates as sending from the inbox: the 24-hour window, plan limits and the outbound checks.
- Contacts: create, read, update, look up by identity.
- Conversations: list, read, change status and assignment.
- Messages: send, including Meta templates and media.
- Manage the outgoing webhooks through the API itself.
curl https://api.wehub.co.il/api/v1/public/messages \
-H "Authorization: Bearer wh_live_…" \
-H "Content-Type: application/json" \
-d '{
"channel": "whatsapp",
"to": "+972521234567",
"text": "ההזמנה יצאה למשלוח"
}'Outgoing webhooks
Each event is delivered as a POST carrying an HMAC-SHA256 signature and a timestamp. If the endpoint does not answer there are five retries at growing intervals, plus a delivery log on the integrations screen.
The events
message.receivedMessage receivedmessage.sentMessage sentconversation.openedConversation openedconversation.assignedConversation assignedconversation.closedConversation closedcsat.receivedSatisfaction score receivedcall.endedCall ended
Verifying the signature
Compare in constant time. A timestamp older than 5 minutes is rejected.
const signed = `${timestamp}.${rawBody}`;
const expected = crypto
.createHmac('sha256', webhookSecret)
.update(signed)
.digest('hex');
crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(req.header('X-Wehub-Signature')),
);The full documentation
The OpenAPI spec, a Postman collection and a test-connection button live inside the account, so you work against the real keys of the business.
Your own integration card
If all you want is to show data from your system inside a conversation, you do not need the API. Configure one URL, receive a signed POST with the contact identity, and return JSON.
Connect your first channel today
The wizard creates the business, connects a channel and invites the team. It ends by having you message yourself and watch it land.