메시지 발송

Prev Next

Classic/VPC 환경에서 이용 가능합니다.

메시지를 발송합니다. 텍스트, 이미지, 와이드 이미지, 와이드 아이템 리스트, 커머스, 캐러센 커머스, 캐러셀 피드, 프리미엄 동영상, 기본 템플릿 등의 메시지 유형을 지원합니다.

참고
  • 타겟팅 코드를 지정해 메시지 대상의 그룹을 지정할 수 있습니다.
    • M: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의)
    • N: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의) - 채널 친구
    • I: 고객사의 발송 요청 대상 ∩ 채널 친구
  • 브랜드 메시지 사용 신청이 완료된 채널에 한해 타겟팅 코드 M, N 그룹 발송을 사용할 수 있습니다.
  • 타겟팅 코드 M, N 그룹 발송 시, 채널에 지정된 080 무료수신거부번호를 사용합니다.
  • 자유형 발송
    • AC(채널 추가) 버튼을 사용할 수 없습니다.
  • 기본형 발송
    • BC, BT 버튼을 사용할 수 없습니다.
  • 야간 발송 제한이 적용됩니다. (20:50~익일 8:00)

텍스트형 메시지

텍스트형 메시지를 발송합니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /brandmessage/v2/services/{serviceId}/messages

요청 헤더

Simple & Easy Notification Service API에서 공통으로 사용하는 헤더에 대한 정보는 Simple & Easy Notification Service 요청 헤더를 참조해 주십시오.

요청 경로 파라미터

요청 경로 파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
serviceId String Required Biz Message 서비스 아이디

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
plusFriendId String Required 채널 아이디
  • 네이버 클라우드 플랫폼 콘솔의 Simple & Easy Notification Service > Biz MessageBrand > KakaoTalk Channel에서 확인
messageType String Required 메시지 타입
  • TEXT(텍스트형) 입력
  • TEXT | IMAGE | WIDE_IMAGE | WIDE_ITEM_LIST | COMMERCE | CAROUSEL_COMMERCE | CAROUSEL_FEED | PREMIUM_VIDEO
    • TEXT: 텍스트
    • IMAGE: 이미지형
    • WIDE_IMAGE: 와이드 이미지형
    • WIDE_ITEM_LIST: 와이드 리스트형
    • COMMERCE: 커머스형
    • CAROUSEL_COMMERCE: 캐러셀 커머스형
    • CAROUSEL_FEED: 캐러셀 피드형
    • PREMIUM_VIDEO: 프리미엄 동영상형
targeting String Optional 타겟팅 코드
  • M | N | I (기본값)
    • M: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의)
    • N: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의) 중 해당 채널 친구 제외
    • I: 광고성 정보 수신 동의 유저(카카오톡 수신 동의)이면서 해당 채널 친구
isAdult Boolean Optional 대상 연령
  • true | false (기본값)
    • true: 성인용
    • false: 전체 연령용
messages Array Required 메시지 정보
reserveTime String Optional 예약 일시
  • YYYY-MM-DD HH:mm 형식
  • 예약 발송할 경우, 입력
reserveTimeZone String Optional 예약 타임존

messages

messages에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
countryCode String Optional 국가 코드
to String Required 수신 번호
  • 숫자만 입력 가능
content String Required 메시지 내용
  • 한/영 구분 없이 변수 및 URL 포함 1,300자 이내 입력
  • 줄바꿈 최대 99회
  • URL 형식 입력 가능
buttons Array Optional 버튼 정보
  • 쿠폰 사용 시 최대 4개, 그 외 최대 5개
coupon Object Optional 쿠폰 정보
coupon.title String Required 쿠폰 제목
  • 다음 5가지 형식만 사용 가능
    • ${1~99,999,999 이하 숫자}원 할인 쿠폰
    • ${1~100 숫자}% 할인 쿠폰
    • 배송비 할인 쿠폰
    • ${7자 이내} 무료 쿠폰
    • ${7자 이내} UP 쿠폰
coupon.description String Required 쿠폰 설명
  • 최대 12자
  • 줄바꿈 불가
coupon.linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • 웹 URL 입력 시, 나머지 필드는 옵션
coupon.linkPc String Optional PC 웹 링크
  • 최대 1,000자
coupon.schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
coupon.schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
useSmsFailover Boolean Optional SMS 대체 발송 사용 여부
  • true | false
    • true: 사용
    • false: 사용 안 함
  • 기본값: 카카오톡 채널의 설정을 따름
  • 대체 발송이 설정된 카카오톡 채널에서만 사용 가능
failoverConfig Object Optional 대체 발송 설정
failoverConfig.type String Optional 메시지 타입
  • SMS | LMS
    • SMS: SMS 메시지
    • LMS: LMS 메시지
  • 미입력 시 메시지 내용 길이에 따라 자동 적용
    • 90 bytes 이하: SMS
    • 90 bytes 초과: LMS
failoverConfig.from String Optional 발신 번호
  • 콘솔을 통해 등록된 번호만 사용 가능
failoverConfig.subject String Optional 메시지 제목
  • 미입력 시 채널 이름으로 적용
  • LMS에서만 사용 가능
failoverConfig.content String Optional 메시지 내용
  • 미입력 시 content 로 적용

buttons

buttons에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
type Array Required 버튼 유형 정보
name String Required 버튼 이름
  • 최대 14자
linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • typeWL인 경우, 필수 입력
linkPc String Optional PC 웹 링크
  • 최대 1,000자
schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
bizFormId String Optional 비즈니스 폼 아이디

버튼 유형

버튼 유형에 대한 설명은 다음과 같습니다.

필드 타입 설명
WL String 웹 링크
  • http:// 또는 https://로 시작하는 URL
  • linkMobile의 경우, 필수 입력
AL String 앱 링크
  • linkMobile, schemeIos, schemeAndroid 중 2개는 필수 입력
BF String 비즈니스 폼
  • 버튼명(name)에 5가지 형식만 사용 가능
    • 톡에서 설명하기
    • 톡에서 응모하기
    • 톡에서 예약하기
    • TEXT, IMAGE 템플릿의 경우 첫 번째, 그 외에는 마지막 버튼으로만 사용 가능
    • AC 버튼과 함께 사용하는 경우, AC 순서가 우선하며, 첫 번째 버튼 위치에서는 AC -> BF 순서로, 마지막 버튼 위치에서는 BF -> AC 순서로 배치
  • 최대 1개만 사용 가능
AC String 채널 추가
  • TEXT, IMAGE 템플릿의 경우 첫 번째, 그 외에는 마지막 버튼으로만 사용 가능
BK String 봇 키워드
MD String 메시지 전달
BC String 상담톡 전환
  • 상담톡을 이용하는 채널만 사용 가능
BT String 챗봇 전환
  • 카카오 오픈 빌더의 챗봇을 사용하는 채널만 사용 가능

요청 예시

요청 예시는 다음과 같습니다.

curl --location --request POST 'https://sens.apigw.ntruss.com/brandmessage/v2/services/ncp:kkobizmsg:kr:27*********6:sens/messages' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
    "plusFriendId": "@******",
    "messageType":"TEXT",
    "targeting":"I",
    "isAdult":"false",
    "messages": [
      {
        "countryCode": "82",
        "to": "010********",
        "content": "축하 카드",
        "buttons": [
          {
            "type": "WL",
            "name": "홈페이지",
            "linkMobile": "https://******.com/ko/",
            "linkPc": "https://******.com/ko/"
          },
          {
            "type": "WL",
            "name": "블로그",
            "linkMobile": "https://******.com/ko/blog/",
            "linkPc": "https://******.com/ko/blog/"
          }        
        ]
      }
    ]
  }'

응답

응답 형식을 설명합니다.

응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
requestId String Required 요청 아이디
requestTime DateTime Required 요청 일시
  • YYYY-MM-DDTHH:mm:ss.sss 형식
statusCode String Required 요청 상태 코드
  • 202: 성공
  • 그 외: 실패
  • HTTP Status 규격을 따름
statusName String Required 상태
  • success | processing | fail
    • success: 성공
    • processing: 처리 중
    • fail: 실패
messages Array Optional 메시지 정보

messages

messages에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
messageId String Required 메시지 아이디
countryCode String Optional 국가 코드
to String Required 수신 번호
requestStatusCode String Required 요청 상태 코드
  • A000: 성공
  • 그 외: 실패
requestStatusName String Required 요청 상태
  • success | fail
    • success: 성공
    • fail: 실패
requestStatusDesc String Required 요청 상태 설명
useSmsFailover Boolean Required SMS 대체 발송 사용 여부
  • true | false
    • true: 사용
    • false: 사용 안 함

응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Simple & Easy Notification Service 응답 상태 코드를 참조해 주십시오.

응답 예시

응답 예시는 다음과 같습니다.

{
    "requestId": "RBBA-*************-****-********-dDYJgYGe",
    "requestTime": "2025-12-01T17:00:42.572",
    "statusCode": "202",
    "statusName": "processing",
    "messages": [
        {
            "messageId": "f38c01be-****-****-****-3bddf7615aef",
            "countryCode": "82",
            "to": "010********",
            "requestStatusCode": "A000",
            "requestStatusName": "success",
            "requestStatusDesc": "성공",
            "useSmsFailover": false
        }
    ]
}

이미지형 메시지

이미지형 메시지를 발송합니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /brandmessage/v2/services/{serviceId}/messages

요청 헤더

Simple & Easy Notification Service API에서 공통으로 사용하는 헤더에 대한 정보는 Simple & Easy Notification Service 요청 헤더를 참조해 주십시오.

요청 경로 파라미터

요청 경로 파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
serviceId String Required Biz Message 서비스 아이디

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
plusFriendId String Required 채널 아이디
  • 네이버 클라우드 플랫폼 콘솔의 Simple & Easy Notification Service > Biz MessageBrand > KakaoTalk Channel에서 확인
messageType String Required 메시지 타입
  • IMAGE(이미지형) 입력
  • TEXT | IMAGE | WIDE_IMAGE | WIDE_ITEM_LIST | COMMERCE | CAROUSEL_COMMERCE | CAROUSEL_FEED | PREMIUM_VIDEO
    • TEXT: 텍스트
    • IMAGE: 이미지형
    • WIDE_IMAGE: 와이드 이미지형
    • WIDE_ITEM_LIST: 와이드 리스트형
    • COMMERCE: 커머스형
    • CAROUSEL_COMMERCE: 캐러셀 커머스형
    • CAROUSEL_FEED: 캐러셀 피드형
    • PREMIUM_VIDEO: 프리미엄 동영상형
targeting String Optional 타겟팅 코드
  • M | N | I (기본값)
    • M: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의)
    • N: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의) 중 해당 채널 친구 제외
    • I: 광고성 정보 수신 동의 유저(카카오톡 수신 동의)이면서 해당 채널 친구
isAdult Boolean Optional 대상 연령
  • true | false (기본값)
    • true: 성인용
    • false: 전체 연령용
messages Array Required 메시지 정보
reserveTime String Optional 예약 일시
  • YYYY-MM-DD HH:mm 형식
  • 예약 발송할 경우, 입력
reserveTimeZone String Optional 예약 타임존

messages

messages에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
countryCode String Optional 국가 코드
to String Required 수신 번호
  • 숫자만 입력 가능
content String Required 메시지 내용
  • 최대 1,300자
  • 줄바꿈 최대 99회
  • URL 형식 입력 가능
buttons Array Optional 버튼 정보
  • 최대 5개
    • 쿠폰 강조 버튼은 최대 1개만 생성 가능
image Object Optional 이미지 정보
image.imageId String Conditional 이미지 아이디
  • 이미지를 추가하는 경우, 필수 입력
image.imageLink String Conditional 이미지 URL
  • 이미지를 추가하는 경우, 필수 입력
coupon Object Optional 쿠폰 정보
  • 최대 1개
coupon.title String Required 쿠폰 제목
  • 다음 5가지 형식만 사용 가능
    • ${1~99,999,999 이하 숫자}원 할인 쿠폰
    • ${1~100 숫자}% 할인 쿠폰
    • 배송비 할인 쿠폰
    • ${7자 이내} 무료 쿠폰
    • ${7자 이내} UP 쿠폰
coupon.description String Required 쿠폰 설명
  • 최대 12자
  • 줄바꿈 불가
coupon.linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • 웹 URL 입력 시, 나머지 필드는 옵션
coupon.linkPc String Optional PC 웹 링크
  • 최대 1,000자
coupon.schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
coupon.schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
useSmsFailover Boolean Optional SMS 대체 발송 사용 여부
  • true | false
    • true: 사용
    • false: 사용 안 함
  • 기본값: 카카오톡 채널의 설정을 따름
  • 대체 발송이 설정된 카카오톡 채널에서만 사용 가능
failoverConfig Object Optional 대체 발송 설정
failoverConfig.type String Optional 메시지 타입
  • SMS | LMS
    • SMS: SMS 메시지
    • LMS: LMS 메시지
  • 미입력 시 메시지 내용 길이에 따라 자동 적용
    • 90 bytes 이하: SMS
    • 90 bytes 초과: LMS
failoverConfig.from String Optional 발신 번호
  • 콘솔을 통해 등록된 번호만 사용 가능
failoverConfig.subject String Optional 메시지 제목
  • 미입력 시 채널 이름으로 적용
  • LMS에서만 사용 가능
failoverConfig.content String Optional 메시지 내용
  • 미입력 시 content 로 적용

buttons

buttons에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
type Array Required 버튼 유형 정보
name String Required 버튼 이름
  • 최대 14자
linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • typeWL인 경우, 필수 입력
linkPc String Optional PC 웹 링크
  • 최대 1,000자
schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
bizFormId String Optional 비즈니스 폼 아이디

요청 예시

요청 예시는 다음과 같습니다.

curl --location --request POST 'https://sens.apigw.ntruss.com/brandmessage/v2/services/ncp:kkobizmsg:kr:27*********6:sens/messages' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
  "plusFriendId": "@******",
  "messageType":"IMAGE",
  "targeting":"I",
  "isAdult":"false",
  "messages": [
    {
      "countryCode": "82",
      "to": "010********",
      "content": "축하 카드",
      "buttons": [
        {
          "type": "WL",
          "name": "홈페이지",
          "linkMobile": "https://******.com/ko/",
          "linkPc": "https://******.com/ko/"
        },
        {
          "type": "WL",
          "name": "블로그",
          "linkMobile": "https://******.com/ko/blog/",
          "linkPc": "https://******.com/ko/blog/"
        }        
      ],
      "image": {
        "imageId": "88903684-****-****-****-5d6eb410bf30",
        "imageLink": "https://mud-kage.kakao.com/dn/zNW4l/***********/**********************/img_l.jpg"
      }
    }
  ]
}'

응답

응답 형식을 설명합니다.

응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
requestId String Required 요청 아이디
requestTime DateTime Required 요청 일시
  • YYYY-MM-DDTHH:mm:ss.sss 형식
statusCode String Required 요청 상태 코드
  • 202: 성공
  • 그 외: 실패
  • HTTP Status 규격을 따름
statusName String Required 상태
  • success | processing | fail
    • success: 성공
    • processing: 처리 중
    • fail: 실패
messages Array Optional 메시지 정보

응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Simple & Easy Notification Service 응답 상태 코드를 참조해 주십시오.

응답 예시

응답 예시는 다음과 같습니다.

{
    "requestId": "RBBA-*************-****-********-zVDPjteh",
    "requestTime": "2025-12-01T17:45:40.047",
    "statusCode": "202",
    "statusName": "processing",
    "messages": [
        {
            "messageId": "5ba5a7a8-****-****-****-55a76b65f7ec",
            "countryCode": "82",
            "to": "010********",
            "content": "축하 카드",
            "requestStatusCode": "A000",
            "requestStatusName": "success",
            "requestStatusDesc": "성공",
            "useSmsFailover": false
        }
    ]
}

와이드 이미지형 메시지

와이드 이미지형 메시지를 발송합니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /brandmessage/v2/services/{serviceId}/messages

요청 헤더

Simple & Easy Notification Service API에서 공통으로 사용하는 헤더에 대한 정보는 Simple & Easy Notification Service 요청 헤더를 참조해 주십시오.

요청 경로 파라미터

요청 경로 파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
serviceId String Required Biz Message 서비스 아이디

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
plusFriendId String Required 채널 아이디
  • 네이버 클라우드 플랫폼 콘솔의 Simple & Easy Notification Service > Biz MessageBrand > KakaoTalk Channel에서 확인
messageType String Required 메시지 타입
  • WIDE_IMAGE(와이드 이미지형) 입력
  • TEXT | IMAGE | WIDE_IMAGE | WIDE_ITEM_LIST | COMMERCE | CAROUSEL_COMMERCE | CAROUSEL_FEED | PREMIUM_VIDEO
    • TEXT: 텍스트
    • IMAGE: 이미지형
    • WIDE_IMAGE: 와이드 이미지형
    • WIDE_ITEM_LIST: 와이드 리스트형
    • COMMERCE: 커머스형
    • CAROUSEL_COMMERCE: 캐러셀 커머스형
    • CAROUSEL_FEED: 캐러셀 피드형
    • PREMIUM_VIDEO: 프리미엄 동영상형
targeting String Optional 타겟팅 코드
  • M | N | I (기본값)
    • M: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의)
    • N: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의) 중 해당 채널 친구 제외
    • I: 광고성 정보 수신 동의 유저(카카오톡 수신 동의)이면서 해당 채널 친구
isAdult Boolean Optional 대상 연령
  • true | false (기본값)
    • true: 성인용
    • false: 전체 연령용
messages Array Required 메시지 정보
reserveTime String Optional 예약 일시
  • YYYY-MM-DD HH:mm 형식
  • 예약 발송할 경우, 입력
reserveTimeZone String Optional 예약 타임존

messages

messages에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
countryCode String Optional 국가 코드
to String Required 수신 번호
  • 숫자만 입력 가능
content String Required 메시지 내용
  • 최대 76자
  • 줄바꿈 최대 5회
buttons Array Optional 버튼 정보
  • 최대 2개
  • 쿠폰 강조 버튼은 최대 1개만 생성 가능
image Object Optional 이미지 정보
image.imageId String Conditional 이미지 아이디
  • 이미지를 추가하는 경우, 필수 입력
image.imageLink String Conditional 이미지 URL
  • 이미지를 추가하는 경우, 필수 입력
coupon Object Optional 쿠폰 정보
  • 최대 1개
coupon.title String Required 쿠폰 제목
  • 다음 5가지 형식만 사용 가능
    • ${1~99,999,999 이하 숫자}원 할인 쿠폰
    • ${1~100 숫자}% 할인 쿠폰
    • 배송비 할인 쿠폰
    • ${7자 이내} 무료 쿠폰
    • ${7자 이내} UP 쿠폰
coupon.description String Required 쿠폰 설명
  • 최대 8자
  • 줄바꿈 불가
coupon.linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • 웹 URL 입력 시, 나머지 필드는 옵션
coupon.linkPc String Optional PC 웹 링크
  • 최대 1,000자
coupon.schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
coupon.schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
useSmsFailover Boolean Optional SMS 대체 발송 사용 여부
  • true | false
    • true: 사용
    • false: 사용 안 함
  • 기본값: 카카오톡 채널의 설정을 따름
  • 대체 발송이 설정된 카카오톡 채널에서만 사용 가능
failoverConfig Object Optional 대체 발송 설정
failoverConfig.type String Optional 메시지 타입
  • SMS | LMS
    • SMS: SMS 메시지
    • LMS: LMS 메시지
  • 미입력 시 메시지 내용 길이에 따라 자동 적용
    • 90 bytes 이하: SMS
    • 90 bytes 초과: LMS
failoverConfig.from String Optional 발신 번호
  • 콘솔을 통해 등록된 번호만 사용 가능
failoverConfig.subject String Optional 메시지 제목
  • 미입력 시 채널 이름으로 적용
  • LMS에서만 사용 가능
failoverConfig.content String Optional 메시지 내용
  • 미입력 시 content 로 적용

buttons

buttons에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
type Array Required 버튼 유형 정보
name String Required 버튼 이름
  • 최대 8자
linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • typeWL인 경우, 필수 입력
linkPc String Optional PC 웹 링크
  • 최대 1,000자
schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
bizFormId String Optional 비즈니스 폼 아이디

요청 예시

요청 예시는 다음과 같습니다.

curl --location --request POST 'https://sens.apigw.ntruss.com/brandmessage/v2/services/ncp:kkobizmsg:kr:27*********6:sens/messages' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
  "plusFriendId": "@******",
  "messageType":"WIDE_IMAGE",
  "targeting":"I",
  "isAdult":"false",
  "messages": [
    {
      "countryCode": "82",
      "to": "010********",
      "content": "축하 카드",
      "buttons": [
        {
          "type": "WL",
          "name": "홈페이지",
          "linkMobile": "https://******.com/ko/",
          "linkPc": "https://******.com/ko/"
        },
        {
          "type": "WL",
          "name": "블로그",
          "linkMobile": "https://******.com/ko/blog/",
          "linkPc": "https://******.com/ko/blog/"
        }        
      ],
      "image": {
        "imageId": "4983629b-****-****-****-8546230fc8f2",
        "imageLink": "https://mud-kage.kakao.com/dn/JR45M/***********/**********************/img_l.jpg"
      }
    }
  ]
}'

응답

응답 형식을 설명합니다.

응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
requestId String Required 요청 아이디
requestTime DateTime Required 요청 일시
  • YYYY-MM-DDTHH:mm:ss.sss 형식
statusCode String Required 요청 상태 코드
  • 202: 성공
  • 그 외: 실패
  • HTTP Status 규격을 따름
statusName String Required 상태
  • success | processing | fail
    • success: 성공
    • processing: 처리 중
    • fail: 실패
messages Array Optional 메시지 정보

응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Simple & Easy Notification Service 응답 상태 코드를 참조해 주십시오.

응답 예시

응답 예시는 다음과 같습니다.

{
    "requestId": "RBBA-*************-****-********-zVDPjteh",
    "requestTime": "2025-12-02T11:54:21.776",
    "statusCode": "202",
    "statusName": "processing",
    "messages": [
        {
            "messageId": "d8dedd42-****-****-****-2f7b08d080da",
            "countryCode": "82",
            "to": "010********",
            "content": "축하 카드",
            "requestStatusCode": "A000",
            "requestStatusName": "success",
            "requestStatusDesc": "성공",
            "useSmsFailover": false
        }
    ]
}

와이드 아이템 리스트형 메시지

와이드 아이템 리스트형 메시지를 발송합니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /brandmessage/v2/services/{serviceId}/messages

요청 헤더

Simple & Easy Notification Service API에서 공통으로 사용하는 헤더에 대한 정보는 Simple & Easy Notification Service 요청 헤더를 참조해 주십시오.

요청 경로 파라미터

요청 경로 파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
serviceId String Required Biz Message 서비스 아이디

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
plusFriendId String Required 채널 아이디
  • 네이버 클라우드 플랫폼 콘솔의 Simple & Easy Notification Service > Biz MessageBrand > KakaoTalk Channel에서 확인
messageType String Required 메시지 타입
  • WIDE_ITEM_LIST(와이드 아이템 리스트형) 입력
  • TEXT | IMAGE | WIDE_IMAGE | WIDE_ITEM_LIST | COMMERCE | CAROUSEL_COMMERCE | CAROUSEL_FEED | PREMIUM_VIDEO
    • TEXT: 텍스트
    • IMAGE: 이미지형
    • WIDE_IMAGE: 와이드 이미지형
    • WIDE_ITEM_LIST: 와이드 리스트형
    • COMMERCE: 커머스형
    • CAROUSEL_COMMERCE: 캐러셀 커머스형
    • CAROUSEL_FEED: 캐러셀 피드형
    • PREMIUM_VIDEO: 프리미엄 동영상형
targeting String Optional 타겟팅 코드
  • M | N | I (기본값)
    • M: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의)
    • N: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의) 중 해당 채널 친구 제외
    • I: 광고성 정보 수신 동의 유저(카카오톡 수신 동의)이면서 해당 채널 친구
isAdult Boolean Optional 대상 연령
  • true | false (기본값)
    • true: 성인용
    • false: 전체 연령용
messages Array Required 메시지 정보
reserveTime String Optional 예약 일시
  • YYYY-MM-DD HH:mm 형식
  • 예약 발송할 경우, 입력
reserveTimeZone String Optional 예약 타임존

messages

messages에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
countryCode String Optional 국가 코드
to String Required 수신 번호
  • 숫자만 입력 가능
headerContent String Required 헤더(제목)
  • 최대 20자
  • 줄바꿈 불가
buttons Array Optional 버튼 정보
  • 최대 2개(가로 배열)
item Object Required 와이드 리스트 정보
item.list Array Required 와이드 리스트
coupon Object Optional 쿠폰 정보
  • 최대 1개
coupon.title String Required 쿠폰 제목
  • 다음 5가지 형식만 사용 가능
    • ${1~99,999,999 이하 숫자}원 할인 쿠폰
    • ${1~100 숫자}% 할인 쿠폰
    • 배송비 할인 쿠폰
    • ${7자 이내} 무료 쿠폰
    • ${7자 이내} UP 쿠폰
coupon.description String Required 쿠폰 설명
  • 최대 18자
  • 줄바꿈 불가
coupon.linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • 웹 URL 입력 시, 나머지 필드는 옵션
coupon.linkPc String Optional PC 웹 링크
  • 최대 1,000자
coupon.schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
coupon.schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
useSmsFailover Boolean Optional SMS 대체 발송 사용 여부
  • true | false
    • true: 사용
    • false: 사용 안 함
  • 기본값: 카카오톡 채널의 설정을 따름
  • 대체 발송이 설정된 카카오톡 채널에서만 사용 가능
failoverConfig Object Optional 대체 발송 설정
failoverConfig.type String Optional 메시지 타입
  • SMS | LMS
    • SMS: SMS 메시지
    • LMS: LMS 메시지
  • 미입력 시 메시지 내용 길이에 따라 자동 적용
    • 90 bytes 이하: SMS
    • 90 bytes 초과: LMS
failoverConfig.from String Optional 발신 번호
  • 콘솔을 통해 등록된 번호만 사용 가능
failoverConfig.subject String Optional 메시지 제목
  • 미입력 시 채널 이름으로 적용
  • LMS에서만 사용 가능
failoverConfig.content String Optional 메시지 내용
  • 미입력 시 content 로 적용

buttons

buttons에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
type Array Required 버튼 유형 정보
name String Required 버튼 이름
  • 최대 8자
linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • typeWL인 경우, 필수 입력
linkPc String Optional PC 웹 링크
  • 최대 1,000자
schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
bizFormId String Optional 비즈니스 폼 아이디

item.list

item.list에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
title String Required 아이템 제목
  • 1번째 아이템
    • 사용 시, 선택(Optional) 입력
    • 최대 25자
    • 줄바꿈 최대 1회
  • 2~4번째 아이템
    • 사용 시, 필수(Required) 입력
    • 최대 30자
    • 줄바꿈 최대 1회
imageId String Required 이미지 아이디
  • 1번째 아이템
    • 메인 와이드 아이템 리스트 이미지
  • 2~4번째 아이템
    • 서브 와이드 아이템 리스트 이미지
  • 이미지 목록 조회 참조
linkMobile String Required 모바일 웹 링크
  • 최대 1,000자
linPc String Optional PC 웹 링크
  • 최대 1,000자
schemeAndroid String Optional Android 앱 링크
  • 최대 1,000자
schemeIos String Optional iOS 앱 링크
  • 최대 1,000자

요청 예시

요청 예시는 다음과 같습니다.

curl --location --request POST 'https://sens.apigw.ntruss.com/brandmessage/v2/services/ncp:kkobizmsg:kr:27*********6:sens/messages' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
  "plusFriendId": "@******",
  "messageType": "WIDE_ITEM_LIST",
  "targeting":"I",
  "isAdult": "false",
  "messages": [
    {
      "countryCode": "82",
      "to": "010********",
      "headerContent": "축하 카드",
      "buttons": [
        {
          "type": "WL",
          "name": "홈페이지",
          "linkMobile": "https://******.com/ko/",
          "linkPc": "https://******.com/ko/"
        },
        {
          "type": "WL",
          "name": "블로그",
          "linkMobile": "https://******.com/ko/blog/",
          "linkPc": "https://******.com/ko/blog/"
        }
      ],
      "item": {
        "list": [
          {
            "title": "메인",
            "imageId": "34ba283e-****-****-****-db59803ae7eb",
            "linkMobile": "https://******.com/ko/"
          },
          {
            "title": "아이템1",
            "imageId": "67828a69-****-****-****-9026147fe5ee",
            "linkMobile": "https://******.com/ko/"
          },
          {
            "title": "아이템2",
            "imageId": "67828a69-****-****-****-9026147fe5ee",
            "linkMobile": "https://******.com/ko/"
          }
        ]
      }
    }
  ]
}

응답

응답 형식을 설명합니다.

응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
requestId String Required 요청 아이디
requestTime DateTime Required 요청 일시
  • YYYY-MM-DDTHH:mm:ss.sss 형식
statusCode String Required 요청 상태 코드
  • 202: 성공
  • 그 외: 실패
  • HTTP Status 규격을 따름
statusName String Required 상태
  • success | processing | fail
    • success: 성공
    • processing: 처리 중
    • fail: 실패
messages Array Optional 메시지 정보

응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Simple & Easy Notification Service 응답 상태 코드를 참조해 주십시오.

응답 예시

응답 예시는 다음과 같습니다.

{
    "requestId": "RBBA-*************-****-********-zVDPjteh",
    "requestTime": "2025-12-02T13:54:05.618",
    "statusCode": "202",
    "statusName": "processing",
    "messages": [
        {
            "messageId": "a5e6541c-****-****-****-57ab20c82f9e",
            "countryCode": "82",
            "to": "010********",
            "content": null,
            "requestStatusCode": "A000",
            "requestStatusName": "success",
            "requestStatusDesc": "성공",
            "useSmsFailover": false
        }
    ]
}

커머스형 메시지

커머스형(COMMERCE) 메시지를 발송합니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /brandmessage/v2/services/{serviceId}/messages

요청 헤더

Simple & Easy Notification Service API에서 공통으로 사용하는 헤더에 대한 정보는 Simple & Easy Notification Service 요청 헤더를 참조해 주십시오.

요청 경로 파라미터

요청 경로 파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
serviceId String Required Biz Message 서비스 아이디

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
plusFriendId String Required 채널 아이디
  • 네이버 클라우드 플랫폼 콘솔의 Simple & Easy Notification Service > Biz MessageBrand > KakaoTalk Channel에서 확인
messageType String Required 메시지 타입
  • COMMERCE(커머스형) 입력
  • TEXT | IMAGE | WIDE_IMAGE | WIDE_ITEM_LIST | COMMERCE | CAROUSEL_COMMERCE | CAROUSEL_FEED | PREMIUM_VIDEO
    • TEXT: 텍스트
    • IMAGE: 이미지형
    • WIDE_IMAGE: 와이드 이미지형
    • WIDE_ITEM_LIST: 와이드 리스트형
    • COMMERCE: 커머스형
    • CAROUSEL_COMMERCE: 캐러셀 커머스형
    • CAROUSEL_FEED: 캐러셀 피드형
    • PREMIUM_VIDEO: 프리미엄 동영상형
targeting String Optional 타겟팅 코드
  • M | N | I (기본값)
    • M: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의)
    • N: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의) 중 해당 채널 친구 제외
    • I: 광고성 정보 수신 동의 유저(카카오톡 수신 동의)이면서 해당 채널 친구
isAdult Boolean Optional 대상 연령
  • true | false (기본값)
    • true: 성인용
    • false: 전체 연령용
messages Array Required 메시지 정보
reserveTime String Optional 예약 일시
  • YYYY-MM-DD HH:mm 형식
  • 예약 발송할 경우, 입력
reserveTimeZone String Optional 예약 타임존

messages

messages에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
countryCode String Optional 국가 코드
to String Required 수신 번호
  • 숫자만 입력 가능
additionalContent String Optional 부가 정보
  • 최대 34자
  • 줄바꿈 최대 1회
buttons Array Required buttons 정보
  • 최소 1개, 최대 2개
image Object Optional 이미지 정보
image.imageId String Conditional 이미지 아이디
  • 이미지를 추가하는 경우, 필수 입력
image.imageLink String Conditional 이미지 URL
  • 이미지를 추가하는 경우, 필수 입력
commerce Object Required 커머스 정보
commerce.title String Required 상품명
  • 최대 30자
  • 줄바꿈 불가
commerce.regularPrice String Required 정상 가격(원)
  • 0~99,999,999
commerce.discountPrice String Conditional 할인 후 가격(원)
  • 0~99,999,999
commerce.discountRate String Conditional 할인율(%)
  • 0~100
  • 할인율 적용 시 필수 입력
  • commerce.discountFixed 동시 사용 불가
commerce.discountFixed String Conditional 정액 할인 가격(원)
  • 0~999,999
  • 정액 할인 적용 시 필수 입력
  • commerce.discountRate 동시 사용 불가
coupon Object Optional 쿠폰 정보
  • 최대 1개
coupon.title String Required 쿠폰 제목
  • 다음 5가지 형식만 사용 가능
    • ${1~99,999,999 이하 숫자}원 할인 쿠폰
    • ${1~100 숫자}% 할인 쿠폰
    • 배송비 할인 쿠폰
    • ${7자 이내} 무료 쿠폰
    • ${7자 이내} UP 쿠폰
coupon.description String Required 쿠폰 설명
  • 최대 12자
  • 줄바꿈 불가
coupon.linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • 웹 URL 입력 시, 나머지 필드는 옵션
coupon.linkPc String Optional PC 웹 링크
  • 최대 1,000자
coupon.schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
coupon.schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
useSmsFailover Boolean Optional SMS 대체 발송 사용 여부
  • true | false
    • true: 사용
    • false: 사용 안 함
  • 기본값: 카카오톡 채널의 설정을 따름
  • 대체 발송이 설정된 카카오톡 채널에서만 사용 가능
failoverConfig Object Optional 대체 발송 설정
failoverConfig.type String Optional 메시지 타입
  • SMS | LMS
    • SMS: SMS 메시지
    • LMS: LMS 메시지
  • 미입력 시 메시지 내용 길이에 따라 자동 적용
    • 90 bytes 이하: SMS
    • 90 bytes 초과: LMS
failoverConfig.from String Optional 발신 번호
  • 콘솔을 통해 등록된 번호만 사용 가능
failoverConfig.subject String Optional 메시지 제목
  • 미입력 시 채널 이름으로 적용
  • LMS에서만 사용 가능
failoverConfig.content String Optional 메시지 내용
  • 미입력 시 content 로 적용

buttons

buttons에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
type Array Required 버튼 유형 정보
name String Required 버튼 이름
  • 최대 8자
linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • typeWL인 경우, 필수 입력
linkPc String Optional PC 웹 링크
  • 최대 1,000자
schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
bizFormId String Optional 비즈니스 폼 아이디

요청 예시

요청 예시는 다음과 같습니다.

curl --location --request POST 'https://sens.apigw.ntruss.com/brandmessage/v2/services/ncp:kkobizmsg:kr:27*********6:sens/messages' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
  "plusFriendId": "@******",
  "messageType": "COMMERCE",
  "targeting":"I",
  "isAdult": "false",
  "messages": [
    {
      "countryCode": "82",
      "to": "010********",
      "additionalContent": "축하 카드 10% 할인",
      "buttons": [
        {
          "type": "WL",
          "name": "홈페이지",
          "linkMobile": "https://******.com/ko/",
          "linkPc": "https://******.com/ko/"
        },
        {
          "type": "WL",
          "name": "블로그",
          "linkMobile": "https://******.com/ko/blog/",
          "linkPc": "https://******.com/ko/blog/"
        }
      ],
      "image": {
        "imageId": "88903684-****-****-****-5d6eb410bf30",
        "imageLink": "https://mud-kage.kakao.com/dn/zNW4l/***********/**********************/img_l.jpg"
      },
      "commerce": {
        "title":"10% 할인",
        "regularPrice":"10000",
        "discountPrice":"9000",
        "discountRate":"10"
      }      
    }
  ]
}'

응답

응답 형식을 설명합니다.

응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
requestId String Required 요청 아이디
requestTime DateTime Required 요청 일시
  • YYYY-MM-DDTHH:mm:ss.sss 형식
statusCode String Required 요청 상태 코드
  • 202: 성공
  • 그 외: 실패
  • HTTP Status 규격을 따름
statusName String Required 상태
  • success | processing | fail
    • success: 성공
    • processing: 처리 중
    • fail: 실패
messages Array Optional 메시지 정보

응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Simple & Easy Notification Service 응답 상태 코드를 참조해 주십시오.

응답 예시

응답 예시는 다음과 같습니다.

{
    "requestId": "RBBA-*************-****-********-dDYJgYGe",
    "requestTime": "2025-12-02T14:53:14.350",
    "statusCode": "202",
    "statusName": "processing",
    "messages": [
        {
            "messageId": "601df2a9-****-****-****-d5c1b178447e",
            "countryCode": "82",
            "to": "010********",
            "content": null,
            "requestStatusCode": "A000",
            "requestStatusName": "success",
            "requestStatusDesc": "성공",
            "useSmsFailover": false
        }
    ]
}

캐러셀 커머스형 메시지

캐러셀 커머스형 메시지를 발송합니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /brandmessage/v2/services/{serviceId}/messages

요청 헤더

Simple & Easy Notification Service API에서 공통으로 사용하는 헤더에 대한 정보는 Simple & Easy Notification Service 요청 헤더를 참조해 주십시오.

요청 경로 파라미터

요청 경로 파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
serviceId String Required Biz Message 서비스 아이디

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
plusFriendId String Required 채널 아이디
  • 네이버 클라우드 플랫폼 콘솔의 Simple & Easy Notification Service > Biz MessageBrand > KakaoTalk Channel에서 확인
messageType String Required 메시지 타입
  • CAROUSEL_COMMERCE(캐러셀 커머스) 입력
  • TEXT | IMAGE | WIDE_IMAGE | WIDE_ITEM_LIST | COMMERCE | CAROUSEL_COMMERCE | CAROUSEL_FEED | PREMIUM_VIDEO
    • TEXT: 텍스트
    • IMAGE: 이미지형
    • WIDE_IMAGE: 와이드 이미지형
    • WIDE_ITEM_LIST: 와이드 리스트형
    • COMMERCE: 커머스형
    • CAROUSEL_COMMERCE: 캐러셀 커머스형
    • CAROUSEL_FEED: 캐러셀 피드형
    • PREMIUM_VIDEO: 프리미엄 동영상형
targeting String Optional 타겟팅 코드
  • M | N | I (기본값)
    • M: 고객사의 광고성 정보 수신동의 유저(카카오톡 수신 동의)
    • N: 고객사의 광고성 정보 수신동의 유저(카카오톡 수신 동의) 중 해당 채널 친구 제외
    • I: 광고성 정보 수신동의 유저(카카오톡 수신 동의)이면서 해당 채널 친구
isAdult Boolean Optional 대상 연령
  • true | false (기본값)
    • true: 성인용
    • false: 전체 연령용
messages Array Required 메시지 정보
reserveTime String Optional 예약 일시
  • YYYY-MM-DD HH:mm 형식
  • 예약 발송할 경우, 입력
reserveTimeZone String Optional 예약 타임존

messages

messages에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
countryCode String Optional 국가 코드
to String Required 수신 번호
  • 숫자만 입력 가능
carousel Object Required 캐러셀 정보
carousel.head Object Optional 캐러셀 인트로 정보
carousel.head.headerContent String Required 헤더(제목)
  • 최대 20자
  • 줄바꿈 불가
carousel.head.content String Required 내용
  • 최대 50자
  • 줄바꿈 불가
carousel.head.imageId String Required 이미지 아이디
  • CAROUSEL_COMMERCE 타입 이미지만 사용 가능
  • 캐러셀 리스트 이미지와 비율이 동일해야 함
carousel.head.linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • schemeAndroid 또는 schemeIos 사용 시, 필수 입력
carousel.head.linkPc String Optional PC 웹 링크
  • 최대 1,000자
carousel.head.schemeAndroid String Optional Android 앱 링크
  • 최대 1,000자
carousel.head.schemeIos String Optional iOS 앱 링크
  • 최대 1,000자
carousel.list Array Required 캐러셀 리스트
  • 최소 2개, 최대 6개(캐러셀 인트로 포함)
carousel.tail Object Optional 캐러셀 더보기 정보
carousel.tail.linkMobile String Required 모바일 웹 링크
  • 최대 1,000자
carousel.tail.linkPc String Optional PC 웹 링크
  • 최대 1,000자
carousel.tail.schemeAndroid String Optional Android 앱 링크
  • 최대 1,000자
carousel.tail.schemeIos String Optional iOS 앱 링크
  • 최대 1,000자
useSmsFailover Boolean Optional SMS 대체 발송 사용 여부
  • true | false
    • true: 사용
    • false: 사용 안 함
  • 기본값: 카카오톡 채널의 설정을 따름
  • 대체 발송이 설정된 카카오톡 채널에서만 사용 가능
failoverConfig Object Optional 대체 발송 설정
failoverConfig.type String Optional 메시지 타입
  • SMS | LMS
    • SMS: SMS 메시지
    • LMS: LMS 메시지
  • 미입력 시 메시지 내용 길이에 따라 자동 적용
    • 90 bytes 이하: SMS
    • 90 bytes 초과: LMS
failoverConfig.from String Optional 발신 번호
  • 콘솔을 통해 등록된 번호만 사용 가능
failoverConfig.subject String Optional 메시지 제목
  • 미입력 시 채널 이름으로 적용
  • LMS에서만 사용 가능
failoverConfig.content String Optional 메시지 내용
  • 미입력 시 content 로 적용

carousel.list

carousel.list에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
additionalContent String Optional 부가 정보
  • 최대 34자
  • 줄바꿈 최대 1회
buttons Array Required 버튼 정보: buttons
  • 최소 1개, 최대 2개
image Object Optional 이미지 정보
image.imageId String Conditional 이미지 아이디
  • 이미지를 추가하는 경우, 필수 입력
image.imageLink String Conditional 이미지 URL
  • 이미지를 추가하는 경우, 필수 입력
coupon Object Optional 쿠폰 정보
  • 최대 1개
coupon.title String Required 쿠폰 제목
  • 다음 5가지 형식만 사용 가능
    • ${1~99,999,999 이하 숫자}원 할인 쿠폰
    • ${1~100 숫자}% 할인 쿠폰
    • 배송비 할인 쿠폰
    • ${7자 이내} 무료 쿠폰
    • ${7자 이내} UP 쿠폰
coupon.description String Required 쿠폰 설명
  • 최대 12자
  • 줄바꿈 불가
coupon.linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • 웹 URL 입력 시, 나머지 필드는 옵션
coupon.linkPc String Optional PC 웹 링크
  • 최대 1,000자
coupon.schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
coupon.schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
commerce Object Required 커머스 정보
commerce.title String Required 상품명
  • 최대 30자
  • 줄바꿈 불가
commerce.regularPrice Integer Required 정상 가격(원)
  • 0~99,999,999
commerce.discountPrice Integer Conditional 할인 후 가격(원)
  • 0~99,999,999
commerce.discountRate Integer Conditional 할인율(%)
  • 0~100
  • 할인율 적용 시 필수 입력
  • commerce.discountFixed 동시 사용 불가
commerce.discountFixed Integer Conditional 정액 할인 가격(원)
  • 0~999,999
  • 정액 할인 적용 시 필수 입력
  • commerce.discountRate 동시 사용 불가

buttons

buttons에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
type Array Required 버튼 유형 정보
name String Required 버튼 이름
  • 최대 8자
linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • typeWL인 경우, 필수 입력
linkPc String Optional PC 웹 링크
  • 최대 1,000자
schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
bizFormId String Optional 비즈니스 폼 아이디

요청 예시

요청 예시는 다음과 같습니다.

curl --location --request POST 'https://sens.apigw.ntruss.com/brandmessage/v2/services/ncp:kkobizmsg:kr:27*********6:sens/messages' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
  "plusFriendId": "@******",
  "messageType": "CAROUSEL_COMMERCE",
  "targeting":"I",
  "isAdult": "false",
  "messages": [
    {
      "countryCode": "82",
      "to": "010********",
      "carousel": {
        "head": {
            "headerContent":"축하 카드",
            "content":"축하 카드 할인 이벤트",
            "imageId":"cde370b6-****-****-****-6a122739e51f",
            "linkMobile":"https://******.com/ko/"
        },
        "list": [
          {
            "image": {
              "imageId": "cde370b6-****-****-****-6a122739e51f",
              "imageLink": "https://mud-kage.kakao.com/dn/hIaN2/***********/**********************/img_l.jpg"
            },
            "buttons": [
              {
                "type": "WL",
                "name": "홈페이지",
                "linkMobile": "https://******.com/ko/",
                "linkPc": "https://******.com/ko/"
              },
              {
                "type": "WL",
                "name": "블로그",
                "linkMobile": "https://******.com/ko/blog/",
                "linkPc": "https://******.com/ko/blog/"
              }
            ],
            "commerce": {
              "title": "10% 할인",
              "regularPrice": "10000",
              "discountPrice": "9000",
              "discountRate": "10"
            }
          },
          {
            "image": {
              "imageId": "cde370b6-****-****-****-6a122739e51f",
              "imageLink": "https://mud-kage.kakao.com/dn/***********/**********************/img_l.jpg"
            },
            "buttons": [
              {
                "type": "WL",
                "name": "홈페이지",
                "linkMobile": "https://******.com/ko/",
                "linkPc": "https://******.com/ko/"
              },
              {
                "type": "WL",
                "name": "블로그",
                "linkMobile": "https://******.com/ko/blog/",
                "linkPc": "https://******.com/ko/blog/"
              }
            ],
            "commerce": {
              "title": "10% 할인",
              "regularPrice": "10000",
              "discountPrice": "9000",
              "discountRate": "10"
            }
          }
        ],
        "tail": {
          "linkMobile": "https://hansem.com/ko/"
        }
      }
    }
  ]
}'

응답

응답 형식을 설명합니다.

응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
requestId String Required 요청 아이디
requestTime DateTime Required 요청 일시
  • YYYY-MM-DDTHH:mm:ss.sss 형식
statusCode String Required 요청 상태 코드
  • 202: 성공
  • 그 외: 실패
  • HTTP Status 규격을 따름
statusName String Required 상태
  • success | processing | fail
    • success: 성공
    • processing: 처리 중
    • fail: 실패
messages Array Optional 메시지 정보

응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Simple & Easy Notification Service 응답 상태 코드를 참조해 주십시오.

응답 예시

응답 예시는 다음과 같습니다.

{
    "requestId": "RBBA-*************-****-********-zVDPjteh",
    "requestTime": "2025-12-02T15:56:08.336",
    "statusCode": "202",
    "statusName": "processing",
    "messages": [
        {
            "messageId": "89e11238-****-****-****-a400627816af",
            "countryCode": "82",
            "to": "010********",
            "content": null,
            "requestStatusCode": "A000",
            "requestStatusName": "success",
            "requestStatusDesc": "성공",
            "useSmsFailover": false
        }
    ]
}

캐러셀 피드형 메시지

캐러셀 피드형 메시지를 발송합니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /brandmessage/v2/services/{serviceId}/messages

요청 헤더

Simple & Easy Notification Service API에서 공통으로 사용하는 헤더에 대한 정보는 Simple & Easy Notification Service 요청 헤더를 참조해 주십시오.

요청 경로 파라미터

요청 경로 파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
serviceId String Required Biz Message 서비스 아이디

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
plusFriendId String Required 채널 아이디
  • 네이버 클라우드 플랫폼 콘솔의 Simple & Easy Notification Service > Biz MessageBrand > KakaoTalk Channel에서 확인
messageType String Required 메시지 타입
  • CAROUSEL_FEED(캐러셀 피드형) 입력
  • TEXT | IMAGE | WIDE_IMAGE | WIDE_ITEM_LIST | COMMERCE | CAROUSEL_COMMERCE | CAROUSEL_FEED | PREMIUM_VIDEO
    • TEXT: 텍스트
    • IMAGE: 이미지형
    • WIDE_IMAGE: 와이드 이미지형
    • WIDE_ITEM_LIST: 와이드 리스트형
    • COMMERCE: 커머스형
    • CAROUSEL_COMMERCE: 캐러셀 커머스형
    • CAROUSEL_FEED: 캐러셀 피드형
    • PREMIUM_VIDEO: 프리미엄 동영상형
targeting String Optional 타겟팅 코드
  • M | N | I (기본값)
    • M: 고객사의 광고성 정보 수신동의 유저(카카오톡 수신 동의)
    • N: 고객사의 광고성 정보 수신동의 유저(카카오톡 수신 동의) 중 해당 채널 친구 제외
    • I: 광고성 정보 수신동의 유저(카카오톡 수신 동의)이면서 해당 채널 친구
isAdult Boolean Optional 대상 연령
  • true | false (기본값)
    • true: 성인용
    • false: 전체 연령용
messages Array Required 메시지 정보
reserveTime String Optional 예약 일시
  • YYYY-MM-DD HH:mm 형식
  • 예약 발송할 경우, 입력
reserveTimeZone String Optional 예약 타임존

messages

messages에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
countryCode String Optional 국가 코드
to String Required 수신 번호
  • 숫자만 입력 가능
carousel Object Required 캐러셀 정보
carousel.list Array Required 캐러셀 리스트
  • 최소 2개, 최대 6개
carousel.tail Object Optional 캐러셀 더보기 정보
carousel.tail.linkMobile String Required 모바일 웹 링크
  • 최대 1,000자
carousel.tail.linkPc String Optional PC 웹 링크
  • 최대 1,000자
carousel.tail.schemeAndroid String Optional Android 앱 링크
  • 최대 1,000자
carousel.tail.schemeIos String Optional iOS 앱 링크
  • 최대 1,000자
useSmsFailover Boolean Optional SMS 대체 발송 사용 여부
  • true | false
    • true: 사용
    • false: 사용 안 함
  • 기본값: 카카오톡 채널의 설정을 따름
  • 대체 발송이 설정된 카카오톡 채널에서만 사용 가능
failoverConfig Object Optional 대체 발송 설정
failoverConfig.type String Optional 메시지 타입
  • SMS | LMS
    • SMS: SMS 메시지
    • LMS: LMS 메시지
  • 미입력 시 메시지 내용 길이에 따라 자동 적용
    • 90 bytes 이하: SMS
    • 90 bytes 초과: LMS
failoverConfig.from String Optional 발신 번호
  • 콘솔을 통해 등록된 번호만 사용 가능
failoverConfig.subject String Optional 메시지 제목
  • 미입력 시 채널 이름으로 적용
  • LMS에서만 사용 가능
failoverConfig.content String Optional 메시지 내용
  • 미입력 시 content 로 적용

carousel.list

carousel.list에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
headerContent String Required 헤더(제목)
  • 최대 20자
  • 줄바꿈 불가
message String Required 내용
  • 최대 180자
  • 줄바꿈 최대 10회
  • 변수는 #{변수명} 형태로 띄어쓰기 없이 입력
buttons Array Required 버튼 정보
  • 최소 1개, 최대 2개
image Object Optional 이미지 정보
image.imageId String Conditional 이미지 아이디
  • 이미지를 추가하는 경우, 필수 입력
image.imageLink String Conditional 이미지 URL
  • 이미지를 추가하는 경우, 필수 입력
coupon Object Optional 쿠폰 정보
  • 최대 1개
coupon.title String Required 쿠폰 제목
  • 다음 5가지 형식만 사용 가능
    • ${1~99,999,999 이하 숫자}원 할인 쿠폰
    • ${1~100 숫자}% 할인 쿠폰
    • 배송비 할인 쿠폰
    • ${7자 이내} 무료 쿠폰
    • ${7자 이내} UP 쿠폰
coupon.description String Required 쿠폰 설명
  • 최대 12자
  • 줄바꿈 불가
coupon.linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • 웹 URL 입력 시, 나머지 필드는 옵션
coupon.linkPc String Optional PC 웹 링크
  • 최대 1,000자
coupon.schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
coupon.schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션

buttons

buttons에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
type Array Required 버튼 유형 정보
name String Required 버튼 이름
  • 최대 8자
linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • typeWL인 경우, 필수 입력
linkPc String Optional PC 웹 링크
  • 최대 1,000자
schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
bizFormId String Optional 비즈니스 폼 아이디

요청 예시

요청 예시는 다음과 같습니다.

curl --location --request POST 'https://sens.apigw.ntruss.com/brandmessage/v2/services/ncp:kkobizmsg:kr:27*********6:sens/messages' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
  "plusFriendId": @******",
  "messageType": "CAROUSEL_FEED",
  "targeting":"I",
  "isAdult": "false",
  "messages": [
    {
      "countryCode": "82",
      "to": "010********",
      "carousel": {
        "list": [
          {
            "headerContent":"축하 카드1",
            "message":"축하 카드 할인 이벤트1",
            "image": {
            "imageId":"6c4b9ceb-****-****-****-cf550dd5f2e8",
            "imageLink": "https://mud-kage.kakao.com/dn/C2Ft0/***********/**********************/img_l.jpg"
            },
            "buttons": [
              {
                "type": "WL",
                "name": "홈페이지",
                "linkMobile": "https://******.com/ko/",
                "linkPc": "https://******.com/ko/"
              },
              {
                "type": "WL",
                "name": "블로그",
                "linkMobile": "https://******.com/ko/blog/",
                "linkPc": "https://******.com/ko/blog/"
              }
            ],
            "coupon": {
              "title": "10% 할인",
              "description": "10% 할인",
              "linkMobile": "https://******.com/ko/blog/"
            }
          },
          {
            "headerContent":"축하 카드2",
            "message":"축하 카드 할인 이벤트2",
            "image": {
            "imageId":"6c4b9ceb-****-****-****-cf550dd5f2e8",
            "imageLink": "https://mud-kage.kakao.com/dn/C2Ft0/***********/**********************/img_l.jpg"
            },
            "buttons": [
              {
                "type": "WL",
                "name": "홈페이지",
                "linkMobile": "https://******.com/ko/",
                "linkPc": "https://******.com/ko/"
              },
              {
                "type": "WL",
                "name": "블로그",
                "linkMobile": "https://******.com/ko/blog/",
                "linkPc": "https://******.com/ko/blog/"
              }
            ],
            "coupon": {
              "title": "10% 할인",
              "description": "10% 할인",
              "linkMobile": "https://******.com/ko/blog/"
            }
          }
        ],
        "tail": {
          "linkMobile": "https://******.com/ko/"
        }
      }
    }
  ]
}'

응답

응답 형식을 설명합니다.

응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
requestId String Required 요청 아이디
requestTime DateTime Required 요청 일시
  • YYYY-MM-DDTHH:mm:ss.sss 형식
statusCode String Required 요청 상태 코드
  • 202: 성공
  • 그 외: 실패
  • HTTP Status 규격을 따름
statusName String Required 상태
  • success | processing | fail
    • success: 성공
    • processing: 처리 중
    • fail: 실패
messages Array Optional 메시지 정보

응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Simple & Easy Notification Service 응답 상태 코드를 참조해 주십시오.

응답 예시

응답 예시는 다음과 같습니다.

{
    "requestId": "RBBA-*************-****-********-zVDPjteh",
    "requestTime": "2025-12-02T16:43:08.144",
    "statusCode": "202",
    "statusName": "processing",
    "messages": [
        {
            "messageId": "a357721f-****-****-****-6b03cd053dbb",
            "countryCode": "82",
            "to": "010********",
            "content": null,
            "requestStatusCode": "A000",
            "requestStatusName": "success",
            "requestStatusDesc": "성공",
            "useSmsFailover": false
        }
    ]
}

프리미엄 동영상형 메시지

프리미엄 동영상형 메시지를 발송합니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /brandmessage/v2/services/{serviceId}/messages

요청 헤더

Simple & Easy Notification Service API에서 공통으로 사용하는 헤더에 대한 정보는 Simple & Easy Notification Service 요청 헤더를 참조해 주십시오.

요청 경로 파라미터

요청 경로 파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
serviceId String Required Biz Message 서비스 아이디

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
plusFriendId String Required 채널 아이디
  • 네이버 클라우드 플랫폼 콘솔의 Simple & Easy Notification Service > Biz MessageBrand > KakaoTalk Channel에서 확인
messageType String Required 메시지 타입
  • PREMIUM_VIDEO(프리미엄 동영상형) 입력
  • TEXT | IMAGE | WIDE_IMAGE | WIDE_ITEM_LIST | COMMERCE | CAROUSEL_COMMERCE | CAROUSEL_FEED | PREMIUM_VIDEO
    • TEXT: 텍스트
    • IMAGE: 이미지형
    • WIDE_IMAGE: 와이드 이미지형
    • WIDE_ITEM_LIST: 와이드 리스트형
    • COMMERCE: 커머스형
    • CAROUSEL_COMMERCE: 캐러셀 커머스형
    • CAROUSEL_FEED: 캐러셀 피드형
    • PREMIUM_VIDEO: 프리미엄 동영상형
targeting String Optional 타겟팅 코드
  • M | N | I (기본값)
    • M: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의)
    • N: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의) 중 해당 채널 친구 제외
    • I: 광고성 정보 수신 동의 유저(카카오톡 수신 동의)이면서 해당 채널 친구
isAdult Boolean Optional 대상 연령
  • true | false (기본값)
    • true: 성인용
    • false: 전체 연령용
messages Array Required 메시지 정보
reserveTime String Optional 예약 일시
  • YYYY-MM-DD HH:mm 형식
  • 예약 발송할 경우, 입력
reserveTimeZone String Optional 예약 타임존

messages

messages에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
countryCode String Optional 국가 코드
to String Required 수신 번호
  • 숫자만 입력 가능
headerContent String Optional 헤더(제목)
  • 최대 20자
  • 줄바꿈 불가
content String Optional 내용
  • 최대 76자
  • 줄바꿈 최대 5회
video Object Required 동영상 정보
video.thumbnailId String Required 동영상 썸네일용 이미지 아이디
  • 최대 500자
video.videoUrl String Required 카카오TV 동영상 URL
  • 최대 500자
  • 카카오TV에 업로드된 동영상만 사용 가능
buttons Array Optional 버튼 정보: buttons
  • 최대 1개
coupon Object Optional 쿠폰 정보
  • 최대 1개
coupon.title String Required 쿠폰 제목
  • 다음 5가지 형식만 사용 가능
    • ${1~99,999,999 이하 숫자}원 할인 쿠폰
    • ${1~100 숫자}% 할인 쿠폰
    • 배송비 할인 쿠폰
    • ${7자 이내} 무료 쿠폰
    • ${7자 이내} UP 쿠폰
coupon.description String Required 쿠폰 설명
  • 최대 12자
  • 줄바꿈 불가
coupon.linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • 웹 URL 입력 시, 나머지 필드는 옵션
coupon.linkPc String Optional PC 웹 링크
  • 최대 1,000자
coupon.schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
coupon.schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • 채널 쿠폰 URL(형식: alimtalk=coupon://) 입력 시, 나머지 필드는 옵션
useSmsFailover Boolean Optional SMS 대체 발송 사용 여부
  • true | false
    • true: 사용
    • false: 사용 안 함
  • 기본값: 카카오톡 채널의 설정을 따름
  • 대체 발송이 설정된 카카오톡 채널에서만 사용 가능
failoverConfig Object Optional 대체 발송 설정
failoverConfig.type String Optional 메시지 타입
  • SMS | LMS
    • SMS: SMS 메시지
    • LMS: LMS 메시지
  • 미입력 시 메시지 내용 길이에 따라 자동 적용
    • 90 bytes 이하: SMS
    • 90 bytes 초과: LMS
failoverConfig.from String Optional 발신 번호
  • 콘솔을 통해 등록된 번호만 사용 가능
failoverConfig.subject String Optional 메시지 제목
  • 미입력 시 채널 이름으로 적용
  • LMS에서만 사용 가능
failoverConfig.content String Optional 메시지 내용
  • 미입력 시 content 로 적용

buttons

buttons에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
type Array Required 버튼 유형 정보
name String Required 버튼 이름
  • 최대 8자
linkMobile String Conditional 모바일 웹 링크
  • 최대 1,000자
  • typeWL인 경우, 필수 입력
linkPc String Optional PC 웹 링크
  • 최대 1,000자
schemeIos String Conditional iOS 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
schemeAndroid String Conditional Android 앱 링크
  • 최대 1,000자
  • typeAL인 경우, 필수 입력
bizFormId String Optional 비즈니스 폼 아이디

요청 예시

요청 예시는 다음과 같습니다.

curl --location --request POST 'https://sens.apigw.ntruss.com/brandmessage/v2/services/ncp:kkobizmsg:kr:27*********6:sens/messages' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
    "plusFriendId":"@******",
    "messageType":"PREMIUM_VIDEO",
    "targeting":"I",
    "isAdult":false,
    "messages":[
        {
            "countryCode":"82",
            "to":"010********",
            "headerContent":"축하 카드",
            "content":"축하 카드",
            "video": {
                "thumbnailId":"7b8101c8-****-****-****-ad384cb8e215",
                "videoUrl":"https://tv.kakao.com/v/********"
            },
            "buttons":[
                {
                    "type":"WL",
                    "name":"홈페이지",
                    "linkMobile":"https://******.com/ko/"
                }
            ],
            "coupon": {
                "title":"축하 카드 10% 할인",
                "description":"축하 카드 10% 할인 이벤트",
                "linkMobile":"https://******.com/ko/"
            }
        }
    ]
}'

응답

응답 형식을 설명합니다.

응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
requestId String Required 요청 아이디
requestTime DateTime Required 요청 일시
  • YYYY-MM-DDTHH:mm:ss.sss 형식
statusCode String Required 요청 상태 코드
  • 202: 성공
  • 그 외: 실패
  • HTTP Status 규격을 따름
statusName String Required 상태
  • success | processing | fail
    • success: 성공
    • processing: 처리 중
    • fail: 실패
messages Array Optional 메시지 정보

응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Simple & Easy Notification Service 응답 상태 코드를 참조해 주십시오.

응답 예시

응답 예시는 다음과 같습니다.

{
    "requestId": "RBBA-*************-****-********-dDYJgYGe",
    "requestTime": "2025-12-02T17:18:16.512",
    "statusCode": "202",
    "statusName": "processing",
    "messages": [
        {
            "messageId": "9c5063e5-****-****-****-fd10d1aab9c4",
            "countryCode": "82",
            "to": "010********",
            "content": "축하 카드",
            "requestStatusCode": "A000",
            "requestStatusName": "success",
            "requestStatusDesc": "성공",
            "useSmsFailover": false
        }
    ]
}

템플릿 (기본형) 메시지

브랜드 메시지 템플릿(기본형)으로 메시지를 발송합니다.

요청

요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.

메서드 URI
POST /brandmessage/v2/services/{serviceId}/messages

요청 헤더

Simple & Easy Notification Service API에서 공통으로 사용하는 헤더에 대한 정보는 Simple & Easy Notification Service 요청 헤더를 참조해 주십시오.

요청 경로 파라미터

요청 경로 파라미터에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
serviceId String Required Biz Message 서비스 아이디

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
plusFriendId String Required 채널 아이디
  • 네이버 클라우드 플랫폼 콘솔의 Simple & Easy Notification Service > Biz MessageBrand > KakaoTalk Channel에서 확인
messageType String Required 메시지 타입
  • TEXT | IMAGE | WIDE_IMAGE | WIDE_ITEM_LIST | COMMERCE | CAROUSEL_COMMERCE | CAROUSEL_FEED | PREMIUM_VIDEO
    • TEXT: 텍스트
    • IMAGE: 이미지형
    • WIDE_IMAGE: 와이드 이미지형
    • WIDE_ITEM_LIST: 와이드 리스트형
    • COMMERCE: 커머스형
    • CAROUSEL_COMMERCE: 캐러셀 커머스형
    • CAROUSEL_FEED: 캐러셀 피드형
    • PREMIUM_VIDEO: 프리미엄 동영상형
templateCode String Required 메시지 템플릿 코드
  • 네이버 클라우드 플랫폼 콘솔의 Simple & Easy Notification Service > Biz MessageBrand > Message Template에서 확인
targeting String Optional 타겟팅 코드
  • M | N | I (기본값)
    • M: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의)
    • N: 고객사의 광고성 정보 수신 동의 유저(카카오톡 수신 동의) 중 해당 채널 친구 제외
    • I: 광고성 정보 수신 동의 유저(카카오톡 수신 동의)이면서 해당 채널 친구
messages Array Required 메시지 정보
reserveTime String Optional 예약 일시
  • YYYY-MM-DD HH:mm 형식
  • 예약 발송할 경우, 입력
reserveTimeZone String Optional 예약 타임존

messages

messages에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
countryCode String Optional 국가 코드
to String Required 수신 번호
  • 숫자만 입력 가능
templateParameters Object Required 템플릿 파라미터
  • 템플릿 변수 포함 시, 필수 입력
  • <예시> 템플릿 변수명이 #{할인금액}이고, 값이 10000인 경우, "templateParameters": {"할인금액": "10000"}
useSmsFailover Boolean Optional SMS 대체 발송 사용 여부
  • true | false
    • true: 사용
    • false: 사용 안 함
  • 기본값: 카카오톡 채널의 설정을 따름
  • 대체 발송이 설정된 카카오톡 채널에서만 사용 가능
failoverConfig Object Optional 대체 발송 설정
failoverConfig.type String Optional 메시지 타입
  • SMS | LMS
    • SMS: SMS 메시지
    • LMS: LMS 메시지
  • 미입력 시 메시지 내용 길이에 따라 자동 적용
    • 90 bytes 이하: SMS
    • 90 bytes 초과: LMS
failoverConfig.from String Optional 발신 번호
  • 콘솔을 통해 등록된 번호만 사용 가능
failoverConfig.subject String Optional 메시지 제목
  • 미입력 시 채널 이름으로 적용
  • LMS에서만 사용 가능
failoverConfig.content String Optional 메시지 내용
  • 미입력 시 content 로 적용

요청 예시

요청 예시는 다음과 같습니다.

curl --location --request POST 'https://sens.apigw.ntruss.com/brandmessage/v2/services/ncp:kkobizmsg:kr:27*********6:sens/messages' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
    "plusFriendId":"@hckang",
    "messageType":"TEXT",
    "templateCode":"**********7fe153599b210d9e865a**********",
    "targeting":"I",
    "messages":[
        {
            "countryCode":"82",
            "to":"010********",
            "templateParameters": {
                "이름": "홍길동",
                "할인금액": "10000"
            }
        }
    ]
}'

응답

응답 형식을 설명합니다.

응답 바디

응답 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
requestId String Required 요청 아이디
requestTime DateTime Required 요청 일시
  • YYYY-MM-DDTHH:mm:ss.sss 형식
statusCode String Required 요청 상태 코드
  • 202: 성공
  • 그 외: 실패
  • HTTP Status 규격을 따름
statusName String Required 상태
  • success | processing | fail
    • success: 성공
    • processing: 처리 중
    • fail: 실패
messages Array Optional 메시지 정보

응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Simple & Easy Notification Service 응답 상태 코드를 참조해 주십시오.

응답 예시

응답 예시는 다음과 같습니다.

{
    "requestId": "RBBA-*************-****-********-zVDPjteh",
    "requestTime": "2025-12-03T11:44:27.774",
    "statusCode": "202",
    "statusName": "processing",
    "messages": [
        {
            "messageId": "789e27ff-****-****-****-fc50656fe511",
            "countryCode": "82",
            "to": "010********",
            "content": null,
            "requestStatusCode": "A000",
            "requestStatusName": "success",
            "requestStatusDesc": "성공",
            "useSmsFailover": false
        }
    ]
}