RCSv4

Submit an RCS sender

POST/rcs/senders/{channelId}/submit

Send a draft sender to Google for verification. The brand must be verified. Submitting starts the sender's monthly fee, which includes its yearly verification; if the registry refuses the sender, its month is credited back and it stays a draft. Once submitted, add test devices and request the carrier launch; registration.rcs_sender.updated fires as its status, section_statuses, or carrier_approvals change. A retry after a lost response finds the same submission. OAuth apps need numbers:manage.

Path parameters

channelIdRequiredstring

The RCS sender's channel id (ch_...).

Headers

AuthorizationRequiredstring

Your API key, sent as a bearer token: Authorization: Bearer <api_key>. Editing this stays in sync with the API key box on the right.

Bearer

Returns

dataoptionalRcsSender
channel_idRequiredstring

The sender's rcs_business channel. Send from it, or from its alias.

aliasRequiredstring | null
statusRequiredstring

From verified, the sender reaches its accepted test devices and its channel is active; once live, it reaches anyone whose phone gets RCS. launching and launched are the carriers' review. A rejected or failed sender can't be resubmitted; contact support.

"draft""submitting""submitted""verifying""verified""launching""launched""live""rejected""failed"
use_caseRequiredstring

What the sender mostly sends. Carriers review its launch against it.

"TRANSACTIONAL""PROMOTIONAL""OTP""MULTI_USE"
profileRequiredRcsSenderProfile

What people see on the sender in Google Messages. Creating a sender needs every field but the contacts, and at least one of phone, email, and website.

display_nameoptionalstring
descriptionoptionalstring
logo_urloptionalstring

A logo from POST /rcs/assets.

banner_urloptionalstring

A banner from POST /rcs/assets.

brand_coloroptionalstring

Hex color for the sender's buttons and accents.

privacy_policy_urloptionalstring
terms_urloptionalstring
phoneoptionalobject | null
numberRequiredstring

E.164.

labelRequiredstring
emailoptionalobject | null
addressRequiredstring
labelRequiredstring
websiteoptionalobject | null
urlRequiredstring
labelRequiredstring
launchRequiredRcsLaunchDetails | null

The launch request, once sent.

RcsLaunchDetails
company_overviewRequiredstring

What the business does.

agent_overviewRequiredstring

What the sender is for.

interactionsRequiredstring[]
message_examplesRequiredstring[]

Messages as recipients will see them.

opt_in_methodsRequiredstring[]
call_to_actionRequiredstring

The words people see where they opt in.

call_to_action_urloptionalstring

Required with WEBSITE: where the call to action is.

call_to_action_media_urloptionalstring

Required with WEBSITE or MOBILE_APP: an opt_in_media screenshot from POST /rcs/assets.

double_opt_inRequiredboolean
double_opt_in_messageoptionalstring

Required when double_opt_in is true: the message that asks people to confirm.

opt_in_messageRequiredstring

The first message people get after opting in.

help_responseRequiredstring

The reply to HELP.

opt_out_responseRequiredstring

The reply to STOP.

test_video_urlRequiredstring

A test_video from POST /rcs/assets, showing the sender in use.

test_notesoptionalstring

Anything reviewers need to try the sender.

null
section_statusesRequiredobject | null

Where each part of the review stands: basics (Google's verification), campaign (the carriers' launch review), and testing.

basicsoptionalstring | null
campaignoptionalstring | null
testingoptionalstring | null
test_devicesRequiredRcsTestDevice[]

Array of RcsTestDevice

test_device_idRequiredstring
phone_numberRequiredstring
statusRequiredstring

The invite's state, e.g. pending until the tester accepts it and accepted after. The sender reaches the phone only once it's accepted.

carrier_approvalsRequiredRcsCarrierApproval[]

Array of RcsCarrierApproval

carrierRequiredstring
scopeoptionalstring | null

What the approval covers, as the carrier states it.

statusRequiredstring

The carrier's answer, e.g. pending, approved, or rejected.

submitted_atoptionalstring | null
approved_atoptionalstring | null
rejected_reasonoptionalstring | null
created_atRequiredinteger

Epoch ms.

updated_atRequiredinteger

Epoch ms.

Response codes

200The submitted sender
400`invalid_channel_id`.
401Your API key is missing or invalid. Pass it as a bearer token.
402Blooio SMS, Voice & RCS couldn't charge the organization, and nothing was submitted or ordered. `code` is `no_payment_method` (no saved card), `payment_failed` (the card was declined), or `invoice_unpaid` (pay the organization's unpaid invoice first).
404`rcs_sender_not_found`.
409`rcs_brand_not_found`, `rcs_brand_not_verified` (carries `brand_status`), `rcs_sender_submission_in_progress`, or `rcs_sender_state_conflict` (already submitted).
422`rcs_sender_rejected`: the registry refused the sender, with the rejected `fields` when it named them.
502`upstream_unavailable`: the RCS network couldn't be reached. Retry with backoff.

Sends a live request with your values and shows the real response below. Your key is stored only in this browser.

Request
curl -X POST https://api.blooio.com/v4/rcs/senders/ch_a1b2c3d4/submit \
Response objectexample
{  "data": {    "channel_id": "ch_a1b2c3d4",    "alias": "string",    "status": "draft",    "use_case": "TRANSACTIONAL",    "profile": {      "display_name": "Jane Doe",      "description": "Example description",      "logo_url": "https://example.com",      "banner_url": "https://example.com",      "brand_color": "#1A73E8",      "privacy_policy_url": "https://example.com",      "terms_url": "https://example.com",      "phone": {        "number": "+15551234567",        "label": "vip"      },      "email": {        "address": "jane@example.com",        "label": "vip"      },      "website": {        "url": "https://example.com",        "label": "vip"      }    },    "launch": {      "company_overview": "string",      "agent_overview": "string",      "interactions": [        "TRANSACTIONAL_UPDATES"      ],      "message_examples": [        "string"      ],      "opt_in_methods": [        "WEBSITE"      ],      "call_to_action": "string",      "call_to_action_url": "https://example.com",      "call_to_action_media_url": "https://example.com",      "double_opt_in": false,      "double_opt_in_message": "string",      "opt_in_message": "string",      "help_response": "string",      "opt_out_response": "string",      "test_video_url": "https://example.com",      "test_notes": "string"    },    "section_statuses": {      "basics": "string",      "campaign": "string",      "testing": "string"    },    "test_devices": [      {        "test_device_id": "obj_a1b2c3d4",        "phone_number": "+15551234567",        "status": "active"      }    ],    "carrier_approvals": [      {        "carrier": "string",        "scope": "string",        "status": "active",        "submitted_at": "2025-01-15T09:30:00Z",        "approved_at": "2025-01-15T09:30:00Z",        "rejected_reason": "string"      }    ],    "deeplink": "https://example.com",    "created_at": 0,    "updated_at": 0  }}