Messaging
Send on email, SMS, WhatsApp or LINE — and read `delivered`, not the status code.
POST /v1/conversations/messages sends to a contact on email, SMS, WhatsApp or LINE. It threads into the same conversation your team sees in the inbox — an API message is not a separate channel nobody can find later.
curl -X POST https://app.360nook.com/api/v1/conversations/messages \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{
"contact_id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301",
"channel": "sms",
"body": "Your appointment is confirmed for Tuesday at 10."
}'Read delivered, not the status code
A 201 means we recorded and attempted the message, not that it arrived. The message row is written before the provider is called, so it exists in the inbox either way. The response tells you what actually happened:
{ "id": "...", "conversation_id": "...", "channel": "sms",
"delivered": false, "code": "contact_dnd", "error": "contact_dnd" }contact_dnd means that contact has asked not to be contacted, and we refused before calling the provider. That is not a fault in your request and retrying will not change it — it is an opt-out being honoured. Treat it as final.
Sends count against your plan’s allowance, and only when they succeed. A message skipped for DND or rejected by the provider is not billed.