Message content
Typed v4 content: text, media, multipart, rich links, and polls.
Every v4 send uses a content object with a type field. The API validates the shape before routing.
Text
{
"content": {
"type": "text",
"text": "Hello!",
"reply_to": "msg_parent"
}
}Optional fields (where the channel supports them) include effect for iMessage screen/bubble effects and link-preview overrides.
Media
{
"content": {
"type": "media",
"attachments": [
{ "url": "https://cdn.example.com/photo.jpg" }
],
"text": "Optional caption"
}
}See Attachments for URL requirements and common formats.
Multipart
Use multipart when you need several parts in one message (text + media, or multiple media items) in a single content object. Prefer media for a simple attachment list.
Rich link
Some channels support a structured rich-link payload (title, image, URL). If unsupported, Blooio falls back or returns a capability error.
Poll
Polls are normal message content on Blooio. Constrain routing with from.type: "blooio" so only poll-capable senders are considered:
{
"from": { "type": "blooio" },
"to": "+15551234567",
"content": {
"type": "poll",
"title": "Which day works?",
"options": ["Monday", "Wednesday", "Friday"]
}
}Dedicated chat poll endpoints remain available for compatibility. Vote and results live under /chats/{chatId}/polls.
Capability-aware routing
When from is omitted or only constrains type, Blooio skips senders that cannot deliver the content type (for example polls on Twilio). Exact number / sender_key / id selectors fail clearly if that sender cannot send the content.