POST/v1/messagesmessages:sendThe API key needs the messages:send permission. Without it the call is refused with 403 insufficient_scope. Sign in to try
HTML with cc
Request
curl -X POST "https://api.iotabot.com/v1/messages" \
-H "Authorization: Bearer $IOTABOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel": "email",
"to": "priya@example.com",
"from": "support@acme.com",
"subject": "Your order #1042",
"html": "<p>Hi Priya,</p><p>Your order shipped.</p>",
"cc": [
"orders@acme.com"
]
}' \
-H "Idempotency-Key: order-1042-shipped"Response · 202
{
"data": {
"id": "6a4ba0f1c3f1a2b3c4d5e733",
"object": "message",
"status": "queued",
"channel": "email",
"conversation_id": "6a4b9e21c3f1a2b3c4d5e6f7",
"created_at": "2026-10-01T09:16:10.004Z",
"type": "email",
"email": {
"subject": "Order #1042",
"mailbox": "support@acme.com",
"customer": "priya@example.com",
"message_id": "<0102019a1c.iotabot@acme.com>",
"thread_id": "<CAF3kq1x@mail.gmail.com>",
"from": "support@acme.com",
"to": [
"priya@example.com"
],
"cc": [],
"in_reply_to": "<CAF3kq1x@mail.gmail.com>",
"references": "<CAF3kq1x@mail.gmail.com>"
}
}
}Errors
conversation_closedintegration_pausedsender_not_verifiedsender_not_foundrecipient_suppressedrecipient_unsubscribedfile_already_usedattachments_too_largeapi_quota_exceededidempotency_key_reusedidempotency_in_progress
