---
title: "메시지 발송"
slug: "sens-brandmessage-send"
updated: 2026-04-23T08:55:50Z
published: 2026-04-23T09:02:20Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 메시지 발송

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 요청 헤더](/docs/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오.

#### 요청 경로 파라미터

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `serviceId` | String | Required | Biz Message 서비스 아이디 - [프로젝트 목록 조회](/docs/sens-project-list) 참조 |

#### 요청 바디

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `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 | 메시지 정보: [messages](/docs/sens-brandmessage-send#messages) |
| `reserveTime` | String | Optional | 예약 일시 - YYYY-MM-DD HH:mm 형식 - 예약 발송할 경우, 입력 |
| `reserveTimeZone` | String | Optional | 예약 타임존 - `Asia/Seoul` (기본값) - [타임존 목록](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 참조 |

#### `messages`

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `countryCode` | String | Optional | 국가 코드 - `82` (기본값) - [국제 SMS 발송 국가 목록](https://guide.ncloud-docs.com/docs/sens-smspolicy) 참조 |
| `to` | String | Required | 수신 번호 - 숫자만 입력 가능 |
| `content` | String | Required | 메시지 내용 - 한/영 구분 없이 변수 및 URL 포함 1,300자 이내 입력 - 줄바꿈 최대 99회 - URL 형식 입력 가능 |
| `buttons` | Array | Optional | 버튼 정보: [buttons](/docs/sens-brandmessage-send#buttons) - 쿠폰 사용 시 최대 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 | 버튼 유형 정보: [type](/docs/sens-brandmessage-send#type) |
| `name` | String | Required | 버튼 이름 - 최대 14자 |
| `linkMobile` | String | Conditional | 모바일 웹 링크 - 최대 1,000자 - `type`이 `WL`인 경우, 필수 입력 |
| `linkPc` | String | Optional | PC 웹 링크 - 최대 1,000자 |
| `schemeIos` | String | Conditional | iOS 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `schemeAndroid` | String | Conditional | Android 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `bizFormId` | String | Optional | 비즈니스 폼 아이디 |

#### `type`

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

| 필드 | 타입 | 설명 |
| --- | --- | --- |
| `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 | - | 요청 아이디 |
| `requestTime` | DateTime | - | 요청 일시 - YYYY-MM-DDTHH:mm:ss.sss 형식 |
| `statusCode` | String | - | 요청 상태 코드 - `202`: 성공 - 그 외: 실패 - HTTP Status 규격을 따름 |
| `statusName` | String | - | 상태 - `success` \| `processing` \| `fail` - `success`: 성공 - `processing`: 처리 중 - `fail`: 실패 |
| `messages` | Array | - | 메시지 정보: [messages](/docs/sens-brandmessage-send#messages1) |

#### `messages`

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

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

#### 응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Simple & Easy Notification Service 응답 상태 코드](/docs/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오.

#### 응답 예시

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

```
{
    "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 요청 헤더](/docs/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오.

#### 요청 경로 파라미터

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `serviceId` | String | Required | Biz Message 서비스 아이디 - [프로젝트 목록 조회](/docs/sens-project-list) 참조 |

#### 요청 바디

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `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 | [메시지](/docs/sens-brandmessage-send#messages2) 정보 |
| `reserveTime` | String | Optional | 예약 일시 - YYYY-MM-DD HH:mm 형식 - 예약 발송할 경우, 입력 |
| `reserveTimeZone` | String | Optional | 예약 타임존 - `Asia/Seoul` (기본값) - [타임존 목록](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 참조 |

#### `messages`

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `countryCode` | String | Optional | 국가 코드 - `82` (기본값) - [국제 SMS 발송 국가 목록](https://guide.ncloud-docs.com/docs/sens-smspolicy) 참조 |
| `to` | String | Required | 수신 번호 - 숫자만 입력 가능 |
| `content` | String | Required | 메시지 내용 - 최대 1,300자 - 줄바꿈 최대 99회 - URL 형식 입력 가능 |
| `buttons` | Array | Optional | [버튼](/docs/sens-brandmessage-send#buttons1) 정보 - 최대 5개 - 쿠폰 강조 버튼은 최대 1개만 생성 가능 |
| `image` | Object | Optional | 이미지 정보 - [이미지 목록 조회](/docs/sens-brandmessage-image-list) 참조 |
| `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 | [버튼 유형](/docs/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) 정보 |
| `name` | String | Required | 버튼 이름 - 최대 14자 |
| `linkMobile` | String | Conditional | 모바일 웹 링크 - 최대 1,000자 - `type`이 `WL`인 경우, 필수 입력 |
| `linkPc` | String | Optional | PC 웹 링크 - 최대 1,000자 |
| `schemeIos` | String | Conditional | iOS 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `schemeAndroid` | String | Conditional | Android 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `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 | - | 요청 아이디 |
| `requestTime` | DateTime | - | 요청 일시 - YYYY-MM-DDTHH:mm:ss.sss 형식 |
| `statusCode` | String | - | 요청 상태 코드 - `202`: 성공 - 그 외: 실패 - HTTP Status 규격을 따름 |
| `statusName` | String | - | 상태 - `success` \| `processing` \| `fail` - `success`: 성공 - `processing`: 처리 중 - `fail`: 실패 |
| `messages` | Array | - | [메시지](/docs/sens-brandmessage-send#messages1) 정보 |

#### 응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Simple & Easy Notification Service 응답 상태 코드](/docs/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오.

#### 응답 예시

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

```
{
    "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 요청 헤더](/docs/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오.

#### 요청 경로 파라미터

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `serviceId` | String | Required | Biz Message 서비스 아이디 - [프로젝트 목록 조회](/docs/sens-project-list) 참조 |

#### 요청 바디

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `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 | [메시지](/docs/sens-brandmessage-send#messages3) 정보 |
| `reserveTime` | String | Optional | 예약 일시 - YYYY-MM-DD HH:mm 형식 - 예약 발송할 경우, 입력 |
| `reserveTimeZone` | String | Optional | 예약 타임존 - `Asia/Seoul` (기본값) - [타임존 목록](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 참조 |

#### `messages`

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `countryCode` | String | Optional | 국가 코드 - `82` (기본값) - [국제 SMS 발송 국가 목록](https://guide.ncloud-docs.com/docs/sens-smspolicy) 참조 |
| `to` | String | Required | 수신 번호 - 숫자만 입력 가능 |
| `content` | String | Required | 메시지 내용 - 최대 76자 - 줄바꿈 최대 5회 |
| `buttons` | Array | Optional | [버튼](/docs/sens-brandmessage-send#buttons2) 정보 - 최대 2개 - 쿠폰 강조 버튼은 최대 1개만 생성 가능 |
| `image` | Object | Optional | 이미지 정보 - [이미지 목록 조회](/docs/sens-brandmessage-image-list) 참조 |
| `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 | [버튼 유형](/docs/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) 정보 |
| `name` | String | Required | 버튼 이름 - 최대 8자 |
| `linkMobile` | String | Conditional | 모바일 웹 링크 - 최대 1,000자 - `type`이 `WL`인 경우, 필수 입력 |
| `linkPc` | String | Optional | PC 웹 링크 - 최대 1,000자 |
| `schemeIos` | String | Conditional | iOS 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `schemeAndroid` | String | Conditional | Android 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `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 | - | 요청 아이디 |
| `requestTime` | DateTime | - | 요청 일시 - YYYY-MM-DDTHH:mm:ss.sss 형식 |
| `statusCode` | String | - | 요청 상태 코드 - `202`: 성공 - 그 외: 실패 - HTTP Status 규격을 따름 |
| `statusName` | String | - | 상태 - `success` \| `processing` \| `fail` - `success`: 성공 - `processing`: 처리 중 - `fail`: 실패 |
| `messages` | Array | - | [메시지](/docs/sens-brandmessage-send#messages1) 정보 |

#### 응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Simple & Easy Notification Service 응답 상태 코드](/docs/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오.

#### 응답 예시

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

```
{
    "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 요청 헤더](/docs/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오.

#### 요청 경로 파라미터

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `serviceId` | String | Required | Biz Message 서비스 아이디 - [프로젝트 목록 조회](/docs/sens-project-list) 참조 |

#### 요청 바디

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `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 | [메시지](/docs/sens-brandmessage-send#messages4) 정보 |
| `reserveTime` | String | Optional | 예약 일시 - YYYY-MM-DD HH:mm 형식 - 예약 발송할 경우, 입력 |
| `reserveTimeZone` | String | Optional | 예약 타임존 - `Asia/Seoul` (기본값) - [타임존 목록](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 참조 |

#### `messages`

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `countryCode` | String | Optional | 국가 코드 - `82` (기본값) - [국제 SMS 발송 국가 목록](https://guide.ncloud-docs.com/docs/sens-smspolicy) 참조 |
| `to` | String | Required | 수신 번호 - 숫자만 입력 가능 |
| `headerContent` | String | Required | 헤더(제목) - 최대 20자 - 줄바꿈 불가 |
| `buttons` | Array | Optional | [버튼](/docs/sens-brandmessage-send#buttons3) 정보 - 최대 2개(가로 배열) |
| `item` | Object | Required | 와이드 리스트 정보 |
| `item.list` | Array | Required | [와이드 리스트](/docs/sens-brandmessage-send#itemlist) |
| `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 | [버튼 유형](/docs/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) 정보 |
| `name` | String | Required | 버튼 이름 - 최대 8자 |
| `linkMobile` | String | Conditional | 모바일 웹 링크 - 최대 1,000자 - `type`이 `WL`인 경우, 필수 입력 |
| `linkPc` | String | Optional | PC 웹 링크 - 최대 1,000자 |
| `schemeIos` | String | Conditional | iOS 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `schemeAndroid` | String | Conditional | Android 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `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번째 아이템 - 서브 와이드 아이템 리스트 이미지 - [이미지 목록 조회](/docs/sens-brandmessage-image-list) 참조 |
| `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 | - | 요청 아이디 |
| `requestTime` | DateTime | - | 요청 일시 - YYYY-MM-DDTHH:mm:ss.sss 형식 |
| `statusCode` | String | - | 요청 상태 코드 - `202`: 성공 - 그 외: 실패 - HTTP Status 규격을 따름 |
| `statusName` | String | - | 상태 - `success` \| `processing` \| `fail` - `success`: 성공 - `processing`: 처리 중 - `fail`: 실패 |
| `messages` | Array | - | [메시지](/docs/sens-brandmessage-send#messages1) 정보 |

#### 응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Simple & Easy Notification Service 응답 상태 코드](/docs/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오.

#### 응답 예시

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

```
{
    "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 요청 헤더](/docs/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오.

#### 요청 경로 파라미터

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `serviceId` | String | Required | Biz Message 서비스 아이디 - [프로젝트 목록 조회](/docs/sens-project-list) 참조 |

#### 요청 바디

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `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 | [메시지](/docs/sens-brandmessage-send#messages5) 정보 |
| `reserveTime` | String | Optional | 예약 일시 - YYYY-MM-DD HH:mm 형식 - 예약 발송할 경우, 입력 |
| `reserveTimeZone` | String | Optional | 예약 타임존 - `Asia/Seoul` (기본값) - [타임존 목록](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 참조 |

#### `messages`

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `countryCode` | String | Optional | 국가 코드 - `82` (기본값) - [국제 SMS 발송 국가 목록](https://guide.ncloud-docs.com/docs/sens-smspolicy) 참조 |
| `to` | String | Required | 수신 번호 - 숫자만 입력 가능 |
| `additionalContent` | String | Optional | 부가 정보 - 최대 34자 - 줄바꿈 최대 1회 |
| `buttons` | Array | Required | [buttons](/docs/sens-brandmessage-send#buttons4) 정보 - 최소 1개, 최대 2개 |
| `image` | Object | Optional | 이미지 정보 - [이미지 목록 조회](/docs/sens-brandmessage-image-list) 참조 |
| `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 | [버튼 유형](/docs/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) 정보 |
| `name` | String | Required | 버튼 이름 - 최대 8자 |
| `linkMobile` | String | Conditional | 모바일 웹 링크 - 최대 1,000자 - `type`이 `WL`인 경우, 필수 입력 |
| `linkPc` | String | Optional | PC 웹 링크 - 최대 1,000자 |
| `schemeIos` | String | Conditional | iOS 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `schemeAndroid` | String | Conditional | Android 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `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 | - | 요청 아이디 |
| `requestTime` | DateTime | - | 요청 일시 - YYYY-MM-DDTHH:mm:ss.sss 형식 |
| `statusCode` | String | - | 요청 상태 코드 - `202`: 성공 - 그 외: 실패 - HTTP Status 규격을 따름 |
| `statusName` | String | - | 상태 - `success` \| `processing` \| `fail` - `success`: 성공 - `processing`: 처리 중 - `fail`: 실패 |
| `messages` | Array | - | [메시지](/docs/sens-brandmessage-send#messages1) 정보 |

#### 응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Simple & Easy Notification Service 응답 상태 코드](/docs/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오.

#### 응답 예시

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

```
{
    "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 요청 헤더](/docs/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오.

#### 요청 경로 파라미터

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `serviceId` | String | Required | Biz Message 서비스 아이디 - [프로젝트 목록 조회](/docs/sens-project-list) 참조 |

#### 요청 바디

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `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 | [메시지](/docs/sens-brandmessage-send#messages6) 정보 |
| `reserveTime` | String | Optional | 예약 일시 - YYYY-MM-DD HH:mm 형식 - 예약 발송할 경우, 입력 |
| `reserveTimeZone` | String | Optional | 예약 타임존 - `Asia/Seoul` (기본값) - [타임존 목록](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 참조 |

#### `messages`

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `countryCode` | String | Optional | 국가 코드 - `82` (기본값) - [국제 SMS 발송 국가 목록](https://guide.ncloud-docs.com/docs/sens-smspolicy) 참조 |
| `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 | [캐러셀 리스트](/docs/sens-brandmessage-send#carousellist) - 최소 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](/docs/sens-brandmessage-send#buttons5) - 최소 1개, 최대 2개 |
| `image` | Object | Optional | 이미지 정보 - [이미지 목록 조회](/docs/sens-brandmessage-image-list) 참조 |
| `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 | [버튼 유형](/docs/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) 정보 |
| `name` | String | Required | 버튼 이름 - 최대 8자 |
| `linkMobile` | String | Conditional | 모바일 웹 링크 - 최대 1,000자 - `type`이 `WL`인 경우, 필수 입력 |
| `linkPc` | String | Optional | PC 웹 링크 - 최대 1,000자 |
| `schemeIos` | String | Conditional | iOS 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `schemeAndroid` | String | Conditional | Android 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `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 | - | 요청 아이디 |
| `requestTime` | DateTime | - | 요청 일시 - YYYY-MM-DDTHH:mm:ss.sss 형식 |
| `statusCode` | String | - | 요청 상태 코드 - `202`: 성공 - 그 외: 실패 - HTTP Status 규격을 따름 |
| `statusName` | String | - | 상태 - `success` \| `processing` \| `fail` - `success`: 성공 - `processing`: 처리 중 - `fail`: 실패 |
| `messages` | Array | - | [메시지](/docs/sens-brandmessage-send#messages1) 정보 |

#### 응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Simple & Easy Notification Service 응답 상태 코드](/docs/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오.

#### 응답 예시

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

```
{
    "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 요청 헤더](/docs/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오.

#### 요청 경로 파라미터

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `serviceId` | String | Required | Biz Message 서비스 아이디 - [프로젝트 목록 조회](/docs/sens-project-list) 참조 |

#### 요청 바디

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `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 | [메시지](/docs/sens-brandmessage-send#messages7) 정보 |
| `reserveTime` | String | Optional | 예약 일시 - YYYY-MM-DD HH:mm 형식 - 예약 발송할 경우, 입력 |
| `reserveTimeZone` | String | Optional | 예약 타임존 - `Asia/Seoul` (기본값) - [타임존 목록](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 참조 |

#### `messages`

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `countryCode` | String | Optional | 국가 코드 - `82` (기본값) - [국제 SMS 발송 국가 목록](https://guide.ncloud-docs.com/docs/sens-smspolicy) 참조 |
| `to` | String | Required | 수신 번호 - 숫자만 입력 가능 |
| `carousel` | Object | Required | 캐러셀 정보 |
| `carousel.list` | Array | Required | [캐러셀 리스트](/docs/sens-brandmessage-send#carousellist1) - 최소 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 | [버튼](/docs/sens-brandmessage-send#buttons6) 정보 - 최소 1개, 최대 2개 |
| `image` | Object | Optional | 이미지 정보 - [이미지 목록 조회](/docs/sens-brandmessage-image-list) 참조 |
| `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 | [버튼 유형](/docs/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) 정보 |
| `name` | String | Required | 버튼 이름 - 최대 8자 |
| `linkMobile` | String | Conditional | 모바일 웹 링크 - 최대 1,000자 - `type`이 `WL`인 경우, 필수 입력 |
| `linkPc` | String | Optional | PC 웹 링크 - 최대 1,000자 |
| `schemeIos` | String | Conditional | iOS 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `schemeAndroid` | String | Conditional | Android 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `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 | - | 요청 아이디 |
| `requestTime` | DateTime | - | 요청 일시 - YYYY-MM-DDTHH:mm:ss.sss 형식 |
| `statusCode` | String | - | 요청 상태 코드 - `202`: 성공 - 그 외: 실패 - HTTP Status 규격을 따름 |
| `statusName` | String | - | 상태 - `success` \| `processing` \| `fail` - `success`: 성공 - `processing`: 처리 중 - `fail`: 실패 |
| `messages` | Array | - | [메시지](/docs/sens-brandmessage-send#messages1) 정보 |

#### 응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Simple & Easy Notification Service 응답 상태 코드](/docs/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오.

#### 응답 예시

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

```
{
    "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 요청 헤더](/docs/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오.

#### 요청 경로 파라미터

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `serviceId` | String | Required | Biz Message 서비스 아이디 - [프로젝트 목록 조회](/docs/sens-project-list) 참조 |

#### 요청 바디

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `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 | [메시지](/docs/sens-brandmessage-send#messages8) 정보 |
| `reserveTime` | String | Optional | 예약 일시 - YYYY-MM-DD HH:mm 형식 - 예약 발송할 경우, 입력 |
| `reserveTimeZone` | String | Optional | 예약 타임존 - `Asia/Seoul` (기본값) - [타임존 목록](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 참조 |

#### `messages`

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `countryCode` | String | Optional | 국가 코드 - `82` (기본값) - [국제 SMS 발송 국가 목록](https://guide.ncloud-docs.com/docs/sens-smspolicy) 참조 |
| `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](/docs/sens-brandmessage-send#buttons7) - 최대 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 | [버튼 유형](/docs/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) 정보 |
| `name` | String | Required | 버튼 이름 - 최대 8자 |
| `linkMobile` | String | Conditional | 모바일 웹 링크 - 최대 1,000자 - `type`이 `WL`인 경우, 필수 입력 |
| `linkPc` | String | Optional | PC 웹 링크 - 최대 1,000자 |
| `schemeIos` | String | Conditional | iOS 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `schemeAndroid` | String | Conditional | Android 앱 링크 - 최대 1,000자 - `type`이 `AL`인 경우, 필수 입력 |
| `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 | - | 요청 아이디 |
| `requestTime` | DateTime | - | 요청 일시 - YYYY-MM-DDTHH:mm:ss.sss 형식 |
| `statusCode` | String | - | 요청 상태 코드 - `202`: 성공 - 그 외: 실패 - HTTP Status 규격을 따름 |
| `statusName` | String | - | 상태 - `success` \| `processing` \| `fail` - `success`: 성공 - `processing`: 처리 중 - `fail`: 실패 |
| `messages` | Array | - | [메시지](/docs/sens-brandmessage-send#messages1) 정보 |

#### 응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Simple & Easy Notification Service 응답 상태 코드](/docs/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오.

#### 응답 예시

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

```
{
    "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 요청 헤더](/docs/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)를 참조해 주십시오.

#### 요청 경로 파라미터

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `serviceId` | String | Required | Biz Message 서비스 아이디 - [프로젝트 목록 조회](/docs/sens-project-list) 참조 |

#### 요청 바디

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `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 | [메시지](/docs/sens-brandmessage-send#messages9) 정보 |
| `reserveTime` | String | Optional | 예약 일시 - YYYY-MM-DD HH:mm 형식 - 예약 발송할 경우, 입력 |
| `reserveTimeZone` | String | Optional | 예약 타임존 - `Asia/Seoul` (기본값) - [타임존 목록](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) 참조 |

#### `messages`

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

| 필드 | 타입 | 필수 여부 | 설명 |
| --- | --- | --- | --- |
| `countryCode` | String | Optional | 국가 코드 - `82` (기본값) - [국제 SMS 발송 국가 목록](https://guide.ncloud-docs.com/docs/sens-smspolicy) 참조 |
| `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 | - | 요청 아이디 |
| `requestTime` | DateTime | - | 요청 일시 - YYYY-MM-DDTHH:mm:ss.sss 형식 |
| `statusCode` | String | - | 요청 상태 코드 - `202`: 성공 - 그 외: 실패 - HTTP Status 규격을 따름 |
| `statusName` | String | - | 상태 - `success` \| `processing` \| `fail` - `success`: 성공 - `processing`: 처리 중 - `fail`: 실패 |
| `messages` | Array | - | [메시지](/docs/sens-brandmessage-send#messages1) 정보 |

#### 응답 상태 코드

Simple & Easy Notification Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Simple & Easy Notification Service 응답 상태 코드](/docs/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C)를 참조해 주십시오.

#### 응답 예시

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

```
{
    "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
        }
    ]
}
```
