Send on any channel — checked now, delivered in the background
Reply in an existing conversation with conversation_id — on an Instagram comment thread that is a public reply under the customer's latest comment, or a private DM to them with reply_as: "dm" — or start one: WhatsApp with channel, to (a phone number) and an approved template; email with channel, to, from (one of your verified addresses) and subject. Everything the channel would refuse is refused here with a specific code. Attach files with attachments (uploaded file_ids or inline base64, 10 MB in all): any file on email and WhatsApp, images, video and audio on Instagram. An accepted message returns 202 with status: "queued"; its outcome arrives as a message.status webhook and on GET /messages/{id}. Send an Idempotency-Key header so a retry never sends twice.
curl -X POST "https://api.iotabot.com/v1/messages" \
-H "Authorization: Bearer $IOTABOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"conversation_id": "6a4b9e21c3f1a2b3c4d5e6f7",
"text": "Your order #1042 shipped yesterday — it arrives Friday."
}' \
-H "Idempotency-Key: order-1042-shipped"{
"data": {
"id": "6a4ba0f1c3f1a2b3c4d5e733",
"object": "message",
"status": "queued",
"channel": "whatsapp",
"conversation_id": "6a4b9e21c3f1a2b3c4d5e6f7",
"created_at": "2026-10-01T09:16:10.004Z"
}
}