Reply to an Apple Messages conversation
Requires a configured, connected business account and an open conversation.
Queues a billable message; sent means Apple gateway acceptance. The API validates
native content. Send native content with --content, or a stored template with
--template (browse them with "bird amb templates list"); the two are mutually
exclusive, and a template send derives its category from the template.
Build the request from flags, a JSON AMBMessageSendRequest body via --body-file ("-" reads
stdin), or both — a flag overrides the matching body field. Run --example to
print a ready-to-edit body, or --dry-run to print the resolved request without
sending it.
# print the body shape (no credentials needed)
bird amb send --example
# the body it prints:
{
"content": {
"body": "Your order is ready.",
"type": "text"
},
"from": "b52d6267-2b62-4f8a-8842-0533d0f1dc07",
"to": "opaque-customer-id"
}
# send by template with variable values
bird amb send --from b52d6267-2b62-4f8a-8842-0533d0f1dc07 --to opaque-customer --template bird_order_update --parameters '{"order_number":"1234"}'
| Name | Description |
|---|
--from | Apple Business ID of a configured business (required; or in --body-file) |
--to | Opaque customer identifier from an open conversation (required; or in --body-file) |
--content | Native text, rich_link, or interactive content as JSON (mutually exclusive with --template) |
--template | Send by a stored template: its id (amt_…) or slug (mutually exclusive with --content) |
--language | Template language as a BCP-47 tag (e.g. fr); template sends only |
--parameters | Template variable values as a JSON object; template sends only |
--source | Sender identity permitted by the credential: api, automation, or operator |
| Name | Description |
|---|
--category | Category label for statistics (rejected alongside --template, which derives its own category) |
--group | Department identifier |
--intent | Purpose of the conversation |
--locale | Apple locale identifier; omitted uses the conversation locale |
--metadata | Per-message context as a JSON object, up to 2 KB |
--tags | Structured labels as a JSON array of name and value objects |
| Name | Description |
|---|
--body-file | Read the JSON request body from this file; "-" reads stdin |
--example | Print a complete example request body, then exit |
--dry-run | Print the resolved request without sending it, then exit |
--idempotency-key | Deduplication key; a retry with the same key won't act twice |
| Name | Description |
|---|
--response-schema | Print the fields this command returns, then exit |