Concepts & Architecture
Before making your first request, understanding these four concepts will prevent most integration questions and errors.
Application
An Application is the main organizational unit within Hub Chatt2.me. It:
- Groups one or more communication channels
- Has its own API Key
- Controls the access scope — a key can only see the channels of its own Application
Think of the Application as your "project" or "product" within the platform.
Channel
A Channel is the connection between your Application and a messaging platform. Examples:
| Channel | What it represents |
|---|---|
| A phone number connected via the WhatsApp Business API with Meta | |
| An Instagram Business account authorized via OAuth (Facebook or Instagram) | |
| Facebook Messenger | A connected Facebook Page |
| Telegram | A Telegram Bot (via Bot Token) |
| SMS | An SMS number configured via Twilio |
| Web Chatt | A first-party web chat widget embedded on your site (configured in Hub) |
The from field
In all message-sending endpoints, the from field is the channel UUID:
{
"from": "6cbd6789-1d2b-47e0-9391-5eb91d2839ea",
"to": "5511993986082",
"content": { "text": "Hello!" }
}
This UUID is generated by the platform when you connect the channel. You can find the channel UUID in the Application dashboard, under the Channels section.
Store your channel UUIDs as environment variables in your backend. They do not change unless the channel is disconnected and reconnected.
Message
A Message is the sending payload — what you want to send and to whom. Every message has:
from— UUID of the sending channelto— recipient identifier in the channelcontent— the content (text, image, interactive, etc.)
The to field
The format of to varies by channel:
| Channel | Format of to | Example |
|---|---|---|
E.164 number (without +) | 5511993986082 | |
| IGSID (Instagram user ID) | 847495124317323 | |
| Messenger | PSID (Messenger conversation ID) | 26203292189261166 |
| Telegram | user/group chat_id | 8568649397 |
| SMS | E.164 number (with +) | +5511944574999 |
| Web Chatt | Visitor identifier (from webhooks when the visitor messages you) | (per inbound payload) |
Connecting the widget and allowed origins are done in the Hub UI. See Web Chatt.
Message status
A send response returns two fields:
{
"messageId": "9307b9ab-5fab-4151-b7c2-b00c2a8a6e8e",
"status": "sent"
}
| Status | Meaning |
|---|---|
sent | The message was successfully sent to the channel (Telegram, Instagram, SMS) |
enqueued | The message was received and is in the send queue (WhatsApp, Messenger) |
error | Send failed — check errorMessage and errorCode in the response |
The messageId can later be used in webhook logs to track delivery status.
Webhook
A Webhook is an HTTP endpoint you register on the platform to receive real-time notifications. There are two event types:
| Event | When it fires |
|---|---|
Message | When a user sends a message to your channel |
MessageStatus | When the delivery status of a message changes (delivered, read) |
Without a configured webhook, you can only send messages — not receive them.
Full flow
Your API Key
│
▼
Application (groups channels and defines key scope)
│
├── Channel WhatsApp (from: uuid-wa)
├── Channel Telegram (from: uuid-tg)
└── Channel Instagram (from: uuid-ig)
│
▼
POST /v1/communication/{channel}/message
{ from, to, content }
│
▼
{ messageId, status }
│
▼ (asynchronous, via webhook)
Your endpoint receives message received / status events