ready. Try Ready →Sign up

#Legacy endpoints

Still supported. New integrations should use the other endpoints in this reference.

#Send a message (older path)

POST/sms/send

The same send as POST /v1/messages, with the text in message.

  • Idempotent Yes, with Idempotency-Key
  • Rate limit Paced to your carrier throughput; 6,000/min ceiling
  • Cost Same as a send

Body parameters

toE.164 stringRequired
Recipient. A 10-digit US number is treated as +1.
messagestringRequired
The text. Same length limits as body on /v1/messages.
fromE.164 stringOptional
One of your numbers.
DetailsUnlike /v1/messages, a number that isn't on your account is ignored here and Ready picks one.
from_phone_number_idintegerOptional
Send from this number id instead (the phone_number_id from a purchase).
from_strategyenumOptionalDefault local
local, even (or deliverability) or random. Ignored when from_phone_number_id is set.
media_urlstringOptional
As on /v1/messages.
confirm_empty_mergebooleanOptional
As on /v1/messages.
conversation_idintegerOptional
As on /v1/messages.
quoted_message_idintegerOptional
As on /v1/messages.
override_quiet_hoursbooleanOptional
As on /v1/messages.

Errors

HTTPCodeWhen
400no codeto missing, or no message and no media_url.
400MESSAGE_TOO_LONGToo long.
402insufficient_balanceBalance too low.
4xx, 5xxothersAs on POST /v1/messages, except invalid_from.

#Message log (dashboard)

GET/sms/logs

The dashboard's message log. Use GET /v1/messages instead: rows here are raw and can change.

  • Cost Free

Query parameters

limitintegerOptionalDefault 50Max 1000
Page size.
offsetintegerOptionalDefault 0
Rows to skip.
directionenumOptional
inbound or outbound. Anything else returns no rows, with no error.
statusstringOptional
Internal values: sent, pending, delivered, failed, received. queued matches nothing here.

Returns

data[]object[]
Message rows, without the message_id a send returned.
DetailsStable fields: id (integer), direction, from_number, to_number, body, status, segments, cost, created_at, delivered_at.
hasMoreboolean
camelCase here. total is always null.

Errors

HTTPCodeWhen
500no codeThe log couldn't be loaded. Retry.