Skip to content

2.3 RCS 메시지

RCS(Rich Communication Services) 메시지를 발송합니다. 텍스트, 이미지, 버튼 등 다양한 형태의 풍부한 메시지를 전송할 수 있습니다.

  1. 한 번에 최대 10명의 수신자에게 발송할 수 있습니다.
  2. messagebaseId는 사전에 등록된 ID만 사용 가능합니다.
  3. 예약발송은 현재 시점으로부터 최대 30일까지 가능합니다.
  4. 광고성 메시지(header=1)의 경우 무료수신거부 번호(footer) 필수 입력이 필요합니다.
  5. 버튼은 최대 4개까지 추가 가능합니다.
  6. 단축URL 사용 시 메시지 길이가 제한될 수 있습니다.

POST /msg/v1/rcs HTTP/1.1
NameType필수설명
AuthorizationString사용자 인증 토큰
Content-TypeStringapplication/json
NameType필수설명크기
clickUrlYnString-단축URL 사용여부 (Y/N)1자
resvYnString-예약발송 여부 (Y/N)1자
resvReqDtString-예약발송 시간 (예: 2025-07-13 13:15)-
agencyObject-대행사 정보-
messagebaseIdString메시지베이스 ID100자
callbackString발신번호/양방향대화방 ID100자
headerStringHeader (0:정보성, 1:광고성)1자
footerString-무료수신거부 번호 (광고성인 경우 필수)20자
copyAllowedBoolean-복사/공유 허용여부-
expiryOptionString-expire 옵션1자
campaignIdString-캠페인 ID20자
deptCodeString-부서 코드20자
buttonsArray-버튼-
recvInfoLstArray수신자 정보 리스트10개
fbInfoLstArray-fallback 정보 리스트-

자세한 내용은 하단의 Appendix를 참고해주세요.

NameType필수설명
suggestionsArray버튼 목록
suggestions[].actionObject버튼 동작 정보
suggestions[].action.displayTextString버튼에 표시되는 텍스트
suggestions[].action.postbackObject클릭 시 서버로 전송할 데이터
suggestions[].action.urlActionObject-URL링크 버튼 정보
suggestions[].action.clipboardActionObject-복사하기 버튼 정보
suggestions[].action.dialerActionObject-전화걸기 버튼 정보
suggestions[].action.calendarActionObject-일정추가 버튼 정보
suggestions[].action.mapActionObject-지도맵 버튼 정보

NameType설명
codeString결과 코드
messageString결과 메시지
dataArray결과 데이터 목록
data[].cliKeyString클라이언트 키
data[].msgKeyString메시지 키
data[].phoneString수신번호
data[].codeString결과 코드
data[].messageString결과 메시지

RCS 상품 유형별 예시입니다.

curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"messagebaseId": "SS000000", // RCS SMS형
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "이름",
"title" : "제목",
"description": "{{name}}님 안녕하세요."
}
},
{
"cliKey": "test002",
"phone": "01056785678",
"mergeData": {
"name": "이름",
"title" : "제목",
"description": "{{name}}님 안녕하세요."
}
}
],
"buttons": [
{
"suggestions": [
{
"action": {
"displayText": "버튼1 (버튼명)",
"postback": {
"data": "set_by_chatbot_open_url"
},
"urlAction": {
"openUrl": {
"url": "https://msghub.uplus.co.kr/public/main"
}
}
}
},
{
"action": {
"clipboardAction": {
"copyToClipboard": {
"text": "복사할 내용 입력"
}
},
"displayText": "복사하기 버튼",
"postback": {
"data": "set_by_chatbot_copy_to_clipboard"
}
}
}
]
}
]
}'
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "SL000000", // RCS LMS형
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "이름",
"title": "제목",
"description": "{{name}}님 안녕하세요."
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "SMwThM00", // 세로형(medium) SMwThM00, 세로형(tall) SMwThT00, 이미지강조형 OMHIMV0001
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "이름",
"title": "제목",
"description": "{{name}}님 안녕하세요.",
"media": "maapfile://{fileId_1}"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "OMHITV0001",
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "이름",
"title": "제목",
"media": "maapfile://{fileId_1}",
"subTitle3": "",
"subTitle2": "강조",
"subTitle1": "가격",
"subDesc3": "",
"subDesc2": "{{name}}입니다. ",
"subDesc1": "5000원"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "OMTBNV0001",
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"media": "maapfile://{fileId_1}",
"title": "제목",
"description": "RCS 내용",
"변수명": "치환문자",
"subMedia1": "maapfile://{fileId_sub1}",
"subMedia2": "maapfile://{fileId_sub2}",
"subMedia3": "maapfile://{fileId_sub3}",
"subDesc3": "",
"subDesc2": "썸네일 내용2 {{변수명}}",
"subDesc1": "썸네일내용1"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "OMTBNH0001",
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"description": "RCS 내용 {{변수명}}",
"media": "maapfile://{fileId_1}",
"title": "제목",
"변수명": "치환문자",
"subMedia1": "maapfile://{fileId_sub1}",
"subMedia3": "maapfile://{fileId_sub3}",
"subMedia2": "maapfile://{fileId_sub2}"
}
}
],
"buttons": [] // 하단 Appendix에서 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "OMSNSS0001",
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "치환문자",
"description": "내용 {{name}}",
"media": "maapfile://{fileId_1}",
"title": "제목"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "CMwShS0600", // 슬라이드 갯수마다 CMwShS0200 ~ CMwShS0600
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "치환문자",
"media1": "maapfile://{fileId_1}",
"title1": "1번째 슬라이드 제목",
"description1": "1번째 슬라이드 내용 {{name}}",
"name2": "치환문자2",
"media2": "maapfile://{fileId_2}",
"title2": "2번째 슬라이드 제목",
"description2": "2번째 슬라이드 내용 {{name2}}",
"media3": "maapfile://{fileId_3}",
"title3": "3번째 슬라이드 제목",
"description3": "3번째 슬라이드 내용",
"media4": "maapfile://{fileId_4}",
"title4": "4번째 슬라이드 제목",
"description4": "4번째 슬라이드 내용",
"media5": "maapfile://{fileId_5}",
"title5": "5번째 슬라이드 제목",
"description5": "5번째 슬라이드 내용",
"media6": "maapfile://{fileId_6}",
"title6": "6번째 슬라이드 제목",
"description6": "6번째 슬라이드 내용"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "CMwMhM0600", // 슬라이드 갯수마다 CMwMhM0200 ~ CMwMhM0600
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "치환문자",
"media1": "maapfile://{fileId_1}",
"title1": "1번째 슬라이드 제목",
"description1": "1번째 슬라이드 내용 {{name}}",
"name2": "치환문자2",
"media2": "maapfile://{fileId_2}",
"title2": "2번째 슬라이드 제목",
"description2": "2번째 슬라이드 내용 {{name2}}",
"media3": "maapfile://{fileId_3}",
"title3": "3번째 슬라이드 제목",
"description3": "3번째 슬라이드 내용",
"media4": "maapfile://{fileId_4}",
"title4": "4번째 슬라이드 제목",
"description4": "4번째 슬라이드 내용",
"media5": "maapfile://{fileId_5}",
"title5": "5번째 슬라이드 제목",
"description5": "5번째 슬라이드 내용",
"media6": "maapfile://{fileId_6}",
"title6": "6번째 슬라이드 제목",
"description6": "6번째 슬라이드 내용"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
{
"code": "10000",
"message": "성공",
"data": [
{
"cliKey": "test001",
"msgKey": "3jV.....U.6fKG1w",
"phone": "01012341234",
"code": "10000",
"message": "성공"
},
...
]
}

RCS(Rich Communication Services) 메시지를 발송합니다. 텍스트, 이미지, 버튼 등 다양한 형태의 풍부한 메시지를 전송할 수 있습니다.

  1. 한 번에 최대 10명의 수신자에게 발송할 수 있습니다.
  2. messagebaseId는 사전에 등록된 ID만 사용 가능합니다.
  3. 예약발송은 현재 시점으로부터 최대 30일까지 가능합니다.
  4. 광고성 메시지(header=1)의 경우 무료수신거부 번호(footer) 필수 입력이 필요합니다.
  5. 버튼은 최대 4개까지 추가 가능합니다.
  6. 단축URL 사용 시 메시지 길이가 제한될 수 있습니다.

POST /msg/v1.1/rcs HTTP/1.1
NameType필수설명
AuthorizationString사용자 인증 토큰
Content-TypeStringapplication/json
NameType필수설명크기
clickUrlYnString-단축URL 사용여부 (Y/N)1자
resvYnString-예약발송 여부 (Y/N)1자
resvReqDtString-예약발송 시간 (예: 2025-07-13 13:15)-
agencyObject-대행사 정보-
messagebaseIdString메시지베이스 ID100자
callbackString발신번호/양방향대화방 ID100자
headerStringHeader (0:정보성, 1:광고성)1자
footerString-무료수신거부 번호 (광고성인 경우 필수)20자
copyAllowedBoolean-복사/공유 허용여부-
expiryOptionString-expire 옵션1자
campaignIdString-캠페인 ID20자
deptCodeString-부서 코드20자
buttonsArray-버튼-
recvInfoLstArray수신자 정보 리스트10개
fbInfoLstArray-fallback 정보 리스트-
brandIdString-브랜드ID (대행사의 경우 필수)-
brandKeyString-브랜드KEY (대행사의 경우 필수)-
productCodeString-상품 코드 (대행사의 경우 필수)-

자세한 내용은 하단의 Appendix를 참고해주세요.

NameType필수설명
suggestionsArray버튼 목록
suggestions[].actionObject버튼 동작 정보
suggestions[].action.displayTextString버튼에 표시되는 텍스트
suggestions[].action.postbackObject클릭 시 서버로 전송할 데이터
suggestions[].action.urlActionObject-URL링크 버튼 정보
suggestions[].action.clipboardActionObject-복사하기 버튼 정보
suggestions[].action.dialerActionObject-전화걸기 버튼 정보
suggestions[].action.calendarActionObject-일정추가 버튼 정보
suggestions[].action.mapActionObject-지도맵 버튼 정보

NameType설명
codeString결과 코드
messageString결과 메시지
dataArray결과 데이터 목록
data[].cliKeyString클라이언트 키
data[].msgKeyString메시지 키
data[].phoneString수신번호
data[].codeString결과 코드
data[].messageString결과 메시지

RCS 상품 유형별 예시입니다.

curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"brandId": "BR.R....tr",
"brandKey": "BK.Zs.....tx",
"productCode": "SMS",
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"messagebaseId": "SS000000", // RCS SMS형
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "이름",
"title" : "제목",
"description": "{{name}}님 안녕하세요."
}
},
{
"cliKey": "test002",
"phone": "01056785678",
"mergeData": {
"name": "이름",
"title" : "제목",
"description": "{{name}}님 안녕하세요."
}
}
],
"buttons": [
{
"suggestions": [
{
"action": {
"displayText": "버튼1 (버튼명)",
"postback": {
"data": "set_by_chatbot_open_url"
},
"urlAction": {
"openUrl": {
"url": "https://msghub.uplus.co.kr/public/main"
}
}
}
},
{
"action": {
"clipboardAction": {
"copyToClipboard": {
"text": "복사할 내용 입력"
}
},
"displayText": "복사하기 버튼",
"postback": {
"data": "set_by_chatbot_copy_to_clipboard"
}
}
}
]
}
]
}'
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"brandId": "BR.R....tr",
"brandKey": "BK.Zs.....tx",
"productCode": "LMS",
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "SL000000", // RCS LMS형
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "이름",
"title": "제목",
"description": "{{name}}님 안녕하세요."
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"brandId": "BR.R....tr",
"brandKey": "BK.Zs.....tx",
"productCode": "MMS",
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "SMwThM00", // 세로형(medium) SMwThM00, 세로형(tall) SMwThT00, 이미지강조형 OMHIMV0001
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "이름",
"title": "제목",
"description": "{{name}}님 안녕하세요.",
"media": "maapfile://{fileId_1}"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"brandId": "BR.R....tr",
"brandKey": "BK.Zs.....tx",
"productCode": "MMS",
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "OMHITV0001",
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "이름",
"title": "제목",
"media": "maapfile://{fileId_1}",
"subTitle3": "",
"subTitle2": "강조",
"subTitle1": "가격",
"subDesc3": "",
"subDesc2": "{{name}}입니다. ",
"subDesc1": "5000원"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"brandId": "BR.R....tr",
"brandKey": "BK.Zs.....tx",
"productCode": "ITMPL",
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "OMTBNV0001",
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"media": "maapfile://{fileId_1}",
"title": "제목",
"description": "RCS 내용",
"변수명": "치환문자",
"subMedia1": "maapfile://{fileId_sub1}",
"subMedia2": "maapfile://{fileId_sub2}",
"subMedia3": "maapfile://{fileId_sub3}",
"subDesc3": "",
"subDesc2": "썸네일 내용2 {{변수명}}",
"subDesc1": "썸네일내용1"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"brandId": "BR.R....tr",
"brandKey": "BK.Zs.....tx",
"productCode": "ITMPL",
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "OMTBNH0001",
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"description": "RCS 내용 {{변수명}}",
"media": "maapfile://{fileId_1}",
"title": "제목",
"변수명": "치환문자",
"subMedia1": "maapfile://{fileId_sub1}",
"subMedia3": "maapfile://{fileId_sub3}",
"subMedia2": "maapfile://{fileId_sub2}"
}
}
],
"buttons": [] // 하단 Appendix에서 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"brandId": "BR.R....tr",
"brandKey": "BK.Zs.....tx",
"productCode": "ITMPL",
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "OMSNSS0001",
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "치환문자",
"description": "내용 {{name}}",
"media": "maapfile://{fileId_1}",
"title": "제목"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"brandId": "BR.R....tr",
"brandKey": "BK.Zs.....tx",
"productCode": "ITMPL",
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "CMwShS0600", // 슬라이드 갯수마다 CMwShS0200 ~ CMwShS0600
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "치환문자",
"media1": "maapfile://{fileId_1}",
"title1": "1번째 슬라이드 제목",
"description1": "1번째 슬라이드 내용 {{name}}",
"name2": "치환문자2",
"media2": "maapfile://{fileId_2}",
"title2": "2번째 슬라이드 제목",
"description2": "2번째 슬라이드 내용 {{name2}}",
"media3": "maapfile://{fileId_3}",
"title3": "3번째 슬라이드 제목",
"description3": "3번째 슬라이드 내용",
"media4": "maapfile://{fileId_4}",
"title4": "4번째 슬라이드 제목",
"description4": "4번째 슬라이드 내용",
"media5": "maapfile://{fileId_5}",
"title5": "5번째 슬라이드 제목",
"description5": "5번째 슬라이드 내용",
"media6": "maapfile://{fileId_6}",
"title6": "6번째 슬라이드 제목",
"description6": "6번째 슬라이드 내용"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"brandId": "BR.R....tr",
"brandKey": "BK.Zs.....tx",
"productCode": "ITMPL",
"clickUrlYn": "N",
"resvYn": "N",
"resvReqDt": "2025-07-13 13:15",
"callback": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"copyAllowed": false,
"expiryOption": "1",
"messagebaseId": "CMwMhM0600", // 슬라이드 갯수마다 CMwMhM0200 ~ CMwMhM0600
"recvInfoLst": [
{
"cliKey": "test001",
"phone": "01012341234",
"mergeData": {
"name": "치환문자",
"media1": "maapfile://{fileId_1}",
"title1": "1번째 슬라이드 제목",
"description1": "1번째 슬라이드 내용 {{name}}",
"name2": "치환문자2",
"media2": "maapfile://{fileId_2}",
"title2": "2번째 슬라이드 제목",
"description2": "2번째 슬라이드 내용 {{name2}}",
"media3": "maapfile://{fileId_3}",
"title3": "3번째 슬라이드 제목",
"description3": "3번째 슬라이드 내용",
"media4": "maapfile://{fileId_4}",
"title4": "4번째 슬라이드 제목",
"description4": "4번째 슬라이드 내용",
"media5": "maapfile://{fileId_5}",
"title5": "5번째 슬라이드 제목",
"description5": "5번째 슬라이드 내용",
"media6": "maapfile://{fileId_6}",
"title6": "6번째 슬라이드 제목",
"description6": "6번째 슬라이드 내용"
}
}
],
"buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요
}
{
"code": "10000",
"message": "성공",
"data": [
{
"cliKey": "test001",
"msgKey": "3j...8U.6fKG1w",
"phone": "01012341234",
"code": "10000",
"message": "성공"
},
...
]
}

RCS 양방향 응답메시지를 발송합니다.

  1. 양방향번호로 등록된 번호만 사용가능합니다.

POST /msg/v1/bi/rcs HTTP/1.1
NameType필수설명
AuthorizationString사용자 인증 토큰
Content-TypeStringapplication/json
NameType필수설명크기
agencyObject-대행사 정보-
replyIdString양방향 응답메시지ID-
cliKeyString클라이언트 키20자
messagebaseIdString메시지베이스 ID100자
chatbotIdString발신번호/양방향대화방 ID40자
telcoString이통사-
phoneString휴대폰번호-
bodyObject메세지내용-
headerStringHeader (0:정보성, 1:광고성)1자
footerString-무료수신거부 번호 (광고성인 경우 필수)20자
copyAllowedBoolean-복사/공유 허용여부-
campaignIdString-캠페인 ID20자
deptCodeString-부서 코드20자
buttonsArray-버튼리스트-
chipListArray-칩리스트-
NameType필수설명
descriptionString메시지 본문

자세한 내용은 하단의 Appendix를 참고해주세요.

NameType필수설명
suggestionsArray버튼 목록
suggestions[].actionObject버튼 동작 정보
suggestions[].action.displayTextString버튼에 표시되는 텍스트
suggestions[].action.postbackObject클릭 시 서버로 전송할 데이터
suggestions[].action.urlActionObject-URL링크 버튼 정보
suggestions[].action.clipboardActionObject-복사하기 버튼 정보
suggestions[].action.dialerActionObject-전화걸기 버튼 정보
suggestions[].action.calendarActionObject-일정추가 버튼 정보
suggestions[].action.mapActionObject-지도맵 버튼 정보

자세한 내용은 하단의 Appendix를 참고해주세요.

NameType필수설명
actionObject버튼 동작 정보
action[].displayTextString버튼에 표시되는 텍스트
action[].postbackObject클릭 시 서버로 전송할 데이터
action[].urlActionObject-URL링크 버튼 정보
action[].clipboardActionObject-복사하기 버튼 정보
action[].dialerActionObject-전화걸기 버튼 정보
action[].calendarActionObject-일정추가 버튼 정보
action[].mapActionObject-지도맵 버튼 정보

NameType설명
codeString결과 코드
messageString결과 메시지
dataArray결과 데이터 목록
data[].cliKeyString클라이언트 키
data[].msgKeyString메시지 키
data[].replyIdString양방향 응답메시지ID
data[].chatbotIdString챗봇ID
data[].codeString결과 코드
data[].messageString결과 메시지

curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/bi/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"messagebaseId": "SCL00000",
"chatbotId": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"replyId": "0d....0-17f7-4d8b-bc53-6.....5",
"cliKey": "test001",
"telco":"LGU",
"phone": "01012341234",
"body": {
"description": "자동응답 메시지 답변내용"
},
"buttons": [
{
"suggestions": [
{
"action": {
"displayText": "버튼1 (버튼명)",
"postback": {
"data": "set_by_chatbot_open_url"
},
"urlAction": {
"openUrl": {
"url": "https://msghub.uplus.co.kr/public/main"
}
}
}
},
{
"action": {
"clipboardAction": {
"copyToClipboard": {
"text": "복사할 내용 입력"
}
},
"displayText": "복사하기 버튼",
"postback": {
"data": "set_by_chatbot_copy_to_clipboard"
}
}
}
]
}
],
"chipList": [
{
"suggestions": [
{
"action": {
"displayText": "버튼1 (버튼명)",
"postback": {
"data": "set_by_chatbot_open_url"
},
"urlAction": {
"openUrl": {
"url": "https://msghub.uplus.co.kr/public/main"
}
}
}
},
{
"action": {
"clipboardAction": {
"copyToClipboard": {
"text": "복사할 내용 입력"
}
},
"displayText": "복사하기 버튼",
"postback": {
"data": "set_by_chatbot_copy_to_clipboard"
}
}
}
]
}
]
}'
{
"code": "10000",
"message": "성공",
"data": [
{
"cliKey": "m....592b",
"msgKey": "JuO....8n.6fL9Vn",
"replyId": "01012341234",
"chatbotId": "07012345678",
"code": "10000",
"message": "성공"
},
...
]
}

RCS 양방향 응답메시지를 발송합니다.

  1. 양방향번호로 등록된 번호만 사용가능합니다.

POST /msg/v1.1/bi/rcs HTTP/1.1
NameType필수설명
AuthorizationString사용자 인증 토큰
Content-TypeStringapplication/json
NameType필수설명크기
agencyObject-대행사 정보-
replyIdString양방향 응답메시지ID-
cliKeyString클라이언트 키20자
messagebaseIdString메시지베이스 ID100자
chatbotIdString발신번호/양방향대화방 ID40자
telcoString이통사-
phoneString휴대폰번호-
bodyObject메세지내용-
headerStringHeader (0:정보성, 1:광고성)1자
footerString-무료수신거부 번호 (광고성인 경우 필수)20자
copyAllowedBoolean-복사/공유 허용여부-
campaignIdString-캠페인 ID20자
deptCodeString-부서 코드20자
buttonsArray-버튼리스트-
chipListArray-칩리스트-
brandIdString-브랜드ID (대행사의 경우 필수)-
brandKeyString-브랜드KEY (대행사의 경우 필수)-
productCodeString-상품 코드 (대행사의 경우 필수)-
NameType필수설명
descriptionString메시지 본문

자세한 내용은 하단의 Appendix를 참고해주세요.

NameType필수설명
suggestionsArray버튼 목록
suggestions[].actionObject버튼 동작 정보
suggestions[].action.displayTextString버튼에 표시되는 텍스트
suggestions[].action.postbackObject클릭 시 서버로 전송할 데이터
suggestions[].action.urlActionObject-URL링크 버튼 정보
suggestions[].action.clipboardActionObject-복사하기 버튼 정보
suggestions[].action.dialerActionObject-전화걸기 버튼 정보
suggestions[].action.calendarActionObject-일정추가 버튼 정보
suggestions[].action.mapActionObject-지도맵 버튼 정보

자세한 내용은 하단의 Appendix를 참고해주세요.

NameType필수설명
actionObject버튼 동작 정보
action[].displayTextString버튼에 표시되는 텍스트
action[].postbackObject클릭 시 서버로 전송할 데이터
action[].urlActionObject-URL링크 버튼 정보
action[].clipboardActionObject-복사하기 버튼 정보
action[].dialerActionObject-전화걸기 버튼 정보
action[].calendarActionObject-일정추가 버튼 정보
action[].mapActionObject-지도맵 버튼 정보

NameType설명
codeString결과 코드
messageString결과 메시지
dataArray결과 데이터 목록
data[].cliKeyString클라이언트 키
data[].msgKeyString메시지 키
data[].replyIdString양방향 응답메시지ID
data[].chatbotIdString챗봇ID
data[].codeString결과 코드
data[].messageString결과 메시지

curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/bi/rcs" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {token}" \
-d '{
"brandId": "BR.R....tr",
"brandKey": "BK.Zs.....tx",
"productCode": "CHAT",
"messagebaseId": "SCL00000",
"chatbotId": "07012345678",
"header": "0",
"agency": {
"kisaOrigCode": "123456789",
"rcsAgencyId": "agencyId",
"rcsAgencyKey": "AK.abcd1234"
},
"replyId": "0d....0-17f7-4d8b-bc53-6.....5",
"cliKey": "test001",
"telco":"LGU",
"phone": "01012341234",
"body": {
"description": "자동응답 메시지 답변내용"
},
"buttons": [
{
"suggestions": [
{
"action": {
"displayText": "버튼1 (버튼명)",
"postback": {
"data": "set_by_chatbot_open_url"
},
"urlAction": {
"openUrl": {
"url": "https://msghub.uplus.co.kr/public/main"
}
}
}
},
{
"action": {
"clipboardAction": {
"copyToClipboard": {
"text": "복사할 내용 입력"
}
},
"displayText": "복사하기 버튼",
"postback": {
"data": "set_by_chatbot_copy_to_clipboard"
}
}
}
]
}
],
"chipList": [
{
"suggestions": [
{
"action": {
"displayText": "버튼1 (버튼명)",
"postback": {
"data": "set_by_chatbot_open_url"
},
"urlAction": {
"openUrl": {
"url": "https://msghub.uplus.co.kr/public/main"
}
}
}
},
{
"action": {
"clipboardAction": {
"copyToClipboard": {
"text": "복사할 내용 입력"
}
},
"displayText": "복사하기 버튼",
"postback": {
"data": "set_by_chatbot_copy_to_clipboard"
}
}
}
]
}
]
}'
{
"code": "10000",
"message": "성공",
"data": [
{
"cliKey": "m....592b",
"msgKey": "JuO....8n.6fL9Vn",
"replyId": "01012341234",
"chatbotId": "07012345678",
"code": "10000",
"message": "성공"
},
...
]
}

대행사 정보를 포함하는 객체입니다.

필드명타입필수설명
kisaOrigCodeString-재판매사 KISA 최초식별코드
rcsAgencyIdString-RBC에 등록된 대행사ID
rcsAgencyKeyString-RBC에서 발급된 대행사키
buttons > suggestions > action > postback 객체
Section titled “buttons > suggestions > action > postback 객체”
NameType필수설명
dataString버튼 타입

다음 값 중 하나가 들어갈 수 있음:

  • URL링크 set_by_chatbot_open_url
  • 복사하기 set_by_chatbot_copy_to_clipboard
  • 전화걸기 set_by_chatbot_dial_phone_number
  • 일정추가 set_by_chatbot_create_calendar_event
  • 지도맵(현재위치) set_by_chatbot_request_location_push
  • 지도맵(좌표입력) set_by_chatbot_show_location
  • 지도맵(쿼리입력) set_by_chatbot_search_locations
buttons > suggestions > action > urlAction 객체
Section titled “buttons > suggestions > action > urlAction 객체”
NameType필수설명
openUrlObject오픈 URL 정보
openUrl.urlString이동할 URL
buttons > suggestions > action > clipboardAction 객체
Section titled “buttons > suggestions > action > clipboardAction 객체”
NameType필수설명
copyToClipboardObject클립보드 복사 정보
copyToClipboard.textString복사할 텍스트 내용
buttons > suggestions > action > dialerAction 객체
Section titled “buttons > suggestions > action > dialerAction 객체”
NameType필수설명
dialPhoneNumberObject전화 걸기 정보
dialPhoneNumber.phoneNumberString전화번호 정보
buttons > suggestions > action > calendarAction 객체
Section titled “buttons > suggestions > action > calendarAction 객체”
NameType필수설명
createCalendarEventObject캘린더 일정 정보
createCalendarEvent.titleString일정 제목
createCalendarEvent.descriptionString일정 설명
createCalendarEvent.startTimeString시작일 (예: 2025-07-09T00:00:00Z)
createCalendarEvent.endTimeString종료일 (예: 2025-07-09T12:00:00Z)
buttons > suggestions > action > mapAction 객체
Section titled “buttons > suggestions > action > mapAction 객체”
NameType필수설명
requestLocationPushObject-지도맵(현재위치) 버튼 선택시 필수 (내용 없음)
showLocationObject-지도맵(좌표 또는 쿼리) 버튼 선택시 필수
showLocation.fallbackUrlString지도 APP 실행 실패 시 대체 URL
showLocation.locationObject위치 정보 객체
showLocation.location.latitudeString-위도 (좌표 기반일 경우 필수)
showLocation.location.longitudeString-경도 (좌표 기반일 경우 필수)
showLocation.location.labelString-지도 APP에 표시될 라벨 (좌표 기반일 경우 필수)
showLocation.location.queryString-검색 쿼리 (검색 기반일 경우 필수)

RCS 버튼 유형별 json 예시입니다.

"buttons": [
{
"suggestions": [
{
"action": {
"displayText": "상품 상세보기(버튼명)",
"postback": {
"data": "set_by_chatbot_open_url"
},
"urlAction": {
"openUrl": {
"url": "https://example.com/product/123"
}
}
}
}
]
}
]
"buttons": [
{
"suggestions": [
{
"action": {
"displayText": "복사하기 버튼명",
"clipboardAction": {
"copyToClipboard": {
"text": "복사할 내용"
}
},
"postback": {
"data": "set_by_chatbot_copy_to_clipboard"
}
}
}
]
}
]
"buttons": [
{
"suggestions": [
{
"action": {
"displayText": "전화걸기 버튼명",
"postback": {
"data": "set_by_chatbot_dial_phone_number"
},
"dialerAction": {
"dialPhoneNumber": {
"phoneNumber": "01012341234"
}
}
}
}
]
}
]
"buttons": [
{
"suggestions": [
{
"action": {
"displayText": "일정추가 버튼명",
"postback": {
"data": "set_by_chatbot_create_calendar_event"
},
"calendarAction": {
"createCalendarEvent": {
"description": "일정 내용",
"startTime": "2025-07-09T00:00:00Z",
"endTime": "2025-07-10T23:59:59Z",
"title": "일정 제목"
}
}
}
}
]
}
]
"buttons": [
{
"suggestions": [
{
"action": {
"mapAction": {
"requestLocationPush": {}
},
"displayText": "현재위치 공유 버튼명",
"postback": {
"data": "set_by_chatbot_request_location_push"
}
}
}
]
}
]
"buttons": [
{
"suggestions": [
{
"action": {
"mapAction": {
"showLocation": {
"fallbackUrl": "지도 APP 미작동시 대체할 URL",
"location": {
"latitude": "위도",
"label": "지도 APP에 표시될 라벨",
"longitude": "경도"
}
}
},
"displayText": "지도 버튼명",
"postback": {
"data": "set_by_chatbot_show_location"
}
}
}
]
}
]
"buttons": [
{
"suggestions": [
{
"action": {
"mapAction": {
"showLocation": {
"fallbackUrl": "지도 APP 미작동시 대체할 URL",
"location": {
"query": "지도 APP에서 검색할 구문"
}
}
},
"displayText": "지도 버튼명",
"postback": {
"data": "set_by_chatbot_search_locations"
}
}
}
]
}
]
NameType필수설명
dataString버튼 타입

다음 값 중 하나가 들어갈 수 있음:

  • URL링크 set_by_chatbot_open_url
  • 복사하기 set_by_chatbot_copy_to_clipboard
  • 전화걸기 set_by_chatbot_dial_phone_number
  • 일정추가 set_by_chatbot_create_calendar_event
  • 지도맵(현재위치) set_by_chatbot_request_location_push
  • 지도맵(좌표입력) set_by_chatbot_show_location
  • 지도맵(쿼리입력) set_by_chatbot_search_locations
NameType필수설명
openUrlObject오픈 URL 정보
openUrl.urlString이동할 URL
chipList > action > clipboardAction 객체
Section titled “chipList > action > clipboardAction 객체”
NameType필수설명
copyToClipboardObject클립보드 복사 정보
copyToClipboard.textString복사할 텍스트 내용
NameType필수설명
dialPhoneNumberObject전화 걸기 정보
dialPhoneNumber.phoneNumberString전화번호 정보
NameType필수설명
createCalendarEventObject캘린더 일정 정보
createCalendarEvent.titleString일정 제목
createCalendarEvent.descriptionString일정 설명
createCalendarEvent.startTimeString시작일 (예: 2025-07-09T00:00:00Z)
createCalendarEvent.endTimeString종료일 (예: 2025-07-09T12:00:00Z)
NameType필수설명
requestLocationPushObject-지도맵(현재위치) 버튼 선택시 필수 (내용 없음)
showLocationObject-지도맵(좌표 또는 쿼리) 버튼 선택시 필수
showLocation.fallbackUrlString지도 APP 실행 실패 시 대체 URL
showLocation.locationObject위치 정보 객체
showLocation.location.latitudeString-위도 (좌표 기반일 경우 필수)
showLocation.location.longitudeString-경도 (좌표 기반일 경우 필수)
showLocation.location.labelString-지도 APP에 표시될 라벨 (좌표 기반일 경우 필수)
showLocation.location.queryString-검색 쿼리 (검색 기반일 경우 필수)

RCS ChipList 유형별 json 예시입니다.

"chipList": [
{
"action": {
"displayText": "상품 상세보기(버튼명)",
"postback": {
"data": "set_by_chatbot_open_url"
},
"urlAction": {
"openUrl": {
"url": "https://example.com/product/123"
}
}
}
}
]
"chipList": [
{
"action": {
"displayText": "복사하기 버튼명",
"clipboardAction": {
"copyToClipboard": {
"text": "복사할 내용"
}
},
"postback": {
"data": "set_by_chatbot_copy_to_clipboard"
}
}
}
]
"chipList": [
{
"action": {
"displayText": "전화걸기 버튼명",
"postback": {
"data": "set_by_chatbot_dial_phone_number"
},
"dialerAction": {
"dialPhoneNumber": {
"phoneNumber": "01012341234"
}
}
}
}
]
"buttons": [
{
"action": {
"displayText": "일정추가 버튼명",
"postback": {
"data": "set_by_chatbot_create_calendar_event"
},
"calendarAction": {
"createCalendarEvent": {
"description": "일정 내용",
"startTime": "2025-07-09T00:00:00Z",
"endTime": "2025-07-10T23:59:59Z",
"title": "일정 제목"
}
}
}
}
]
"buttons": [
{
"action": {
"mapAction": {
"requestLocationPush": {}
},
"displayText": "현재위치 공유 버튼명",
"postback": {
"data": "set_by_chatbot_request_location_push"
}
}
}
]
"buttons": [
{
"action": {
"mapAction": {
"showLocation": {
"fallbackUrl": "지도 APP 미작동시 대체할 URL",
"location": {
"latitude": "위도",
"label": "지도 APP에 표시될 라벨",
"longitude": "경도"
}
}
},
"displayText": "지도 버튼명",
"postback": {
"data": "set_by_chatbot_show_location"
}
}
}
]
"buttons": [
{
"action": {
"mapAction": {
"showLocation": {
"fallbackUrl": "지도 APP 미작동시 대체할 URL",
"location": {
"query": "지도 APP에서 검색할 구문"
}
}
},
"displayText": "지도 버튼명",
"postback": {
"data": "set_by_chatbot_search_locations"
}
}
}
]
NameType필수설명크기
cliKeyString클라이언트키30자
phoneString수신번호(국제문자 발송 시 맨 앞에 ‘0’이 없어야함)20자
mergeDataObject-채널별 개별화메시지 머지데이터-
NameType필수설명
chString채널
titleString-제목(MMS의 경우 필수)
msgString메시지
fileIdString-파일아이디 (파일 아이디와 파일 아이디 목록 중 1개만 사용 가능)
fileIdLstArray-파일 아이디 목록 (최대 3개)