Skip to main content
An RCS agent is the carrier-side sender identity (sender ID, display name, branding) an organization uses for RCS Business Messaging. These routes register that identity, record which agent answers its messages, and check whether a phone number can receive RCS. For the channel setup, see RCS. Verified against lua-cli 3.33.0.

Base URL and authentication

Every route sits under https://api.heylua.ai/developer/orgs/:orgId/rcs-agents and takes Authorization: Bearer <<YOUR_API_KEY>>; the REST API overview covers keys, scopes, and the error envelope. Every route checks a telephony scope on the organization in the path: telephony:read lists and inspects, telephony:write creates, updates, links, and runs capability checks, and telephony:manage suspends and unlinks. There is no CLI equivalent for this family. A POST answers 201. The :agentId path segment on these routes is the RCS agent’s ID (the id field below), not the Lua agent ID. The Lua agent is passed as luaAgentId in the link body.

RCS agent object

string
RCS agent ID; use it in the path of the other routes.
string
Owning organization.
string
Carrier RBM sender ID. Unique across organizations.
string
Name shown to recipients.
string
Optional description.
string
Logo image URL.
string
Banner image URL.
string
One of pending, testing, live, suspended. Set with PATCH; the platform never advances it.
string
Inbound webhook URL stored on the record. This API does not register it with the carrier.
string[]
Reserved; always [].
string[]
Regions where the agent is available, as free-form strings.
string
User ID of the creator.
string
Creator email, when known.
string
The Lua agent recorded for this sender, once linked.
number
Unix time in milliseconds.

Endpoints

POST /developer/orgs/:orgId/rcs-agents

Registers an RCS agent from carrier RBM agent details; the record starts in status pending. Scope telephony:write. Answers 201 with the RCS agent object.
string
required
The RBM sender ID issued by the carrier.
string
required
Name shown to recipients.
string
Description.
string
Logo image URL.
string
Banner image URL.
string[]
Regions where the agent is available.

GET /developer/orgs/:orgId/rcs-agents

Lists the organization’s RCS agents. Scope telephony:read.
string
One of pending, testing, live, suspended.
number
default:50
Maximum results.
number
Results to skip.
Response 200 with { agents: RcsAgent[], count }, where count is the total matching the filter.

GET /developer/orgs/:orgId/rcs-agents/:agentId

Returns one RCS agent object. Scope telephony:read. 404 when unknown.

PATCH /developer/orgs/:orgId/rcs-agents/:agentId

Updates an RCS agent that is not suspended. Scope telephony:write. Answers 200 with the updated object; 404 when the agent is unknown or suspended.
string
Name shown to recipients.
string
Description.
string
Logo image URL.
string
Banner image URL.
string
One of pending, testing, live, suspended. Written as given; neither the value nor the transition is validated. This is the only way an RCS agent moves from pending to testing or live, so set it once the carrier has approved the agent.
string
Inbound webhook URL to store.
string[]
Regions where the agent is available.

DELETE /developer/orgs/:orgId/rcs-agents/:agentId

Suspends the RCS agent record. Scope telephony:manage. The carrier-side RBM agent is not deleted. Suspended agents are excluded from PATCH, link, and the capability checks, and cannot be restored through this API. Response 200 with { "success": true }.

POST /developer/orgs/:orgId/rcs-agents/:agentId/link

Records the Lua agent for this sender. Scope telephony:write. Answers 201 with the updated object and linkedAgentId set. Inbound messages are routed by an RCS channel record for the sender ID, which this route does not create; set up the channel as described in RCS.
string
required
The Lua agent ID.
Removes the recorded Lua agent. Scope telephony:manage. Answers 200 with the updated object.

POST /developer/orgs/:orgId/rcs-agents/:agentId/capability-check

Checks whether one phone number can receive RCS from this agent. Scope telephony:write. The RCS agent must be testing or live.
string
required
The number to check, in E.164.
Response 201 with { phoneNumber, isReachable, features? }: the number checked, whether the device supports RCS, and the RCS features the device reported when reachable.

POST /developer/orgs/:orgId/rcs-agents/:agentId/bulk-capability-check

Estimates RCS reachability across a list of numbers. Scope telephony:write. The RCS agent must be live, which is checked first; the list must then hold between 500 and 10,000 numbers with no duplicates.
string[]
required
Numbers in E.164.
Response 201 with { reachableUsers, totalRandomSampleUserCount, reachableRandomSampleUserCount, estimatedReachabilityPercent }: the numbers found reachable, the size of the sample the carrier checked, the reachable numbers within it, and their ratio as a percentage rounded to two decimals (0 when the sample is empty).

Errors

Example

Check whether a customer’s phone can receive RCS before choosing a channel.

See also