2.4 카카오톡 메시지
베이스 URL
섹션 제목: “베이스 URL”| 구분 | 접속 URL |
|---|---|
| 상용 | https://api-send.msghub.uplus.co.kr |
| 검수 | https://api-send.msghub-qa.uplus.co.kr |
1. 알림톡 발송 V1.2
섹션 제목: “1. 알림톡 발송 V1.2”카카오 알림톡을 발송합니다. 알림톡은 기업이 카카오톡을 통해 고객에게 중요한 정보를 전달할 수 있는 비대면 알림 서비스입니다.
📌 주의사항
섹션 제목: “📌 주의사항”- 동보발송이란, 같은 내용의 메시지를 다수에게 동시에 보내는 발송 방식
- 메시지허브는 동보발송을 지원하며, 1건의 메시지에 최대 10명의 수신자를 추가하여 발송할 수 있습니다.
- TPS는 수신자 수 기준으로 처리됩니다. 예시) SMS 1건에 수신자 5명을 추가하여 발송시, TPS는 5입니다.
- 발신번호는 사전에 등록된 번호만 사용 가능합니다.
- 예약발송은 현재 시점으로부터 최대 30일까지 가능합니다.
- 템플릿 코드는 사전에 승인된 것만 사용 가능합니다.
- 버튼은 최대 5개까지 추가 가능합니다.
- 단축URL 사용 시 메시지 길이가 제한될 수 있습니다.
- fbInfoLst는 발송실패시, 대체발송에 대한 객체입니다. 대체발송 채널은 SMS, MMS만 지원하며, 메인 채널과 동일할 수 없습니다.
📌 버튼 타입 설명
섹션 제목: “📌 버튼 타입 설명”| 타입 | 설명 | 필수 입력 |
|---|---|---|
| WL | 웹링크 | url_mobile 필수, url_pc 선택 |
| AL | 앱링크 | linkIos, linkAnd, linkMo 중 2개 이상 필수 |
| BK | 봇 키워드 | 해당 버튼 텍스트 전송 |
| MD | 메시지 전달 | 해당 버튼 텍스트 + 메시지 본문 전송 |
| BC | 상담톡 전환 | 상담톡 서비스를 이용하고 있을 경우 상담톡으로 전환 |
| BT | 봇 전환 | 채널 봇으로 전환 |
| DS | 배송조회 | 메시지 내 송장번호로 배송조회 페이지 연결 (quickReplies 사용 불가) |
| AC | 채널추가 | 광고추가형/복합형 템플릿에서만 사용 가능, 버튼단톡 또는 첫번째 버튼에만 추가 가능 (quickReplies 사용 불가) |
1) 요청 (Request)
섹션 제목: “1) 요청 (Request)”URL
섹션 제목: “URL”POST /kko/alimtalk/v1.2 HTTP/1.1Headers
섹션 제목: “Headers”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| Authorization | String | ● | 사용자 인증 토큰 |
| Content-Type | String | ● | application/json |
Request Body
섹션 제목: “Request Body”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| clickUrlYn | String | - | 단축URL 사용여부 (Y/N) | 1자 |
| resvYn | String | - | 예약발송 여부 (Y/N) | 1자 |
| resvReqDt | String | - | 예약발송 시간 (ex. 2025-07-13 13:15) | - |
| agency | Object | - | 대행사 정보 | - |
| callback | String | ● | 발신번호 | 20자 |
| campaignId | String | - | 캠페인 ID | 20자 |
| deptCode | String | - | 부서 코드 | 20자 |
| title | String | - | 강조표기 메시지 | - |
| itemHeader | String | - | 헤더 | - |
| itemHighlightTitle | String | - | 요약정보 | - |
| itemHighlightDescription | String | - | 요약내용 | - |
| msg | String | ● | 메시지 내용 | 1,000자 |
| item | Object | - | 아이템리스트 정보 | - |
| kkoChId | String | ● | 카카오채널 ID | 61자 |
| tmpltCode | String | ● | 템플릿 코드 | - |
| service | Integer | - | 서비스 번호 | - |
| recvInfoLst | Array | ● | 수신자 정보 목록 | 10개 |
| fbInfoLst | Array | - | 대체 발송 정보 | - |
| buttons | Array | - | 버튼 리스트 | - |
| groupKey | String | - | 알림톡 그룹키 | 200자 |
item 객체
섹션 제목: “item 객체”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| list | Array | ● | 아이템리스트, 최소 2개, 최대 10개까지 가능 | - |
| list[].title | String | ● | 아이템리스트 타이틀 | 6자 |
| list[].description | String | ● | 아이템리스트 설명 | 23자 |
| summary | Object | - | 아이템리스트 설명 | - |
| summary.title | String | ● | 타이틀 | 6자 |
| summary.description | String | - | 설명 (변수 및 화폐 단위, 숫자, 쉼표, 마침표만 사용 가능) | 14자 |
buttons 객체
섹션 제목: “buttons 객체”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| name | String | ● | 버튼이름 | 14자 |
| type | String | ● | 버튼타입 | 2자 |
| linkMo | String | - | mobile 환경에서 버튼 클릭 시 이동할 url | - |
| linkPc | String | - | pc 환경에서 버튼 클릭 시 이동할 url | - |
| linkAnd | String | - | mobile android 환경에서 버튼 클릭 시 실행할 application custom scheme | - |
| linkIos | String | - | mobile ios 환경에서 버튼 클릭 시 실행할 application custom scheme | - |
| ordering | Integer | - | 버튼 노출 순서 | - |
| varUrlYn | String | - | URL 가변 값 포함 여부 | - |
| kkoBtnOutbrowserYn | boolean | - | WL 버튼타입의 경우, 버튼 클릭시 url 이 열리는 브라우저 설정(true/false) | - |
| chat_extra | String | - | 봇관련 정보(type:BC,BT) | 64자 |
| chat_event | String | - | 봇관련 이벤트정보(type:BT) | 64자 |
2) 응답 (Response)
섹션 제목: “2) 응답 (Response)”Response Body
섹션 제목: “Response Body”| Name | Type | 설명 |
|---|---|---|
| code | String | 결과 코드 |
| message | String | 결과 메시지 |
| data | Array | 결과 데이터 목록 |
| data[].cliKey | String | 클라이언트 키 |
| data[].msgKey | String | 메시지 키 |
| data[].phone | String | 수신번호 |
| data[].code | String | 결과 코드 |
| data[].message | String | 결과 메시지 |
3) 요청 예시 (Sample)
섹션 제목: “3) 요청 예시 (Sample)”Curl
섹션 제목: “Curl”아이템리스트형 이외의 템플릿
섹션 제목: “아이템리스트형 이외의 템플릿”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/alimtalk/v1.2" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "agency": { "kisaOrigCode": "123456789" }, "callback": "0212341234", "title": "U+ Cloud 서비스 알림", "msg": "안녕하세요. #{name} 고객님.\n\nU+ Cloud서비스에서 설정하신 일일 사용량(1,000건) 초과 사용을 알려드립니다.\n\n※ 사용량 제한 및 기타 자세한 사항은 홈페이지 참조", "kkoChId": "@myservice", "tmpltCode": "TPnJhpG82k", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "홍길동" }, "userCustomFields": { "key1": "value1", "key2": 123 } }, { "cliKey": "test002", "phone": "01056785678", "mergeData": { "name": "김철수" }, "userCustomFields": { "key1": "value1", "key2": 123 } } ], "buttons": [ { "name": "사용량 제한 이용안내", "type": "WL", "url_mobile": "https://m.uplus.co.kr/cloud/usage", "url_pc": "https://www.uplus.co.kr/cloud/usage", "kkoBtnOutbrowserYn": true 또는 "true" }, { "name": "포인트 전환하기", "type": "AL", "linkMo": "https://m.uplus.co.kr/point", "linkAnd": "upluscloud://point/convert", "linkIos": "upluscloud://point/convert" } ], "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용", "fileId": "testFileId001" } ] }'아이템리스트형 템플릿
섹션 제목: “아이템리스트형 템플릿”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/alimtalk/v1.2" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "agency": { "kisaOrigCode": "123456789" }, "callback": "0212341234", "title": "U+ Cloud 서비스 알림", "msg": "안녕하세요. #{name} 고객님.\n\nU+ Cloud서비스에서 설정하신 일일 사용량(1,000건) 초과 사용을 알려드립니다.\n\n※ 사용량 제한 및 기타 자세한 사항은 홈페이지 참조", "kkoChId": "@myservice", "tmpltCode": "TPnJhpG82k", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "홍길동" }, "userCustomFields": { "key1": "value1", "key2": 123 } }, { "cliKey": "test002", "phone": "01056785678", "mergeData": { "name": "김철수" } } ], "item": { "list": [ { "title": "test01", "description": "test01" }, { "title": "test02", "description": "test02" } ], "summary": { "title": "테스트", "description": "1,000,000원" } }, "itemHeader":"헤더", "itemHighlightTitle": "타이틀", "itemHighlightDescription": "설명", "buttons": [ { "name": "사용량 제한 이용안내", "type": "WL", "url_mobile": "https://m.uplus.co.kr/cloud/usage", "url_pc": "https://www.uplus.co.kr/cloud/usage", "kkoBtnOutbrowserYn": true 또는 "true" }, { "name": "포인트 전환하기", "type": "AL", "linkMo": "https://m.uplus.co.kr/point", "linkAnd": "upluscloud://point/convert", "linkIos": "upluscloud://point/convert" } ], "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용", "fileId": "testFileId001" } ] }'Response
섹션 제목: “Response”{ "code": "10000", "message": "성공", "data": [ { "cliKey": "test001", "msgKey": "3jVnyk0m8U.6fKG1w", "phone": "01012341234", "code": "10000", "message": "성공" }, ... ]}예약발송 응답
섹션 제목: “예약발송 응답”{ "code": "10000", "message": "성공", "data": { "regDt": "2026-04-08T11:16:55", "webReqId": "RRR...b5jv" } ]}2. 브랜드메시지 템플릿형 발송 V1
섹션 제목: “2. 브랜드메시지 템플릿형 발송 V1”카카오 브랜드메시지 템플릿형 발송 API이며, 최대 10건 까지 한번에 발송 가능합니다.
📌 주의사항
섹션 제목: “📌 주의사항”- 동보발송이란, 같은 내용의 메시지를 다수에게 동시에 보내는 발송 방식
- 메시지허브는 동보발송을 지원하며, 1건의 메시지에 최대 10명의 수신자를 추가하여 발송할 수 있습니다.
- TPS는 수신자 수 기준으로 처리됩니다. 예시) SMS 1건에 수신자 5명을 추가하여 발송시, TPS는 5입니다.
- 템플릿 코드는 사전에 등록된 것만 사용 가능합니다.
- 예약발송은 현재 시점으로부터 최대 30일까지 가능합니다.
- fbInfoLst는 발송실패시, 대체발송에 대한 객체입니다. 대체발송 채널은 SMS, MMS만 지원하며, 메인 채널과 동일할 수 없습니다.
- unsubscribePhoneNumber와 unsubscribeAuthNumber 을 둘 다 입력하지 않은 경우 카카오채널에 등록된 무료수신거부 정보로 발송됩니다.
- unsubscribeAuthNumber는 080 수신거부번호의 내선번호 개념으로 옵션값입니다. unsubscribePhoneNumber 없이 입력할 수 없습니다.
- unsubscribePhoneNumber는 ‘080-000-0000’의 하이픈(-) 을 포함한 포맷으로 사용합니다.
- 캐러셀커머스형의 경우 commerce 객체 내에 변수를 사용하는 경우, mergeData의 key 값에 변수+’_‘+캐러셀번호 를 붙여 입력해야합니다.
- 예시 1 ))
- 캐러셀커머스 1번째 캐러셀에
#{정상가격},#{할인가격},#{할인율}을 사용하고 - 캐러셀커머스 2번째 캐러셀에
#{정상가격},#{할인가격},#{정액할인가격}을 사용하는 경우 - 발송 예시))
{"recvInfoLst": [ { "cliKey": "text_test", "phone": "01000010001", "mergeData": { "정상가격_1": "10000", "할인가격_1": "8000", "할인율_1": "20", "정상가격_2": "15000", "할인가격_2": "10000", "정액할인가격_2": "5000" } }]}- 예시 2 ))
- 캐러셀커머스 1번째 캐러셀은 변수 사용 하지않고,
- 캐러셀커머스 2번째 캐러셀에
#{정상가격},#{할인가격},#{정액할인가격}을 사용하는 경우 - 발송 예시))
{"recvInfoLst": [ { "cliKey": "text_test", "phone": "01000010001", "mergeData": { "정상가격_2": "15000", "할인가격_2": "10000", "정액할인가격_2": "5000" } }]}1) 요청 (Request)
섹션 제목: “1) 요청 (Request)”URL
섹션 제목: “URL”POST /kko/brandtalk/tmplt/v1 HTTP/1.1Headers
섹션 제목: “Headers”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| Authorization | String | ● | 사용자 인증 토큰 |
Request Body
섹션 제목: “Request Body”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| targeting | String | ● | 마수동 타입 : M(I+N: I타입 실패 시 N타입으로 발송), N(일반), I(정보) | 1자 |
| resvYn | String | - | 예약발송 여부 (Y/N) | 1자 |
| resvReqDt | String | - | 예약발송 시간 (ex. 2025-07-13 13:15) | - |
| agency | Object | - | 대행사 정보 | - |
| pushAlarm | String | - | 푸시 알람 설정 (Y/N) default: Y | 1자 |
| kkoChId | String | ● | 카카오채널 ID | 61자 |
| tmpltCode | String | ● | 템플릿 코드 | - |
| chatBubbleType | String | ● | 메시지 타입 (TEXT, IMAGE, WIDE, WIDE_ITEM_LIST, CAROUSEL_FEED, CAROUSEL_COMMERCE, COMMERCE, PREMIUM_VIDEO) | - |
| callback | String | ● | 발신번호 | 20자 |
| recvInfoLst | RecvInfo[] | ● | 수신자 정보 목록 | 10개 |
| fbInfoLst | FbInfo[] | - | 대체 발송 정보 | - |
| unsubscribePhoneNumber | String | - | 무료수신거부 전화번호, ‘080-000-0000’ 포맷, unsubscribePhoneNumber과 unsubscribeAuthNumber 둘 다 미입력시 카카오채널에 등록된 무료수신거부 정보로 발송됨. | 13자 |
| unsubscribeAuthNumber | String | - | 무료수신거부 인증번호, unsubscribePhoneNumber 없이 사용불가 | 10자 |
2) 응답 (Response)
섹션 제목: “2) 응답 (Response)”Response Body
섹션 제목: “Response Body”| Name | Type | 설명 |
|---|---|---|
| code | String | 결과 코드 |
| message | String | 결과 메시지 |
| data | Array | 결과 데이터 목록 |
| data[].cliKey | String | 클라이언트 키 |
| data[].msgKey | String | 메시지 키 |
| data[].phone | String | 수신번호 |
| data[].code | String | 결과 코드 |
| data[].message | String | 결과 메시지 |
3) 요청 예시 (Sample)
섹션 제목: “3) 요청 예시 (Sample)”Curl 텍스트형
섹션 제목: “Curl 텍스트형”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/tmplt/v1" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "targeting": "I", "tmpltCode": "TEST_TXT", "kkoChId": "@메시지허브", "chatBubbleType": "TEXT", "callback": "020010001", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용" } ], "recvInfoLst": [ { "cliKey": "text_test", "phone": "01000010001", "userCustomFields": { "key1": "value1", "key2": 123 } } ], "unsubscribePhoneNumber": "080-1234-1234", "unsubscribeAuthNumber": "1234"}'Curl 와이드형
섹션 제목: “Curl 와이드형”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/tmplt/v1" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "targeting": "M", "kkoChId": "@메시지허브", "tmpltCode": "TEST_WIDE", "chatBubbleType": "WIDE", "callback": "020000001", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용" } ], "recvInfoLst": [ { "cliKey": "wide_test", "phone": "01000010001", "userCustomFields": { "key1": "value1", "key2": 123 } } ], "unsubscribePhoneNumber": "080-1234-1234", "unsubscribeAuthNumber": "1234" }'Curl 캐러셀피드형
섹션 제목: “Curl 캐러셀피드형”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/tmplt/v1" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "targeting": "N", "kkoChId": "@메시지허브", "tmpltCode": "TEST_CAROUSEL_FEED", "chatBubbleType": "CAROUSEL_FEED", "callback": "020000001", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용" } ], "recvInfoLst": [ { "cliKey": "CAROUSEL_FEED_test", "phone": "01000010001", "userCustomFields": { "key1": "value1", "key2": 123 } } ], "unsubscribePhoneNumber": "080-1234-1234", "unsubscribeAuthNumber": "1234" }'Response
섹션 제목: “Response”예약발송
섹션 제목: “예약발송”{ "code": "10000", "message": "성공", "data": { "regDt": "2025-10-22T17:43:32", "webReqId": "BJ....pT" }}즉시발송
섹션 제목: “즉시발송”{ "code": "10000", "message": "성공", "data": [ { "cliKey": "text_test", "msgKey": "A....2J", "phone": "010.....", "code": "10000", "message": "성공" } ]}3. 브랜드메시지 자유형 발송 V1
섹션 제목: “3. 브랜드메시지 자유형 발송 V1”카카오 브랜드메시지 자유형 발송 API이며, 최대 10건 까지 한번에 발송 가능합니다.
📌 주의사항
섹션 제목: “📌 주의사항”- 동보발송이란, 같은 내용의 메시지를 다수에게 동시에 보내는 발송 방식
- 메시지허브는 동보발송을 지원하며, 1건의 메시지에 최대 10명의 수신자를 추가하여 발송할 수 있습니다.
- TPS는 수신자 수 기준으로 처리됩니다. 예시) SMS 1건에 수신자 5명을 추가하여 발송시, TPS는 5입니다.
- 발신번호는 사전에 등록된 번호만 사용 가능합니다.
- 예약발송은 현재 시점으로부터 최대 30일까지 가능합니다.
- 버튼은 최대 5개까지 추가 가능합니다.
- fbInfoLst는 발송실패시, 대체발송에 대한 객체입니다. 대체발송 채널은 SMS, MMS만 지원하며, 메인 채널과 동일할 수 없습니다.
- 메시지 길이 체크
TEXT, IMAGE형 경우: 최대 1300자 WIDE, PREMIUM_VIDEO형 경우 : 최대 76자 - unsubscribePhoneNumber와 unsubscribeAuthNumber 을 둘 다 입력하지 않은 경우 카카오채널에 등록된 무료수신거부 정보로 발송됩니다.
- unsubscribeAuthNumber는 080 수신거부번호의 내선번호 개념으로 옵션값입니다. unsubscribePhoneNumber 없이 입력할 수 없습니다.
- unsubscribePhoneNumber는 ‘080-000-0000’의 하이픈(-) 을 포함한 포맷으로 사용합니다.
📌 버튼 타입 설명
섹션 제목: “📌 버튼 타입 설명”| 타입 | 설명 | 필수 입력 |
|---|---|---|
| WL | 웹링크 | linkMobile 필수, linkPc선택 |
| AL | 앱링크 | linkIos, linkAndroid, linkMobile 중 2개 이상 필수 |
| BK | 봇 키워드 | 해당 버튼 텍스트 전송 |
| MD | 메시지 전달 | 해당 버튼 텍스트 + 메시지 본문 전송 |
| AC | 채널추가 | TEXT, IMAGE 형은 첫번째 버튼으로, 그 외 템플릿 유형의 경우 마지막 버튼에만 추가 가능, name은 “채널 추가”로 고정값 사용 |
| BF | 비즈니스폼 | bizFormId 필수, 버튼명은 비즈니스폼 유형에 따라 “톡에서 설문하기”, “톡에서 응모하기”, “톡에서 예약하기” 중 한가지 사용 |
1) 요청 (Request)
섹션 제목: “1) 요청 (Request)”URL
섹션 제목: “URL”POST https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/custom/v1 HTTP/1.1Headers
섹션 제목: “Headers”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| Authorization | String | ● | 사용자 인증 토큰 |
Request Body
섹션 제목: “Request Body”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| targeting | String | ● | 마수동 타입 : M(I+N: I타입 실패 시 N타입으로 발송), N(일반), I(정보) | 1자 |
| agency | Object | - | 대행사 정보 | - |
| resvYn | String | - | 예약발송 여부 (Y/N) | 1자 |
| resvReqDt | String | - | 예약발송 시간 (ex. 2025-07-13 13:15) | - |
| campaignId | String | - | 캠페인 ID | 20자 |
| deptCode | String | - | 부서 코드 | 20자 |
| callback | String | ● | 발신번호 | 20자 |
| recvInfoLst | RecvInfo[] | ● | 수신자 정보 목록 | 10개 |
| fbInfoLst | FbInfo[] | - | 대체 발송 정보 | - |
| pushAlarm | String | - | 푸시 알람 설정 (Y/N) default: Y | 1자 |
| unsubscribePhoneNumber | String | - | 무료수신거부 전화번호, ‘080-000-0000’ 포맷, unsubscribePhoneNumber과 unsubscribeAuthNumber 둘 다 미입력시 카카오채널에 등록된 무료수신거부 정보로 발송됨. | 13자 |
| unsubscribeAuthNumber | String | - | 무료수신거부 인증번호, unsubscribePhoneNumber 없이 사용불가 | 10자 |
| kkoChId | String | ● | 카카오채널 ID | 61자 |
| chatBubbleType | String | ● | 메시지 타입 (TEXT, IMAGE, WIDE, WIDE_ITEM_LIST, CAROUSEL_FEED, CAROUSEL_COMMERCE, COMMERCE, PREMIUM_VIDEO) | - |
| adult | boolean | - | 성인용 템플릿 여부 | 최대 5자 |
| content | String | - | 템플릿 내용 TEXT, IMAGE: 최대 1,300자 (줄 바꿈: 최대 99개, URL 형식 입력 가능), WIDE, PREMIUM_VIDEO: 최대 76자 (줄 바꿈: 최대 1개) | - |
| 공통 CAROUSEL_COMMERCE , CAROUSEL_FEED 는 buttons, coupon 사용 불가 | ||||
| buttons | Button[] | - | 버튼요소 (TEXT, IMAGE - coupon 사용할 경우 최대 4개, 그 외 최대 5개 WIDE, WIDE_ITEM_LIST - 최대 2개 PREMIUM_VIDEO - 최대 1개 COMMERCE - 최소1개 최대 2개) | - |
| coupon | Coupon | - | 쿠폰요소 | - |
| 챗버블 IMAGE 이미지형, WIDE 와이드형 일 경우 | ||||
| imageUrl | String | ● | 파일 업로드 API로 등록한 이미지 URL | 최대 500자 |
| imageLink | String | - | 이미지 클릭 시 이동할 URL | 최대 500자 |
| 챗버블 WIDE_ITEM_LIST 와이드 아이템 리스트형 일 경우 | ||||
| header | String | ● | 템플릿 헤더 | 최대 20자 |
| wideItemList | WideItem[] | ● | 와이드 리스트, 리스트 3개 필수 | |
| 챗버블 PREMIUM_VIDEO 프리미엄 동영상 형 일 경우 | ||||
| header | String | - | 템플릿 헤더 | 최대 20자 |
| video | Object | ● | - | - |
| video.videoUrl | String | ● | 카카오TV 동영상 url | - |
| video.thumbnailUrl | String | - | 이미지업로드 API로 등록한 아이템 이미지 url | - |
| 챗버블 COMMERCE 커머스 형 일 경우 | ||||
| additionalContent | String | - | 템플릿 부가정보, 줄바꿈 최대 1개 | 최대 34자 |
| imageUrl | String | ● | 파일 업로드 API로 등록한 이미지 URL | 최대 500자 |
| commerce | Object | ● | - | - |
| commerce.title | String | ● | 상품 제목 | 30자 |
| commerce.regularPrice | Number | ● | 정상가격 (0 ~ 99,999,999) | |
| commerce.discountPrice | Number | ● | 할인 후 가격 (0 ~ 99,999,999) | |
| commerce.discountRate | Number | - | 할인율 (0 ~ 100) 할인율과 정액 할인 가격 둘중 하나만 입력 | |
| commerce.discountFixed | Number | - | 정액 할인 가격 (0 ~ 999,999) 할인율과 정액 할인 가격 둘중 하나만 입력 | |
| 챗버블 CAROUSEL_COMMERCE 캐러셀 커머스 형 일 경우 | ||||
| carousel | Object | ● | - | - |
| carousel.head | Object | - | 캐러셀 인트로(head) - CAROUSEL_COMMERCE에서만 선택적 사용 가능 | - |
| carousel.head.header | String | ● | 캐러셀 인트로 헤더 (CAROUSEL_COMMERCE head 사용시 필수) | - |
| carousel.head.content | String | ● | mobile 환경에서 버튼 클릭 시 이동할 url | |
| carousel.head.imageUrl | String | ● | 파일업로드 API로 등록한 캐러셀 인트로 이미지 url | |
| carousel.head.linkMobile | String | - | mobile 환경에서 버튼 클릭 시 이동할 url , 링크를 하나라도 입력하는 경우 linkMobile 필수 | |
| carousel.head.linkPc | String | - | pc 환경에서 버튼 클릭 시 이동할 url | |
| carousel.head.linkAnd | String | - | mobile android 환경에서 버튼 클릭 시 실행할 application custom scheme | |
| carousel.head.linkIos | String | - | mobile ios 환경에서 버튼 클릭 시 실행할 application custom scheme | |
| carousel.list | json[] | ● | 캐러셀 리스트, 캐러셀인트로(head) 사용시 1 | |
| carousel.list.additionalContent | String | - | 캐러셀 리스트 부가정보 | 최대 34자 |
| carousel.list.imageUrl | String | ● | 파일업로드 API로 등록한 캐러셀 인트로 이미지 url | |
| carousel.list.imageLink | String | - | 이미지 클릭 시 이동할 url | |
| carousel.list.commerce | Commerce | ● | 커머스요소 | |
| carousel.list.buttons | Button[] | ● | 버튼 목록 (캐러셀 당 최소 1개, 최대 2개) | |
| carousel.list.coupon | Coupon | - | 쿠폰 요소 | |
| carousel.tail | json | - | 더보기 버튼 | |
| carousel.tail.linkMobile | String | - | mobile 환경에서 버튼 클릭 시 이동할 url , 링크를 하나라도 입력하는 경우 linkMobile 필수 | |
| carousel.tail.linkPc | String | - | pc 환경에서 버튼 클릭 시 이동할 url | |
| carousel.tail.linkAnd | String | - | mobile android 환경에서 버튼 클릭 시 실행할 application custom scheme | |
| carousel.tail.linkIos | String | - | mobile ios 환경에서 버튼 클릭 시 실행할 application custom scheme | |
| 챗버블 챗버블 CAROUSEL_FEED캐러셀 피드 형 일 경우 | ||||
| carousel | Object | ● | - | - |
| carousel.list | json[] | ● | 캐러셀 리스트, 캐러셀인트로(head) 사용시 1 | |
| carousel.list .header | String | ● | 캐러셀 인트로 헤더 | 최대 20자 |
| carousel.list.content | String | ● | 캐러셀 리스트 내용 | 최대 180자 |
| carousel.list.imageUrl | String | ● | 파일업로드 API로 등록한 캐러셀 인트로 이미지 url | |
| carousel.list.imageLink | String | - | 이미지 클릭 시 이동할 url | |
| carousel.list.buttons | Button[] | ● | 버튼 목록 (캐러셀 당 최소 1개, 최대 2개) | |
| carousel.list.coupon | Coupon | - | 쿠폰 요소 | |
| carousel.tail | json | - | 더보기 버튼 | |
| carousel.tail.linkMobile | String | - | mobile 환경에서 버튼 클릭 시 이동할 url , 링크를 하나라도 입력하는 경우 linkMobile 필수 | |
| carousel.tail.linkPc | String | - | pc 환경에서 버튼 클릭 시 이동할 url | |
| carousel.tail.linkAnd | String | - | mobile android 환경에서 버튼 클릭 시 실행할 application custom scheme | |
| carousel.tail.linkIos | String | - | mobile ios 환경에서 버튼 클릭 시 실행할 application custom scheme |
buttons 객체
섹션 제목: “buttons 객체”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| name | String | ● | 버튼이름 | 14자 |
| linkType | String | ● | 버튼타입 | 2자 |
| linkMobile | String | - | mobile 환경에서 버튼 클릭 시 이동할 url | - |
| linkPc | String | - | pc 환경에서 버튼 클릭 시 이동할 url | - |
| linkAndroid | String | - | mobile android 환경에서 버튼 클릭 시 실행할 application custom scheme | - |
| linkIos | String | - | mobile ios 환경에서 버튼 클릭 시 실행할 application custom scheme | - |
Coupon 객체
섹션 제목: “Coupon 객체”📌 주의사항
섹션 제목: “📌 주의사항”- 쿠폰 제목에는 변수와 고정값을 사용할 수 있습니다.
- 쿠폰 제목에 변수를 사용하는 경우, 고정 변수명 5개 중 사용
고정 변수 :#{할인금액}원 할인 쿠폰#{할인율}% 할인 쿠폰- 배송비 할인 쿠폰
#{상품명}무료 쿠폰#{상품명}UP 쿠폰
예시) 고정 변수 문자 그대로 입력하여 등록
"coupon": { "title": "#{상품명} 무료 쿠폰" }
"coupon": { "title": "#{할인율}% 할인 쿠폰" }
"coupon": { "title": "배송비 할인 쿠폰" }- 쿠폰 제목에 고정 값 사용을 원할 경우, 변수 자리에 숫자 입력
#{할인금액}입력 가능 범위 : 1 ~ 99,999,9999
#{할인율}입력 가능 범위 : 1 ~ 100
#{상품명}: 최대 7자
예시) 변수자리에 숫자 혹은 문자 입력하여 등록
"coupon": { "title": "바나나우유 무료 쿠폰" }
"coupon": { "title": "20% 할인 쿠폰" }
"coupon": { "title": "50000원 할인 쿠폰" }| Name | Type | 필수 | 설명 |
|---|---|---|---|
| tile | String | ● | 쿠폰 제목 |
| description | String | ● | 쿠폰 설명 |
| linkMobile | String | - | mobile 환경에서 쿠폰 클릭 시 이동할 url |
| linkPc | String | - | pc 환경에서 쿠폰 클릭 시 이동할 url |
| linkAndroid | String | - | mobile android 환경에서 쿠폰 클릭 시 실행할 application custom scheme |
| linkIos | String | - | mobile ios 환경에서 쿠폰 클릭 시 실행할 application custom scheme |
2) 응답 (Response)
섹션 제목: “2) 응답 (Response)”Response Body
섹션 제목: “Response Body”| Name | Type | 설명 |
|---|---|---|
| code | String | 결과 코드 |
| message | String | 결과 메시지 |
| data | Array | 결과 데이터 목록 |
| data[].cliKey | String | 클라이언트 키 |
| data[].msgKey | String | 메시지 키 |
| data[].phone | String | 수신번호 |
| data[].code | String | 결과 코드 |
| data[].message | String | 결과 메시지 |
3) 요청 예시 (Sample)
섹션 제목: “3) 요청 예시 (Sample)”Curl 텍스트형
섹션 제목: “Curl 텍스트형”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/custom/v1" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "targeting": "I", "kkoChId": "@메시지허브", "callback": "020010001", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용" } ], "recvInfoLst": [ { "cliKey": "text_test", "phone": "01000010001", "userCustomFields": { "key1": "value1", "key2": 123 } } ], "chatBubbleType": "TEXT", "adult": false, "content": "안녕하세요. 브랜드 메시지 테스트 자유형 발송입니다.", "buttons": [ { "name":"채널 추가", "linkType": "AC" }, { "name": "버튼01", "linkType": "WL", "linkMobile": "https://m.example.com", "linkPc": "https://www.example.com" } ], "coupon": { "title": "1000원 할인 쿠폰", "description": "설명", "linkMobile": "https://m.example.com" }, "unsubscribePhoneNumber": "080-1234-1234", "unsubscribeAuthNumber": "1234" }'Curl 이미지형
섹션 제목: “Curl 이미지형”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/custom/v1" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "targeting": "M", "kkoChId": "@메시지허브", "chatBubbleType": "IMAGE", "callback": "020010001", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용" } ], "recvInfoLst": [ { "cliKey": "text_test", "phone": "01000010001", "userCustomFields": { "key1": "value1", "key2": 123 } } ], "adult": false, "content": "안녕하세요. 브랜드 메시지 테스트 등록입니다. 02", "imageUrl": "https://mud-kage.kakao.com/dn/lvkxE/bts...5XE/vag....30/img_l.jpg", "imageLink": "https://www.example.com", "buttons": [ { "name":"채널 추가", "linkType": "AC" }, { "name": "버튼01", "linkType": "WL", "linkMobile": "https://m.example.com", "linkPc": "https://www.example.com" } ], "coupon": { "title": "1000원 할인 쿠폰", "description": "설명", "linkMobile": "https://m.example.com" }, "unsubscribePhoneNumber": "080-1234-1234", "unsubscribeAuthNumber": "1234" }'Curl 와이드형
섹션 제목: “Curl 와이드형”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/custom/v1" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "targeting": "I", "kkoChId": "@메시지허브", "chatBubbleType": "WIDE", "callback": "020010001", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용" } ], "recvInfoLst": [ { "cliKey": "text_test", "phone": "01000010001", "userCustomFields": { "key1": "value1", "key2": 123 } } ], "adult": false, "content": "안녕하세요. 브랜드 메시지 WIDE 테스트", "imageUrl": "https://mud-kage.kakao.com/dn/lvkxE/bt....XE/vag.....30/img_l.jpg", "buttons": [ { "name": "버튼01", "linkType": "WL", "linkMobile": "https://m.example.com", "linkPc": "https://www.example.com" } ], "coupon": { "title": "1000원 할인 쿠폰", "description": "설명", "linkMobile": "https://m.example.com" }, "unsubscribePhoneNumber": "080-1234-1234", "unsubscribeAuthNumber": "1234" }'Curl 비디오형
섹션 제목: “Curl 비디오형”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/custom/v1" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "targeting": "I", "kkoChId": "@메시지허브", "chatBubbleType": "PREMIUM_VIDEO", "callback": "020000001", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용" } ], "recvInfoLst": [ { "cliKey": "text_test", "phone": "01000010001", "userCustomFields": { "key1": "value1", "key2": 123 } } ], "adult": false, "content":"내용", "video": { "videoUrl": "https://tv.kakao.com/v/4...54", "thumbnailUrl": "https://mud-kage.kakao.com/dn/lvkxE/bt.....XE/vagk....pQ30/img_l.jpg" }, "header": "템플릿 비디오형 헤더", "buttons": [ { "name": "버튼01", "linkType": "WL", "linkMobile": "https://m.example.com", "linkPc": "https://www.example.com" } ], "coupon": { "title": "1000원 할인 쿠폰", "description": "설명", "linkMobile": "https://m.example.com" }, "unsubscribePhoneNumber": "080-1234-1234", "unsubscribeAuthNumber": "1234" }'Curl 와이드아이템리스트형
섹션 제목: “Curl 와이드아이템리스트형”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/custom/v1" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "targeting": "I", "kkoChId": "@메시지허브", "callback": "020000001", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용" } ], "recvInfoLst": [ { "cliKey": "text_test", "phone": "01000010001", "userCustomFields": { "key1": "value1", "key2": 123 } } ], "chatBubbleType": "WIDE_ITEM_LIST", "adult": false, "header": "아이템리스트 헤더", "wideItemList": [ { "title": "메인아이템 타이틀", "imageUrl": "https://mud-kage.kakao.com/dn/GkEt7/b....6I4/4Vm....dZXbk/img_l.jpg", "linkMobile": "https://m.example.com" }, { "title": "서브아이템 타이틀1", "imageUrl": "https://mud-kage.kakao.com/dn/bx7...Qey06eR5/7V1....0/img_l.jpg", "linkMobile": "https://m.example.com" }, { "title": "서브아이템 타이틀2", "imageUrl": "https://mud-kage.kakao.com/dn/IQTR7/bt...NY/uE....SK/img_l.jpg", "linkMobile": "https://m.example.com" } ], "buttons": [ { "name": "버튼01", "linkType": "WL", "linkMobile": "https://m.example.com", "linkPc": "https://www.example.com" } ], "coupon": { "title": "1000원 할인 쿠폰", "description": "설명", "linkMobile": "https://m.example.com" }, "unsubscribePhoneNumber": "080-1234-1234", "unsubscribeAuthNumber": "1234" }'Curl 캐러셀피드형
섹션 제목: “Curl 캐러셀피드형”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/custom/v1" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "targeting": "I", "kkoChId": "@메시지허브", "callback": "020000001", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용" } ], "recvInfoLst": [ { "cliKey": "text_test", "phone": "01000010001", "userCustomFields": { "key1": "value1", "key2": 123 } } ], "chatBubbleType": "CAROUSEL_FEED", "adult": false, "carousel": { "list": [ { "header": "커머셜리스트 헤더1", "content": "커머셜리스트 내용2", "imageUrl": "https://mud-kage.kakao.com/dn/bx74y0/b....eR5/7V.....e0/img_l.jpg", "buttons": [ { "name": "버튼01", "linkType": "WL", "linkMobile": "https://m.example.com", "linkPc": "https://www.example.com" } ] }, { "header": "커머셜리스트 헤더2", "content": "커머셜리스트 내용2", "imageUrl": "https://mud-kage.kakao.com/dn/IQTR7/bt....NY/u....4SK/img_l.jpg", "buttons": [ { "name": "버튼02", "linkType": "WL", "linkMobile": "https://m.example.com", "linkPc": "https://www.example.com" } ] } ] }, "unsubscribePhoneNumber": "080-1234-1234", "unsubscribeAuthNumber": "1234" }'Curl 캐러셀커머스형
섹션 제목: “Curl 캐러셀커머스형”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/custom/v1" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "targeting": "I", "kkoChId": "@메시지허브", "chatBubbleType": "CAROUSEL_COMMERCE", "callback": "020000001", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용" } ], "recvInfoLst": [ { "cliKey": "text_test", "phone": "01000000001", "userCustomFields": { "key1": "value1", "key2": 123 } } ], "adult": false, "imageUrl": "https://mud-kage.kakao.com/dn/lvkxE/bts...XE/vagk....30/img_l.jpg", "carousel": { "head": { "header": "캐러셀커머스헤드 헤더", "content": "캐러셀커머스헤드 내용, 헤드는 필수값아님", "imageUrl": "https://mud-kage.kakao.com/dn/IQTR7/bts...NY/uEnC....U4SK/img_l.jpg" }, "list": [ { "additionalContent": "캐러셀커머스 부가정보", "imageUrl": "https://mud-kage.kakao.com/dn/bx74y0/bt...R5/7V1...ke0/img_l.jpg", "commerce": { "title": "캐러셀커머스 제목", "regularPrice": 1000, "discountPrice": 500, "discountRate": 50 }, "buttons": [ { "name": "버튼01", "linkType": "WL", "linkMobile": "https://m.example.com", "linkPc": "https://www.example.com" } ] } ], "tail": { "linkMobile": "https://m.example.com", "linkPc": "https://www.example.com" } }, "unsubscribePhoneNumber": "080-1234-1234", "unsubscribeAuthNumber": "1234" }'Curl 커머스형
섹션 제목: “Curl 커머스형”curl -X POST "https://api-send.msghub-qa.uplus.co.kr/kko/brandtalk/custom/v1" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "targeting": "I", "kkoChId": "@메시지허브", "chatBubbleType": "COMMERCE", "callback": "020000001", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "fbInfoLst": [ { "ch": "MMS", "title": "제목", "msg": "MMS 메시지 내용" } ], "recvInfoLst": [ { "cliKey": "text_test", "phone": "01000010001", "userCustomFields": { "key1": "value1", "key2": 123 } } ], "adult": false, "imageUrl": "https://mud-kage.kakao.com/dn/lvkxE/bts...XE/vagk....30/img_l.jpg", "commerce": { "title": "필수", "regularPrice": 1000, "discountPrice": 500, "discountRate": discountRate, discountFixed 중 하나 필수 "discountFixed" : discountRate, discountFixed 중 하나 필수 }, "buttons": [ { "name": "텍스트", "linkType": "WL", "linkMobile": "https://www.naver.com", "linkPc": "https://www.naver.com" } ], "coupon": { "title": "배송비 할인 쿠폰", "linkPc": "", "linkIos": "", "linkMobile": "https://naver.com", "description": "#{할인금액}원 할인 ", "linkAndroid": "" }, "unsubscribePhoneNumber": "080-1234-1234", "unsubscribeAuthNumber": "1234" }'Response
섹션 제목: “Response”예약발송
섹션 제목: “예약발송”{ "code": "10000", "message": "성공", "data": { "regDt": "2025-10-22T17:43:32", "webReqId": "BJ....pT" }}즉시발송
섹션 제목: “즉시발송”{ "code": "10000", "message": "성공", "data": [ { "cliKey": "text_test", "msgKey": "A....2J", "phone": "010.....", "code": "10000", "message": "성공" } ]}Appendix
섹션 제목: “Appendix”Agency 객체
섹션 제목: “Agency 객체”대행사 정보를 포함하는 객체입니다.
| 필드명 | 타입 | 필수 | 설명 |
|---|---|---|---|
| kisaOrigCode | String | - | 재판매사 KISA 최초식별코드 |
| rcsAgencyId | String | - | RBC에 등록된 대행사ID |
| rcsAgencyKey | String | - | RBC에서 발급된 대행사키 |
recvInfoLst 객체
섹션 제목: “recvInfoLst 객체”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| cliKey | String | ● | 클라이언트키 | 30자 |
| phone | String | ● | 수신번호(국제문자 발송 시 맨 앞에 ‘0’이 없어야함) | 20자 |
| mergeData | Object | - | 채널별 개별화메시지 머지데이터 | - |
| userCustomFields | Object | - | 사용자 정의 필드 | - |
fbInfoLst 객체
섹션 제목: “fbInfoLst 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| ch | String | ● | 채널 |
| title | String | - | 제목(MMS의 경우 필수) |
| msg | String | ● | 메시지 |
| fileId | String | - | 파일아이디 (파일 아이디와 파일 아이디 목록 중 1개만 사용 가능) |
| fileIdLst | Array | - | 파일 아이디 목록 (최대 3개) |