BetaThe V4 API is in beta — endpoints and functionality may change.
Messagesv4

Send a message to a chat

POST/chats/{chatId}/messages

Sends a message into an existing chat (channel is inferred from the chat). Returns the message object at the top level (not wrapped in data).

Path parameters

chatIdRequiredstring

Unique identifier of the chat, prefixed with chat_. Returned by the List chats endpoint.

Headers

AuthorizationRequiredstring

Your API key, sent as a bearer token: Authorization: Bearer <api_key>. Editing this stays in sync with the API key box on the right.

Bearer
Idempotency-Keyoptionalstring

Optional key for safe retries. Replaying the same key with an identical body returns the original result; a different body returns 409. Use a unique value (such as a UUID) per logical request.

Body parameters

JSON
contentRequiredMessageContent
typeRequired"text"
textRequiredstring
reply_tooptionalstring

Message id to reply to.

effectoptionalstring

iMessage screen/bubble effect (Blooio).

link_previewoptionalLinkPreview
imageUrloptionalstring
titleoptionalstring
dry_runoptionalboolean

Returns

idoptionalstring
chat_idoptionalstring
channel_idoptionalstring
channel_typeoptionalstring
"blooio""twilio""whatsapp""whatsapp_business""rcs_business""amb"
protocoloptionalstring | null
directionoptionalstring
"inbound""outbound"
typeoptionalstring
statusoptionalstring
erroroptionalobject | null
fallbackoptionalobject

Present when a send could not be delivered on the requested channel and a different channel should be tried.

recommendedoptionalboolean

True when falling back to another channel is recommended.

reasonoptionalstring
tooptionalstring

Recipient identifier. Present only on per-recipient items inside a fan-out (FanOutResult) response.

dry_runoptionalboolean
would_sendoptionalboolean
previewoptionalobject

Response codes

200Dry-run preview
201Message accepted. The message object is returned with its current `status`; a synchronously rejected send returns `status: "failed"` with an `error` object (still 201, since the message was created).
401Your API key is missing or invalid. Pass it as a bearer token.
404No message was found with the provided `chatId`.
409The request conflicts with the current state of the message (e.g. it already exists, the chat is closed, or the channel isn't active).
422Validation failed — one or more fields in the request are invalid or missing.
501This message endpoint is defined but not implemented yet.

Sends a live request with your values and shows the real response below. Your key is stored only in this browser.

Request
curl -X POST https://api.blooio.com/v4/chats/chat_a1b2c3d4/messages \  -H "Authorization: Bearer bl_live_..." \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "content": {      "type": "text",      "text": "Hello from Blooio!",      "reply_to": "string",      "effect": "string",      "link_preview": {        "imageUrl": "https://example.com",        "title": "Example title"      }    },    "dry_run": false  }'
Body object
Response objectexample
{  "id": "obj_a1b2c3d4",  "chat_id": "chat_a1b2c3d4",  "channel_id": "ch_a1b2c3d4",  "channel_type": "blooio",  "protocol": "string",  "direction": "inbound",  "type": "string",  "status": "active",  "error": {},  "fallback": {    "recommended": false,    "reason": "string"  },  "to": "+15551234567",  "dry_run": false,  "would_send": false,  "preview": {}}