Channels

Add an RCS agent

Changed on

Asks for an RCS agent and records the order form the carriers vet it against. Always 202: an agent is approved by the carriers, not by this call, and nothing here can make that happen sooner.

What it asks for

The RCS Agent Order Form — the same one our team fills in on your behalf today, so nothing has to be collected from you twice. All fields are required and must be submitted together so the carrier review has everything it needs. The only exception is opt_in_screenshot_url.

Agent identity: display_name, description, agent_use_case (must be one of the accepted use cases; the error names the set), brand_color (six-digit hex, #RRGGBB).

Brand identity: brand_name — the brand this agent presents. Not taken from compliance.brand: a business may present a different brand on RCS than the one its 10DLC registration is filed against, and the carriers vet this one. privacy_policy_url, terms_and_conditions_url, website_url, logo_url, and banner_url must be absolute http(s) URLs that the carriers can fetch without authentication. The form specifies 224×224 px and 50 KB for the logo and 1440×448 px and 200 KB for the banner; these cannot be checked without the image bytes.

Contact details: brand_phone_number, customer_support_phone_number, brand_email, customer_support_email, contact_name_and_title.

Company: company_ein, entity_type, official_address (street, city, state, postal_code, country), brief_company_description.

Consent and messages: opt_in_process_description, start_message, help_message, stop_message, sample_messages (at least one example message).

Optional: opt_in_screenshot_url (validated as an http(s) URL if supplied).

Anything supplied is checked against accepted values rather than passed through: a value the provider rejects would otherwise surface days later, to somebody who cannot fix it without asking you.

A customer has one agent. Asking again while you have one is 409.

What comes back, and what does not

Returns the agent — the form as stored, plus id and status. Not your other channels, which this call cannot have changed.

status is PROVISIONING until the agent is handed to the carriers and approved. GET /v3/channels reports rcs: null until then — a channel row is what routing reads to decide you are sendable, and writing one for an unapproved agent would claim a channel that cannot carry traffic.

Send x-profile-id with an organization key to ask for one of your profiles' agents.

post/v3/channels/rcs

Request

  • Base URL
    https://api.sent.dm
  • URL
    https://api.sent.dm/v3/channels/rcs
  • Auth
    • API key in header x-api-key
    • or HTTP bearer

Headers

Idempotency-Keystring

Unique key to ensure idempotent request processing. Must be 1-255 alphanumeric characters, hyphens, or underscores. Responses are cached for 24 hours per key per customer.

x-profile-idstring uuid

Profile UUID to scope the request to a child profile. Only organization API keys can use this header. The profile must belong to the calling organization.

Request body

sandboxboolean

Sandbox flag - when true, the operation is simulated without side effects Useful for testing integrations without actual execution

display_namestring required

The name the agent shows in the messaging client.

descriptionstring required

What the agent is for, shown to recipients. Capped by the carriers, not by us.

agent_use_case'VERIFICATION' | 'NOTIFICATIONS' | 'MARKETING' | 'MULTI_USE' required

Which kind of traffic the agent carries. One of the accepted use cases; the error names the set.

brand_namestring required

The brand this agent presents over RCS.

Not taken from your compliance.brand: a business may present a different brand on RCS than the one its 10DLC registration is filed against, and the carriers vet this one.

privacy_policy_urlstring uri required

Required by US carriers. Must be an absolute http(s) URL they can fetch.

terms_and_conditions_urlstring uri required
website_urlstring uri required

The brand's own site.

brand_colorstring required

Primary brand colour, as #RRGGBB. Three-digit shorthand is refused: the value is submitted verbatim, so two spellings of one colour is only a way for the stored value to disagree with the form.

logo_urlstring uri required

Publicly reachable logo. It has to be fetchable without authentication at review time, so a URL behind a login passes this call and fails the review.

banner_urlstring uri required
brand_phone_numberstring required

The brand's own number. Also becomes the agent's canonical sending number for routing, which is why it is normalised to E.164 rather than stored as sent.

customer_support_phone_numberstring required
brand_emailstring email required
customer_support_emailstring email required
contact_name_and_titlestring required
company_einstring required
entity_typestring required
brief_company_descriptionstring required
opt_in_process_descriptionstring required

How recipients opt in, in prose. The carriers read this one.

opt_in_screenshot_urlstring uri nullable

A screenshot of the opt-in, as a publicly fetchable URL.

start_messagestring required
help_messagestring required
stop_messagestring required
sample_messagesstring[] required

Examples of what the agent will send, for the review.

Example request

{
  "display_name": "Example Retail",
  "description": "Order and delivery notifications for Example Retail customers.",
  "agent_use_case": "NOTIFICATIONS",
  "brand_name": "Example Retail",
  "privacy_policy_url": "https://example.com/privacy",
  "terms_and_conditions_url": "https://example.com/terms",
  "website_url": "https://example.com",
  "brand_color": "#1a73e8",
  "logo_url": "https://example.com/assets/logo-224x224.png",
  "banner_url": "https://example.com/assets/banner-1440x448.png",
  "brand_phone_number": "+12125550100",
  "customer_support_phone_number": "+18005550100",
  "brand_email": "hello@example.com",
  "customer_support_email": "support@example.com",
  "contact_name_and_title": "Jane Smith, Head of Marketing",
  "company_ein": "12-3456789",
  "entity_type": "PRIVATE_PROFIT",
  "official_address": {
    "street": "123 Main St",
    "city": "New York",
    "state": "NY",
    "postal_code": "10001",
    "country": "US"
  },
  "brief_company_description": "Example Retail sells home goods across the US and ships to 48 states.",
  "opt_in_process_description": "Customers opt in at checkout by checking the SMS/RCS notifications box.",
  "start_message": "Welcome to Example Retail! Reply HELP for help or STOP to opt out.",
  "help_message": "For help, visit https://example.com/support or call 1-800-555-0100.",
  "stop_message": "You have been unsubscribed from Example Retail notifications.",
  "sample_messages": [
    "Your order #12345 has shipped and will arrive tomorrow."
  ],
  "sandbox": false
}

Response

The agent is recorded with status PROVISIONING, awaiting carrier approval

successboolean

Indicates whether the request was successful

Example response

{
  "data": {
    "status": "PROVISIONING"
  }
}

Changes