Skip to main content
POST
/
v1
/
phone
/
:id
/
sms
curl -X POST https://api.usenaive.ai/v1/phone/phone-uuid/sms \
  -H "Authorization: Bearer nv_sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "to": "+14155551234", "body": "Your order shipped!" }'
{
  "id": "msg_01j9e0m1m6fc38gsv2vkfqgzz2",
  "to": "+14155551234",
  "from": "+14155550000",
  "status": "queued",
  "surge_message_id": "msg_01j9e0m1m6fc38gsv2vkfqgzz2",
  "segments": 1,
  "credits_used": 0.04,
  "credits_remaining": 949.96
}
Sends an outbound SMS from a provisioned number. Billed per 160-char segment. Carrier-gated (not approval-gated): if the number’s campaign isn’t approved yet, the request returns 409 compliance_pending and no message is sent / no credit is charged.

Path Parameters

ParameterTypeDescription
idstringUUID of the sending phone number

Request Body

ParameterTypeRequiredDescription
tostringYesRecipient phone number in E.164 format (e.g. +14155551234)
bodystringYesMessage text
curl -X POST https://api.usenaive.ai/v1/phone/phone-uuid/sms \
  -H "Authorization: Bearer nv_sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "to": "+14155551234", "body": "Your order shipped!" }'
{
  "id": "msg_01j9e0m1m6fc38gsv2vkfqgzz2",
  "to": "+14155551234",
  "from": "+14155550000",
  "status": "queued",
  "surge_message_id": "msg_01j9e0m1m6fc38gsv2vkfqgzz2",
  "segments": 1,
  "credits_used": 0.04,
  "credits_remaining": 949.96
}

CLI

naive phone send --from phone-uuid --to +14155551234 --body "Your order shipped!"

MCP

Tool: naive_phone_send
{ "phone_id": "phone-uuid", "to": "+14155551234", "body": "Your order shipped!" }
Sending SMS is not approval-gated — it executes immediately (subject to the carrier-approval gate above). Only provisioning a number is approval-gated by default.