Content Types
This page details all supported message types and which channels each one is available on.
Availability by channel
| Type | Messenger | Telegram | SMS | Web Chatt | ||
|---|---|---|---|---|---|---|
| Text | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Image | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Video | ✅ | ✅ | ✅ | ✅ | ✅¹ | ✅ |
| Audio | ✅ | ✅ | ✅ | ✅ | ✅¹ | ✅ |
| Document | ✅ | ❌ | ✅ | ✅ | ✅¹ | ✅ |
| Sticker | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ |
| Location | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ |
| Contact(s) | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ |
| Interactive | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| Template | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Reaction | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| Reply | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ |
| Mark as seen | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |
| Is typing | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| Payment Request | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Order Status | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
¹ Media on SMS is available only for Twilio MMS and remains carrier-dependent. Brazilian SMS is text-only. Additional carrier costs may apply.
² Web Chatt uses the same
contentshape as the examples on this page (WhatsApp-style payloads from Hub). Send withPOST /v1/communication/web-chatt2me/messageandfrom/toas in Web Chatt. The endpoint is included in the OpenAPI reference. Messages for offline visitors are accepted and kept pending. WhatsApp-only types (template, payment request, order status) are not used; mark-as-seen is supported on WhatsApp, Instagram, Messenger, and Web Chatt.³ For WhatsApp, Instagram, Messenger, Telegram, and SMS,
frommay be the application channel UUID or the channel-specific alternate — see Sending messages overview. Web Chatt accepts only the UUID forfrom.
Media size summary
The limit is selected from the channel and the media field used in content. MB values below are
implemented as MiB (1024 × 1024 bytes). URLs must be reachable by the Hub and by the destination
provider.
| Channel | Image | Video | Audio | Document | Sticker |
|---|---|---|---|---|---|
| 5 MB | 16 MB | 16 MB | 100 MB | 100 KB outbound | |
| 8 MB | 25 MB | 25 MB | Not supported | Platform sticker only | |
| Messenger | 25 MB | 25 MB | 25 MB | 25 MB | Not supported |
| Telegram | 10 MB | 50 MB | 50 MB | 50 MB | WebP: 50 MB transport; WebM: 256 KB; TGS: 64 KB |
| Twilio MMS | 5 MB total | 500 KB per media; 5 MB total | 500 KB per media; 5 MB total | 500 KB per media; 5 MB total | Not supported |
| Brazilian SMS | Not supported | Not supported | Not supported | Not supported | Not supported |
| Web Chatt | 25 MB visitor upload / 50 MB API outbound | 50 MB | 50 MB | 50 MB | Not supported by the widget upload flow |
Telegram media is uploaded by the Hub with multipart. This is why the supported limits are higher than Telegram's remote-URL limits. Telegram bots can download inbound files only up to 20 MB.
The Web Chatt widget uploads files directly to storage with a short-lived signed POST. The Hub confirms the stored object before acknowledging and persisting the canonical URL; message media is not transported as base64 through the WebSocket.
Outbound media normalization
The Hub converts only these source formats before provider submission. All other formats remain subject to the selected channel's documented MIME and size limits.
| Source input | Conversion |
|---|---|
image/webp | Static PNG for WhatsApp and Twilio MMS; retained for Instagram, Messenger, Telegram and Web Chatt. Animated WebP uses its first frame. |
audio/webm or video/webm in audioUrl | M4A for WhatsApp, Instagram, Messenger, Telegram and Twilio MMS. For WhatsApp with voice: true, OGG/Opus. Retained for Web Chatt. |
video/quicktime | H.264/AAC MP4 for WhatsApp, Instagram, Messenger, Web Chatt and Twilio MMS; retained for Telegram. |
If conversion fails, the Hub returns a conversion error and does not submit the original file to the provider.
See each channel guide for the explicit formats and inbound behavior.
Text
The simplest type. Available on all channels.
{
"from": "channel-uuid",
"to": "5511993986082",
"content": {
"text": "Hello! How can I help you?"
}
}
Image
Send an image via public URL. The caption (text) is optional.
{
"content": {
"imageUrl": "https://example.com/image.jpg",
"text": "Optional caption"
}
}
The URL must be publicly accessible and return the correct content type. Supported MIME types vary
by channel; do not use image/* as the value of mimeType.
Video
{
"content": {
"videoUrl": "https://example.com/video.mp4",
"text": "Optional video description"
}
}
Audio
{
"content": {
"audioUrl": "https://example.com/audio.mp3"
}
}
For WhatsApp only, set voice to true to send a voice note (PTT). Omit or set false for a normal audio file. Voice notes should use Ogg with Opus encoding per Meta.
{
"content": {
"audioUrl": "https://example.com/voice.ogg",
"voice": true
}
}
On Telegram, the
textfield can be used as audio caption.
Document (WhatsApp, Messenger, Telegram, Twilio MMS, and Web Chatt)
Send files such as PDFs, spreadsheets, presentations, etc.
{
"content": {
"documentUrl": "https://example.com/file.pdf",
"filename": "Commercial Proposal.pdf",
"mimeType": "application/pdf"
}
}
| Field | Required | Description |
|---|---|---|
documentUrl | ✅ | Public URL of the file |
filename | ✅ | Name displayed to the recipient |
mimeType | ❌ | MIME type of the file (e.g. application/pdf) |
Sticker
WhatsApp
{
"content": {
"stickerUrl": "https://example.com/sticker.webp"
}
}
Instagram
Use the platform sticker identifier:
{
"content": {
"stickerUrl": "like_heart"
}
}
Telegram
{
"content": {
"stickerUrl": "https://example.com/sticker.webp"
}
}
Location (WhatsApp and Telegram)
{
"content": {
"location": {
"latitude": -23.5505,
"longitude": -46.6333,
"name": "Chatt2.me HQ",
"address": "Av. Paulista, 1000, São Paulo, SP"
}
}
}
| Field | Required | Description |
|---|---|---|
latitude | ✅ | Between -90 and 90 |
longitude | ✅ | Between -180 and 180 |
name | ❌ | Location name (WhatsApp) |
address | ❌ | Text address (WhatsApp) |
Contact(s) (WhatsApp and Telegram)
Single contact
{
"content": {
"contact": {
"name": {
"formatted_name": "John Smith",
"first_name": "John",
"last_name": "Smith"
},
"phones": [
{ "phone": "5511999999999", "type": "CELL" }
]
}
}
}
Multiple contacts
{
"content": {
"contacts": [
{
"name": { "formatted_name": "John Smith", "first_name": "John" },
"phones": [{ "phone": "5511999999999", "type": "CELL" }]
},
{
"name": { "formatted_name": "Jane Smith", "first_name": "Jane" },
"phones": [{ "phone": "5511988888888", "type": "CELL" }]
}
]
}
}
Mark as seen (WhatsApp, Instagram, Messenger, and Web Chatt)
{
"content": {
"markSeen": true
}
}
Use this to signal to the user that you have read their message, activating the "seen" indicator (blue ticks on WhatsApp) in the conversation. On WhatsApp, this marks the conversation as read — no need to specify a particular message.
Is typing (WhatsApp, Instagram, Messenger, Telegram, and Web Chatt)
{
"content": {
"isTyping": true
}
}
Show the typing indicator in the conversation, signaling to the user that the agent is composing a response. Supported on WhatsApp, Instagram, Messenger, Telegram, and Web Chatt.
Reply
Replying to a specific message creates a visual thread — the recipient sees the original message quoted above your reply. Available on WhatsApp and Telegram.
See Reactions and Reply for the context.messageId field reference and examples.
Next steps
- Interactive Messages — buttons, lists, and CTA URL
- WhatsApp Templates — sending outside the 24h window
- Reactions and Reply — react to and reply to messages
- Payment Request & Order Status — payments and order updates