Skip to main content
POST
Reply in a conversation
Minimum role required: Member

Authorizations

X-Axilio-Api-Key
string
header
required

Customer API key (axl_ prefix).

Path Parameters

conversation_id
string<uuid>
required

conversation identifier

Body

application/json
idempotency_key
string
required

A caller-chosen key; the same key for your organization sends at most once.

Required string length: 1 - 128
parts
object[] | null
required

The message content in order. An SMS is one text part; media parts (at most 2 MiB in all) make it an MMS, with any text part first.

Required array length: 1 - 11 elements

Response

Accepted

A text message on one of the organization's dedicated phones.

body
string
required

The message text: every text part, in order, joined with a newline. Empty for a message with no text.

channel
enum<string>
required

How the message travelled: sms (plain text), mms (multimedia, including group texts and some long texts), or rcs. More channels may be added; treat a value you don't know as a channel you don't handle.

Available options:
sms,
mms,
rcs
conversation_id
string
required

The conversation this message is in: GET /conversations/{conversation_id} reads it, and its messages are at GET /conversations/{conversation_id}/messages.

created_at
string<date-time>
required

When the platform stored the message. Lists sort and filter on this time.

direction
enum<string>
required

inbound for a message the phone received, outbound for one it sent.

Available options:
inbound,
outbound
from
string | null
required

Sender: an E.164 number, a short code, or an alphanumeric sender id. Null only when the sender is this phone's own SIM and the phone does not know its number.

id
string
required

Message identifier.

is_group
boolean
required

True for a group message (more than one recipient).

parts
object[] | null
required

The message content in order: text and media. A plain SMS has one text part.

phone_id
string
required

The phone that received or sent the message.

received_at
string<date-time> | null
required

When this phone received the message, by the phone's clock, to the millisecond. Null for a message the phone sent.

sent_at
string<date-time> | null
required

When the message was sent. For a received message, the sending network's clock (SMS carries whole seconds); for a message this phone sent, when the platform learned the network accepted it. Null for a message not sent yet.

to
string[] | null
required

Every recipient, as E.164 numbers. For a one-to-one inbound message this is the phone's own number; a group message lists every recipient. Empty when the only recipient is this phone's own SIM and the phone does not know its number.

truncated
boolean
required

True when the text was longer than 5000 characters and was cut to that length.

accepted_at
string<date-time>

When the phone reported it had this outgoing message. Absent for a received message, and for one the phone never got.

api_key_id
string

The API key that sent this message. Absent for a message a signed-in user sent, a received message, and one sent before senders were recorded.

deleted_at
string<date-time>

When the message was deleted. Present only on a deleted message, which GET /messages/{message_id} still returns with no body or parts; lists and conversations leave it out.

delivered_at
string<date-time>

When a message this phone sent was delivered. Absent until then, and for a received message.

error
string

Why an outbound message failed or is unconfirmed, in words. Empty otherwise.

error_code
enum<string>

Why an outbound message failed or is unconfirmed, as a code to branch on: phone_unreachable (the phone never got it before its deadline; it did not go out), no_result (unconfirmed: the phone had it but has not reported), policy_off (the phone's sending switch is off), expired (its deadline passed before the phone could send it), no_subscription (no SIM line), no_service (no mobile service or data), radio_off, carrier_rejected, phone_rate_limited (Android's outgoing-message limit on the phone), media_fetch_failed (the phone could not download the attachment), connection_lost (the phone lost its connection before sending; it did not go out), queue_full (the phone was too busy), or send_failed (any other failure; error has the detail). Empty when error is. Absent on a failure reported by older phone software.

Available options:
phone_unreachable,
no_result,
policy_off,
expired,
no_subscription,
no_service,
radio_off,
carrier_rejected,
phone_rate_limited,
media_fetch_failed,
connection_lost,
queue_full,
send_failed
failed_at
string<date-time>

When a message this phone sent failed. Absent unless its status is failed.

phone_deletion
object

What the delete did to the copy on the phone. Present only on a deleted message: pending until the phone answers, then its answer.

status
enum<string>

The delivery state of a message this phone sent: queued (accepted and issued to the phone), sent (the network accepted it), delivered (the recipient acknowledged it), failed, or unconfirmed (the phone had it but has not reported whether it went out; do not resend automatically, it may still turn sent or failed). Empty for a received message. More statuses may be added; treat one you don't know as still in progress.

Available options:
queued,
sent,
delivered,
failed,
unconfirmed
user_id
string

The signed-in user who sent this message, from the dashboard or the CLI. Absent for a message sent with an API key, a received message, and one sent before senders were recorded.