← All action domains

RCS

10 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.

Create a rich message template

rcs.create_templatewriteadmin only

Create a rich RCS message — a card with buttons, a carousel, an image, or plain text. Creating it here does not put it on Twilio; run rcs.sync_template to do that, which is what gives it the Content SID needed to send it. The `body` field is the plain-text fallback delivered as an SMS to any handset that can't take RCS, so write it to stand on its own.

Parameters

FieldTypeRequiredDescription
namestringrequiredA name for this template, unique within the organization.
kind"text" | "media" | "card" | "carousel"optionaltext, media, card, or carousel. Default: "card"
definitionobjectrequiredThe message itself.
definition.bodystringrequiredThe plain-text version. REQUIRED: this is exactly what a handset without RCS receives as an SMS, so it has to stand on its own.
definition.mediaUrlstring (uri)optionalA publicly reachable image or video URL.
definition.actionsobject[]optionalUp to four buttons.
definition.actions[].kind"url" | "reply" | "phone"requiredWhat the button does: open a link, send a suggested reply back to you, or dial a number.
definition.actions[].titlestringrequiredThe button's label. RCS truncates past about 25 characters.
definition.actions[].valuestringrequiredThe URL for 'url', the reply text for 'reply', the E.164 number for 'phone'.
definition.cardsobject[]optionalCarousel cards, two to ten. Only used when kind is 'carousel'.
definition.cards[].titlestringoptionalThe card's heading.
definition.cards[].bodystringrequiredThe card's text.
definition.cards[].mediaUrlstring (uri)optionalA publicly reachable image or video URL.
definition.cards[].actionsobject[]optionalUp to four buttons on this card.
definition.cards[].actions[].kind"url" | "reply" | "phone"requiredWhat the button does: open a link, send a suggested reply back to you, or dial a number.
definition.cards[].actions[].titlestringrequiredThe button's label. RCS truncates past about 25 characters.
definition.cards[].actions[].valuestringrequiredThe URL for 'url', the reply text for 'reply', the E.164 number for 'phone'.
variablesstring[]optionalMerge field names, in order. Twilio numbers them positionally, so order is meaningful. Default: []

Example

curl -X POST https://app.chirply.io/api/v1/actions/rcs.create_template \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Example",
    "definition": {
      "body": "example"
    }
  }'
Test with your API key

Over MCP the same operation is the tool rcs_create_template at https://app.chirply.io/api/mcp, same bearer token, same input.

Remove an RCS sender

rcs.delete_senderwriteconfirmadmin only

Remove a registered RCS sender from Chirply. Messages on that Messaging Service immediately go back to plain SMS. This does NOT delete anything on Twilio — the sender and its carrier approvals stay on the organization's Twilio account, and re-registering it here restores RCS routing without any new review.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe sender to remove.

Example

curl -X POST https://app.chirply.io/api/v1/actions/rcs.delete_sender \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool rcs_delete_sender at https://app.chirply.io/api/mcp, same bearer token, same input.

Delete a rich message template

rcs.delete_templatewriteconfirmadmin only

Delete a rich RCS template from Chirply and, if it was synced, remove the matching Content Template from the organization's Twilio account. Messages already sent from it are unaffected. This cannot be undone.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe template to delete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/rcs.delete_template \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool rcs_delete_template at https://app.chirply.io/api/mcp, same bearer token, same input.

List RCS senders

rcs.list_sendersread

List the RCS senders (branded agents) registered for this organization, with the review status of each and which carriers have approved it. Read-only and free. An empty list is the normal state until someone registers a sender on the organization's own Twilio account.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/rcs.list_senders \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool rcs_list_senders at https://app.chirply.io/api/mcp, same bearer token, same input.

List rich message templates

rcs.list_templatesreadadmin only

List the organization's rich RCS message templates — cards, carousels, media and text — with each one's sync state and its Twilio Content SID once synced. Read-only and free.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalHow many to return. Default: 50
offsetintegeroptionalHow many to skip, for paging. Default: 0

Example

curl -X POST https://app.chirply.io/api/v1/actions/rcs.list_templates \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 50,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool rcs_list_templates at https://app.chirply.io/api/mcp, same bearer token, same input.

Register an RCS sender

rcs.register_senderwriteadmin only

Record an RCS sender that already exists on the organization's own Twilio account, so Chirply routes that Messaging Service's traffic over RCS once it is approved. THIS DOES NOT CREATE THE SENDER — Twilio only onboards RCS senders through its Console, after which Google and each US carrier verify the brand separately, which Twilio says takes four to six weeks. Register it here as 'submitted', then set the status to 'approved' when Twilio's console shows a carrier has approved it. Nothing routes over RCS until the status is 'approved'.

Parameters

FieldTypeRequiredDescription
messaging_service_sidstringrequiredThe Twilio Messaging Service (MG…) the sender is attached to. This is the join key: numbers in this service can send RCS.
display_namestringrequiredThe brand name recipients see in their messaging app.
sender_idstringoptionalThe RCS sender/agent id, if you have it. Outbound messages delivered over RCS report `rcs:<sender_id>` as the sender.
descriptionstringoptionalWhat this sender is for, as shown on the branded profile.
logo_urlstring (uri)optionalLogo image URL (Twilio wants 224×224, under 50KB).
banner_urlstring (uri)optionalBanner image URL (1140×448; Android only).
accent_colorstringoptionalBrand accent color as a hex value. Twilio requires 4.5:1 contrast.
status"draft" | "submitted" | "in_review" | "approved" | "rejected" | "disabled"optionalWhere registration stands. Only 'approved' routes real traffic. Default: "submitted"
notesstringoptionalAnything worth remembering about this registration.

Example

curl -X POST https://app.chirply.io/api/v1/actions/rcs.register_sender \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "messaging_service_sid": "example",
    "display_name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool rcs_register_sender at https://app.chirply.io/api/mcp, same bearer token, same input.

Send a rich message

rcs.send_templatewriteconfirm

Send a synced rich template into an existing conversation. THIS SENDS A REAL MESSAGE TO A REAL PERSON, billed to the organization's own Twilio account. It goes out over RCS — branded, with the card or carousel rendered — only when the sending number's Messaging Service has an approved RCS sender AND the recipient's handset supports RCS; otherwise Twilio automatically falls back to SMS carrying the template's plain-text body, which the recipient receives instead. The thread records which of the two actually happened.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
conversation_idstring (uuid)requiredThe conversation to send into. Must be an SMS thread.
template_idstring (uuid)requiredA template that has been synced to Twilio.
variablesmap of string → stringoptionalValues for the template's merge fields, keyed by name. Default: {}

Example

curl -X POST https://app.chirply.io/api/v1/actions/rcs.send_template \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "conversation_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "template_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool rcs_send_template at https://app.chirply.io/api/mcp, same bearer token, same input.

Push a template to Twilio

rcs.sync_templatewriteconfirmadmin only

Push a rich template to the organization's own Twilio account as a Content Template and store the resulting Content SID, which is what lets it be sent. Twilio's Content Templates are immutable, so syncing an edited template creates a new one on Twilio and the old one is left behind unreferenced. Uses the organization's own Twilio credentials.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe template to push.

Example

curl -X POST https://app.chirply.io/api/v1/actions/rcs.sync_template \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool rcs_sync_template at https://app.chirply.io/api/mcp, same bearer token, same input.

Update an RCS sender

rcs.update_senderwriteadmin only

Update a registered RCS sender — most often to move its status along as Twilio's console reports carrier approvals, or to record per-carrier verdicts. Setting status to 'approved' is what makes Chirply start routing that Messaging Service's messages over RCS; setting it to anything else stops that immediately and sends fall back to plain SMS.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe sender to update.
display_namestringoptionalThe brand name recipients see in their messaging app.
sender_idstring (or null)optionalThe RCS sender/agent id, if you have it. Outbound messages delivered over RCS report `rcs:<sender_id>` as the sender.
descriptionstring (or null)optionalWhat this sender is for, as shown on the branded profile.
logo_urlstring (uri) (or null)optionalLogo image URL (Twilio wants 224×224, under 50KB).
banner_urlstring (uri) (or null)optionalBanner image URL (1140×448; Android only).
accent_colorstring (or null)optionalBrand accent color as a hex value. Twilio requires 4.5:1 contrast.
status"draft" | "submitted" | "in_review" | "approved" | "rejected" | "disabled"optionalWhere registration stands. Only 'approved' routes real traffic.
carriersmap of string → stringoptionalPer-carrier verdicts, e.g. {"att":"approved","tmobile":"pending"}.
notesstring (or null)optionalAnything worth remembering about this registration.

Example

curl -X POST https://app.chirply.io/api/v1/actions/rcs.update_sender \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool rcs_update_sender at https://app.chirply.io/api/mcp, same bearer token, same input.

Edit a rich message template

rcs.update_templatewriteadmin only

Edit a rich RCS template. Any change puts it back into 'draft' — Twilio's Content Templates are immutable, so an edited template has to be pushed again before the new version can be sent. Messages already sent are unaffected.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe template to edit.
namestringoptionalA name for this template, unique within the organization.
kind"text" | "media" | "card" | "carousel"optionaltext, media, card, or carousel.
definitionobjectoptionalThe message itself.
definition.bodystringrequiredThe plain-text version. REQUIRED: this is exactly what a handset without RCS receives as an SMS, so it has to stand on its own.
definition.mediaUrlstring (uri)optionalA publicly reachable image or video URL.
definition.actionsobject[]optionalUp to four buttons.
definition.actions[].kind"url" | "reply" | "phone"requiredWhat the button does: open a link, send a suggested reply back to you, or dial a number.
definition.actions[].titlestringrequiredThe button's label. RCS truncates past about 25 characters.
definition.actions[].valuestringrequiredThe URL for 'url', the reply text for 'reply', the E.164 number for 'phone'.
definition.cardsobject[]optionalCarousel cards, two to ten. Only used when kind is 'carousel'.
definition.cards[].titlestringoptionalThe card's heading.
definition.cards[].bodystringrequiredThe card's text.
definition.cards[].mediaUrlstring (uri)optionalA publicly reachable image or video URL.
definition.cards[].actionsobject[]optionalUp to four buttons on this card.
definition.cards[].actions[].kind"url" | "reply" | "phone"requiredWhat the button does: open a link, send a suggested reply back to you, or dial a number.
definition.cards[].actions[].titlestringrequiredThe button's label. RCS truncates past about 25 characters.
definition.cards[].actions[].valuestringrequiredThe URL for 'url', the reply text for 'reply', the E.164 number for 'phone'.
variablesstring[]optionalMerge field names, in order. Twilio numbers them positionally, so order is meaningful.

Example

curl -X POST https://app.chirply.io/api/v1/actions/rcs.update_template \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool rcs_update_template at https://app.chirply.io/api/mcp, same bearer token, same input.

The machine-readable version of this page is GET https://app.chirply.io/api/v1/actions?domain=rcs — same operations, with full JSON Schemas. Authentication, errors and rate limits are covered in the API documentation home.