> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.agentphone.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.agentphone.ai/_mcp/server.

# RCS Business Messaging

> Branded rich messaging to RCS-capable handsets, with automatic SMS fallback

RCS Business Messaging lets your agent text as a **branded sender** — your name and logo on the thread instead of a bare phone number — with delivery and read receipts, and tappable quick-reply chips. It runs through the same `POST /v1/messages` endpoint as every other channel.

> **Note**
>
> **RCS is concierge-onboarded.** Carriers approve each brand individually, so there is no self-serve signup yet. Reach out to [founders@agentphone.to](mailto:founders@agentphone.to) and we set up your RCS agent, run the carrier launch process with you, and place the line on your account.

## Your RCS line

An RCS agent arrives on your account as a line whose address starts with `rcs_` (for example `rcs_acme`) instead of a phone number. It behaves like any other number: attach it to an agent, see its threads in Conversations, receive inbound through the same webhooks.

## Sending

Address RCS **explicitly** — use your `rcs_` address as `from_number`, or pass `channel: "rcs"`:

```bash
curl -X POST https://api.agentphone.ai/v1/messages \
  -H "Authorization: Bearer $AGENTPHONE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from_number": "rcs_acme",
    "to_number": "+13105550123",
    "channel": "rcs",
    "body": "Your order has shipped! Want delivery updates?",
    "buttons": ["Yes, keep me posted", "No thanks"]
  }'
```

Sends that pass only `agent_id` go out as **SMS** from one of the agent's phone numbers — the platform never silently promotes a send to RCS. If you want RCS, say so.

`buttons` become tappable quick-reply chips (up to 11 per message, 25 characters each). A tap comes back as a normal inbound message carrying the chip's text.

## SMS fallback

Not every handset can receive RCS. If your line has an SMS fallback number configured (we set this up with you during onboarding), a send to a non-RCS handset is delivered automatically as a plain text from that number — same API call, nothing to detect on your side.

The message's `channel` always reflects what you asked for (`rcs`); when delivery actually happened over SMS, the message carries `deliveredChannel: "sms"` so downgrades are never invisible. In the dashboard those messages show "Delivered as SMS".

The fallback number is a real number on your account: replies to it reach the same agent, and it can't be released while it's serving as a fallback.

## Opt-outs — what you must send yourself

When a recipient replies STOP (or STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT), AgentPhone records the opt-out and **blocks further sends** to them from your RCS agent — subsequent sends return a clear `403`. A reply of START opts them back in.

AgentPhone never sends messages on your behalf, so **your agent or backend must send the opt-out confirmation text itself** (the STOP response you provided during carrier onboarding). The same applies to HELP responses. One confirmation message is allowed after a STOP; anything further is blocked until the recipient opts back in.

## Billing

RCS messages bill per message from your credits, inbound and outbound, at the RCS rates shown on your Billing page (the **RCS** tab in transaction history). A message that falls back to SMS bills at the rate of the send you requested.