Send an RCS message
Accept an RCS/MMS message batch with HTTP 200 and per-recipient results; Bearer or CheckSum authentication.
Request examples
Pick the auth method first, then the message type; replace <YOUR_API_KEY> with your real API KEY — the JSON request body is what sits inside the single quotes of -d.
Recommended: a single Authorization: Bearer <YOUR_API_KEY> header, no signature needed.
A TEXT message with one REPLY suggestion button.
curl -X POST "https://rcsapi.tig253.com/inter-rcs/v3/rcs/message/send" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json; charset=UTF-8" \
-d '{
"productKey": "rcs_otp",
"channel": "RCS",
"sender": "BrandName",
"uid": "demo_batch_20260814_001",
"destinations": [
{ "to": "8613482734980" }
],
"message": {
"type": "TEXT",
"textMsg": {
"text": "您的验证码是 8829,5 分钟内有效",
"suggestions": [
{ "type": "REPLY", "text": "重新发送", "postbackData": "resend_otp" }
]
}
}
}'Suggestions fields (switch by type)
The button object's shape is decided by type: every type requires type, text (button text, 1-25 chars) and postbackData (echoed back on click, 1-2048 chars); switch the tabs below to see each type's own fields.
Quick reply: the click only echoes back postbackData; no extra fields.
Full example:
{
"type": "REPLY",
"text": "Confirm",
"postbackData": "btn_reply_confirm"
}Send an RCS message
curl -X POST "https://rcsapi.tig253.com/inter-rcs/v3/rcs/message/send" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"uid": "demo_batch_20260814_008",
"channel": "RCS",
"message": {
"mms": {
"media": {
"file": {
"url": "https://example.com/img/midautumn.jpg"
}
},
"title": "中秋礼遇",
"description": "全场礼盒 8 折,限时 3 天"
},
"type": "MMS"
},
"productKey": "mms_market",
"destinations": [
{
"to": "<PHONE>"
}
],
"sender": "YOUR_SENDER"
}'Batch accepted. code=000000; per-recipient results in data.messages[].status. Acceptance is not delivery.
{
"code": "000000",
"data": {
"uid": "demo_batch_20260814_010",
"messages": [
{
"mobile": "8613482734980",
"status": "000000",
"messageId": "msg-2c4f8e1a-a1b2c3d4e5f60718293a4b5c",
"description": "Submitted success"
},
{
"mobile": "12345",
"status": "010003",
"messageId": null,
"description": "Wrong format of phone number"
}
]
},
"message": "success",
"traceId": "d87a93e50af0437ebcc0c80774126842",
"timestamp": "2026-11-11T03:00:01.000Z"
}Documented response example from the spec, not a real request result.
Submits an RCS or MMS message. Successful acceptance returns HTTP 200 with code=000000, which means accepted, not finally delivered. Supports Bearer or CheckSum authentication; see the RCS error codes page for acceptance codes.
Use the InnoPaaS AppKey as a Bearer token. Create or manage keys in Console. API key guide
Authorization
Authorizationstring<bearer>requiredHeader Parameters
X-Custom-TraceIdstringoptionalOptional customer trace ID, recommended globally unique; forwarded to webhook payloads (customTraceId) and NOT echoed in the send response.
256Body
application/jsonuidstringoptionalCustomer batch number, up to 64 characters (010003 when exceeded). Backfilled with batchId when omitted; forwarded to webhook payloads and echoed in data.uid.
64senderstringrequiredSender ID. Required for TEXT/FILE/CARD/CAROUSEL (blank returns 010002); optional for TEMPLATE/MMS (template messages fall back to the template-configured sender).
channelstringrequiredChannel, pass RCS (forwarded for logging only in this phase, not used for routing).
messageobjectrequiredMessage content; the body field required is determined by type.
Show child attributes
mmsobjectoptionalMMS message body, required when type=MMS, used with mms_notify / mms_market products.
Show child attributes
typestringoptionalContent type, fixed MMS; optional.
mediaobjectrequiredMedia object: main file, optional video thumbnail, optional height.
Show child attributes
fileobjectrequiredFile resource.
Show child attributes
urlstringrequiredFile URL starting with http/https, 1-1000 characters, file up to 100 MB.
1Max length1000heightstringoptionalMedia height: SHORT / MEDIUM / TALL.
thumbnailobjectoptionalVideo thumbnail, valid for video files only.
Show child attributes
urlstringrequiredThumbnail URL, recommended under 1 MB.
titlestringrequiredMMS title.
descriptionstringoptionalMMS text description.
fileobjectoptionalFile message body, required when type=FILE.
Show child attributes
fileobjectrequiredFile resource.
Show child attributes
urlstringrequiredFile URL starting with http/https, 1-1000 characters, file up to 100 MB.
1Max length1000typestringoptionalContent type, fixed FILE; optional.
thumbnailobjectoptionalVideo thumbnail, valid for video files only.
Show child attributes
urlstringrequiredThumbnail URL, recommended under 1 MB.
suggestionsarray<object>optionalSuggestion buttons, up to 11. Each button is a polymorphic object discriminated by type; common fields type/text/postbackData are always required plus the type-specific fields.
Show child attributes
urlstringoptionalOPEN_URL: target URL, must start with http:// or https://, 1-2048 characters. Required.
1Max length2048textstringoptionalButton text visible to the user, 1-25 characters.
1Max length25typestringoptionalSuggestion type.
labelstringoptionalSHOW_LOCATION: optional place label.
100titlestringoptionalCREATE_CALENDAR_EVENT: event title, 1-100 characters. Required.
100endTimestringoptionalCREATE_CALENDAR_EVENT: event end time, same format, must be after startTime. Required.
latitudenumberoptionalSHOW_LOCATION: latitude, -90 to 90. Required.
longitudenumberoptionalSHOW_LOCATION: longitude, -180 to 180. Required.
startTimestringoptionalCREATE_CALENDAR_EVENT: event start time, yyyy-MM-dd'T'HH:mm:ss.SSSZ. Required.
applicationstringoptionalOPEN_URL: BROWSER (default) or WEBVIEW; optional, passed through without validation.
descriptionstringoptionalCREATE_CALENDAR_EVENT: optional event description, up to 500 characters.
500fallbackUrlstringoptionalREQUEST_LOCATION / CREATE_CALENDAR_EVENT: optional fallback URL, not validated.
phoneNumberstringoptionalDIAL_PHONE: phone number to dial, must include country code and pass format validation. Required.
postbackDatastringoptionalOpaque data echoed back on click, 1-2048 characters.
1Max length2048webviewViewModestringoptionalOPEN_URL with WEBVIEW: FULL / HALF / TALL; optional, passed through without validation.
typestringrequiredMessage type.
cardMsgobjectoptionalSingle card message body, required when type=CARD.
Show child attributes
typestringoptionalContent type, fixed CARD; optional.
contentobjectrequiredCard content: at least one of title and media is required. Inner suggestions up to 4.
Show child attributes
mediaobjectoptionalMedia object: main file, optional video thumbnail, optional height.
Show child attributes
fileobjectrequiredFile resource.
Show child attributes
urlstringrequiredFile URL starting with http/https, 1-1000 characters, file up to 100 MB.
1Max length1000heightstringoptionalMedia height: SHORT / MEDIUM / TALL.
thumbnailobjectoptionalVideo thumbnail, valid for video files only.
Show child attributes
urlstringrequiredThumbnail URL, recommended under 1 MB.
titlestringoptionalCard title, 1-200 characters.
1Max length200descriptionstringoptionalCard description, 1-2000 characters.
1Max length2000suggestionsarray<object>optionalSuggestion buttons, up to 4. Each button is a polymorphic object discriminated by type; common fields type/text/postbackData are always required plus the type-specific fields.
Show child attributes
urlstringoptionalOPEN_URL: target URL, must start with http:// or https://, 1-2048 characters. Required.
1Max length2048textstringoptionalButton text visible to the user, 1-25 characters.
1Max length25typestringoptionalSuggestion type.
labelstringoptionalSHOW_LOCATION: optional place label.
100titlestringoptionalCREATE_CALENDAR_EVENT: event title, 1-100 characters. Required.
100endTimestringoptionalCREATE_CALENDAR_EVENT: event end time, same format, must be after startTime. Required.
latitudenumberoptionalSHOW_LOCATION: latitude, -90 to 90. Required.
longitudenumberoptionalSHOW_LOCATION: longitude, -180 to 180. Required.
startTimestringoptionalCREATE_CALENDAR_EVENT: event start time, yyyy-MM-dd'T'HH:mm:ss.SSSZ. Required.
applicationstringoptionalOPEN_URL: BROWSER (default) or WEBVIEW; optional, passed through without validation.
descriptionstringoptionalCREATE_CALENDAR_EVENT: optional event description, up to 500 characters.
500fallbackUrlstringoptionalREQUEST_LOCATION / CREATE_CALENDAR_EVENT: optional fallback URL, not validated.
phoneNumberstringoptionalDIAL_PHONE: phone number to dial, must include country code and pass format validation. Required.
postbackDatastringoptionalOpaque data echoed back on click, 1-2048 characters.
1Max length2048webviewViewModestringoptionalOPEN_URL with WEBVIEW: FULL / HALF / TALL; optional, passed through without validation.
alignmentstringrequiredMedia alignment LEFT/RIGHT; always required by validation (also with VERTICAL).
orientationstringrequiredCard orientation: HORIZONTAL (media left/right) or VERTICAL (media top/bottom).
suggestionsarray<object>optionalSuggestion buttons, up to 11. Each button is a polymorphic object discriminated by type; common fields type/text/postbackData are always required plus the type-specific fields.
Show child attributes
urlstringoptionalOPEN_URL: target URL, must start with http:// or https://, 1-2048 characters. Required.
1Max length2048textstringoptionalButton text visible to the user, 1-25 characters.
1Max length25typestringoptionalSuggestion type.
labelstringoptionalSHOW_LOCATION: optional place label.
100titlestringoptionalCREATE_CALENDAR_EVENT: event title, 1-100 characters. Required.
100endTimestringoptionalCREATE_CALENDAR_EVENT: event end time, same format, must be after startTime. Required.
latitudenumberoptionalSHOW_LOCATION: latitude, -90 to 90. Required.
longitudenumberoptionalSHOW_LOCATION: longitude, -180 to 180. Required.
startTimestringoptionalCREATE_CALENDAR_EVENT: event start time, yyyy-MM-dd'T'HH:mm:ss.SSSZ. Required.
applicationstringoptionalOPEN_URL: BROWSER (default) or WEBVIEW; optional, passed through without validation.
descriptionstringoptionalCREATE_CALENDAR_EVENT: optional event description, up to 500 characters.
500fallbackUrlstringoptionalREQUEST_LOCATION / CREATE_CALENDAR_EVENT: optional fallback URL, not validated.
phoneNumberstringoptionalDIAL_PHONE: phone number to dial, must include country code and pass format validation. Required.
postbackDatastringoptionalOpaque data echoed back on click, 1-2048 characters.
1Max length2048webviewViewModestringoptionalOPEN_URL with WEBVIEW: FULL / HALF / TALL; optional, passed through without validation.
textMsgobjectoptionalText message body, required when type=TEXT.
Show child attributes
textstringrequiredPlain text body, 0-3072 characters.
3072typestringoptionalContent type, fixed TEXT; optional.
suggestionsarray<object>optionalSuggestion buttons, up to 11. Each button is a polymorphic object discriminated by type; common fields type/text/postbackData are always required plus the type-specific fields.
Show child attributes
urlstringoptionalOPEN_URL: target URL, must start with http:// or https://, 1-2048 characters. Required.
1Max length2048textstringoptionalButton text visible to the user, 1-25 characters.
1Max length25typestringoptionalSuggestion type.
labelstringoptionalSHOW_LOCATION: optional place label.
100titlestringoptionalCREATE_CALENDAR_EVENT: event title, 1-100 characters. Required.
100endTimestringoptionalCREATE_CALENDAR_EVENT: event end time, same format, must be after startTime. Required.
latitudenumberoptionalSHOW_LOCATION: latitude, -90 to 90. Required.
longitudenumberoptionalSHOW_LOCATION: longitude, -180 to 180. Required.
startTimestringoptionalCREATE_CALENDAR_EVENT: event start time, yyyy-MM-dd'T'HH:mm:ss.SSSZ. Required.
applicationstringoptionalOPEN_URL: BROWSER (default) or WEBVIEW; optional, passed through without validation.
descriptionstringoptionalCREATE_CALENDAR_EVENT: optional event description, up to 500 characters.
500fallbackUrlstringoptionalREQUEST_LOCATION / CREATE_CALENDAR_EVENT: optional fallback URL, not validated.
phoneNumberstringoptionalDIAL_PHONE: phone number to dial, must include country code and pass format validation. Required.
postbackDatastringoptionalOpaque data echoed back on click, 1-2048 characters.
1Max length2048webviewViewModestringoptionalOPEN_URL with WEBVIEW: FULL / HALF / TALL; optional, passed through without validation.
templateobjectoptionalTemplate message body, required when type=TEMPLATE. The actual content type follows the template configuration (RCS or MMS).
Show child attributes
typestringoptionalContent type, fixed TEMPLATE; optional.
parametersarray<object>optionalTemplate parameters; required for variable templates, missing variables return 150002.
Show child attributes
namestringrequiredParameter name matching the {{name}} placeholder in the template.
valuestringrequiredParameter value.
templateIdstringrequiredTemplate ID created and approved in the console; unknown returns 010005, not approved returns 150008.
carouselMsgobjectoptionalCarousel message body, required when type=CAROUSEL.
Show child attributes
typestringoptionalContent type, fixed CAROUSEL; optional.
contentsarray<object>requiredChild cards, 2-10, each a CardContent.
Show child attributes
mediaobjectoptionalMedia object: main file, optional video thumbnail, optional height.
Show child attributes
fileobjectrequiredFile resource.
Show child attributes
urlstringrequiredFile URL starting with http/https, 1-1000 characters, file up to 100 MB.
1Max length1000heightstringoptionalMedia height: SHORT / MEDIUM / TALL.
thumbnailobjectoptionalVideo thumbnail, valid for video files only.
Show child attributes
urlstringrequiredThumbnail URL, recommended under 1 MB.
titlestringoptionalCard title, 1-200 characters.
1Max length200descriptionstringoptionalCard description, 1-2000 characters.
1Max length2000suggestionsarray<object>optionalSuggestion buttons, up to 4. Each button is a polymorphic object discriminated by type; common fields type/text/postbackData are always required plus the type-specific fields.
Show child attributes
urlstringoptionalOPEN_URL: target URL, must start with http:// or https://, 1-2048 characters. Required.
1Max length2048textstringoptionalButton text visible to the user, 1-25 characters.
1Max length25typestringoptionalSuggestion type.
labelstringoptionalSHOW_LOCATION: optional place label.
100titlestringoptionalCREATE_CALENDAR_EVENT: event title, 1-100 characters. Required.
100endTimestringoptionalCREATE_CALENDAR_EVENT: event end time, same format, must be after startTime. Required.
latitudenumberoptionalSHOW_LOCATION: latitude, -90 to 90. Required.
longitudenumberoptionalSHOW_LOCATION: longitude, -180 to 180. Required.
startTimestringoptionalCREATE_CALENDAR_EVENT: event start time, yyyy-MM-dd'T'HH:mm:ss.SSSZ. Required.
applicationstringoptionalOPEN_URL: BROWSER (default) or WEBVIEW; optional, passed through without validation.
descriptionstringoptionalCREATE_CALENDAR_EVENT: optional event description, up to 500 characters.
500fallbackUrlstringoptionalREQUEST_LOCATION / CREATE_CALENDAR_EVENT: optional fallback URL, not validated.
phoneNumberstringoptionalDIAL_PHONE: phone number to dial, must include country code and pass format validation. Required.
postbackDatastringoptionalOpaque data echoed back on click, 1-2048 characters.
1Max length2048webviewViewModestringoptionalOPEN_URL with WEBVIEW: FULL / HALF / TALL; optional, passed through without validation.
cardWidthstringrequiredCard width: SMALL or MEDIUM.
suggestionsarray<object>optionalSuggestion buttons, up to 11. Each button is a polymorphic object discriminated by type; common fields type/text/postbackData are always required plus the type-specific fields.
Show child attributes
urlstringoptionalOPEN_URL: target URL, must start with http:// or https://, 1-2048 characters. Required.
1Max length2048textstringoptionalButton text visible to the user, 1-25 characters.
1Max length25typestringoptionalSuggestion type.
labelstringoptionalSHOW_LOCATION: optional place label.
100titlestringoptionalCREATE_CALENDAR_EVENT: event title, 1-100 characters. Required.
100endTimestringoptionalCREATE_CALENDAR_EVENT: event end time, same format, must be after startTime. Required.
latitudenumberoptionalSHOW_LOCATION: latitude, -90 to 90. Required.
longitudenumberoptionalSHOW_LOCATION: longitude, -180 to 180. Required.
startTimestringoptionalCREATE_CALENDAR_EVENT: event start time, yyyy-MM-dd'T'HH:mm:ss.SSSZ. Required.
applicationstringoptionalOPEN_URL: BROWSER (default) or WEBVIEW; optional, passed through without validation.
descriptionstringoptionalCREATE_CALENDAR_EVENT: optional event description, up to 500 characters.
500fallbackUrlstringoptionalREQUEST_LOCATION / CREATE_CALENDAR_EVENT: optional fallback URL, not validated.
phoneNumberstringoptionalDIAL_PHONE: phone number to dial, must include country code and pass format validation. Required.
postbackDatastringoptionalOpaque data echoed back on click, 1-2048 characters.
1Max length2048webviewViewModestringoptionalOPEN_URL with WEBVIEW: FULL / HALF / TALL; optional, passed through without validation.
productKeystringrequiredProduct key: rcs_otp / rcs_notify / rcs_market / mms_notify / mms_market. For template messages the server backfills it from the template configuration and ignores the request value.
smsFailoverobjectoptionalSMS failover configuration used when RCS delivery fails.
Show child attributes
textstringrequiredFallback SMS text.
senderstringrequiredSender for the fallback SMS.
destinationsarray<object>requiredRecipients, at least 1; exceeding the per-request limit returns 010012.
Show child attributes
tostringrequiredMobile number in international format with country code, digits only, e.g. 8613482734980.
Response
application/jsonBatch accepted. code=000000; per-recipient results in data.messages[].status. Acceptance is not delivery.
codestringrequiredSix-digit code; 000000 means the batch was accepted.
dataobjectrequiredBusiness result: batch uid and per-recipient results; null when the whole request fails.
Show child attributes
uidstringrequiredBatch number: echoes the request uid, or the backfilled batchId; consistent with webhook payloads.
messagesarray<object>requiredPer-recipient acceptance results.
Show child attributes
mobilestringrequiredSubmitted mobile number.
statusstringrequiredPer-item result: 000000 accepted; any other value is the item's six-digit error code.
messageIdstringnulloptionalMessage ID returned on success for webhook correlation; null for failed items.
descriptionstringrequiredEnglish description: success note or the item's failure reason; single field, no separate enDescription.
messagestringrequiredHuman-readable English description; always success on acceptance, not for program logic.
traceIdstringrequiredPlatform-generated trace ID (32 hex characters), independent of the X-Custom-TraceId header.
timestampstringrequiredResponse generation time, UTC ISO 8601 with millisecond precision.
{
"code": "000000",
"data": {
"uid": "demo_batch_20260814_010",
"messages": [
{
"mobile": "8613482734980",
"status": "000000",
"messageId": "msg-2c4f8e1a-a1b2c3d4e5f60718293a4b5c",
"description": "Submitted success"
},
{
"mobile": "12345",
"status": "010003",
"messageId": null,
"description": "Wrong format of phone number"
}
]
},
"message": "success",
"traceId": "d87a93e50af0437ebcc0c80774126842",
"timestamp": "2026-11-11T03:00:01.000Z"
}Documented response example from the spec, not a real request result.