Media and Content Types
All media types use the same send endpoint: POST /api/v1/messages.
Supported content_type values
| Type | Required | Hub UI |
|---|---|---|
text | body | Bubble / list row |
image | media_url or media_base64 | Image preview |
document | media | File row (name and open action) |
audio | media | Audio row |
video | media | Video card |
link | link_url | CTA card |
html | html or HTML body | Full newsletter reader |
system | body | System styling |
Image
{
"phone": "+228XXXXXXXX",
"content_type": "image",
"body": "Photo SEED - agence de Lomé",
"media_url": "https://cdn.example.com/agence.jpg",
"media_filename": "agence.jpg",
"media_mimetype": "image/jpeg"
}
Document
{
"phone": "+228XXXXXXXX",
"content_type": "document",
"body": "Guide d'affiliation (PDF)",
"media_url": "https://cdn.example.com/guide.pdf",
"media_filename": "guide-affiliation.pdf",
"media_mimetype": "application/pdf"
}
Audio
{
"phone": "+228XXXXXXXX",
"content_type": "audio",
"body": "Message vocal d'accueil",
"media_url": "https://cdn.example.com/accueil.mp3",
"media_filename": "accueil.mp3",
"media_mimetype": "audio/mpeg"
}
Video
{
"phone": "+228XXXXXXXX",
"content_type": "video",
"body": "Présentation des services",
"media_url": "https://cdn.example.com/services.mp4",
"media_filename": "services.mp4",
"media_mimetype": "video/mp4"
}
CTA link
{
"phone": "+228XXXXXXXX",
"content_type": "link",
"body": "Consultez votre espace assuré.",
"link_url": "https://morisbox.com",
"link_title": "Espace assuré SEED",
"link_description": "Cotisations, demandes et documents.",
"link_label": "Ouvrir le portail",
"link_image_url": "https://cdn.example.com/cover.jpg"
}
Base64 upload
Instead of media_url:
{
"content_type": "document",
"media_base64": "<base64…>",
"media_filename": "piece.pdf",
"media_mimetype": "application/pdf"
}
Notes
- Prefer HTTPS media URLs that MorisBox and its clients can access
- For large broadcasts, host files on a CDN and avoid very large Base64 payloads
- Media messages are hub messages, not automatic conversations