--- title: "Send message" slug: "sens-brandmessage-send" updated: 2026-10-08T04:15:17Z published: 2026-10-08T04:15:17Z canonical: "api.ncloud-docs.com/sens-brandmessage-send" --- > ## 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. # Send message Available in Classic and VPC Send a message. It supports message types such as text, image, wide image, wide item list, commerce, carousel commerce, carousel feed, premium video, and default templates. Note - You can specify the group of message recipients by defining targeting codes. - M: Users who have consented to receive promotional information from customers (Kakao Talk consent) - N: Users who have consented to receive promotional information from customers (Kakao Talk consent) - Channel friend - I: Customer's delivery request target ∩ Channel friend - Targeting codes M and N can only be used for channels where the Brand Message subscription has been completed. - When sending group messages to targeting codes M and N, use the 080 call block number designated for the channel. - Free-type sending - The AC (Add channel) button is unavailable. - Send default type - The BC and BT buttons are unavailable. - Nighttime delivery restrictions apply. (8:50 PM to 8:00 AM KST next day) ## Text type message Send a text type message. ### Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | POST | /brandmessage/v2/services/{serviceId}/messages | #### Request headers For information about the request headers common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service request headers](/docs/en/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). #### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `serviceId` | String | Required | Biz Message service ID - See [Get project list](/docs/en/sens-project-list). | #### Request body You can include the following data in the body of your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `plusFriendId` | String | Required | Channel ID - Check from **Simple & Easy Notification Service** > **Biz MessageBrand** > **KakaoTalk Channel** in the NAVER Cloud Platform console. | | `messageType` | String | Required | Message type - Enter `TEXT` (text type). - `TEXT` \| `IMAGE` \| `WIDE_IMAGE` \| `WIDE_ITEM_LIST` \| `COMMERCE` \| `CAROUSEL_COMMERCE` \| `CAROUSEL_FEED` \| `PREMIUM_VIDEO` - `TEXT`: Text - `IMAGE`: Image type - `WIDE_IMAGE`: Wide image type - `WIDE_ITEM_LIST`: Wide list type - `COMMERCE`: Commerce type - `CAROUSEL_COMMERCE`: Carousel commerce type - `CAROUSEL_FEED`: Carousel feed type - `PREMIUM_VIDEO`: Premium video type | | `targeting` | String | Optional | Targeting code - `M` \| `N` \| `I` (default) - `M`: Users who have consented to receive promotional information from customers (Kakao Talk consent). - `N`: Exclude friends of the channel among users who have consented to receive promotional information from customers (Kakao Talk consent). - `I`: Users who have consented to receive promotional information from customers (Kakao Talk consent) and are friends of the channel. | | `isAdult` | Boolean | Optional | Target age - `true` \| `false` (default) - `true`: Adult - `false`: All ages | | `messages` | Array | Required | Message information: [messages](/docs/en/sens-brandmessage-send#messages) | | `reserveTime` | String | Optional | Reserved date and time - YYYY-MM-DD HH:mm format. - Enter for reserved delivery. | | `reserveTimeZone` | String | Optional | Reserved time zone - `Asia/Seoul` (default) - See [Time zone list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). | Note - `reserveTime`: You cannot schedule a reserved message for a time within 10 minutes of the current time. #### `messages` The following describes `messages`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `countryCode` | String | Optional | Country code - `82` (default) - See [List of countries where international SMS can be sent](https://guide.ncloud-docs.com/docs/en/sens-smspolicy). | | `to` | String | Required | Recipient number - Only numbers can be entered. | | `content` | String | Required | Message content - Enter up to 1300 characters including variables and URLs, regardless of language (Korean/English). - Maximum of 99 line breaks - URL format input allowed | | `buttons` | Array | Optional | Button information: [buttons](/docs/en/sens-brandmessage-send#buttons) - Up to 4 when using a coupon; up to 5 otherwise. | | `coupon` | Object | Optional | Coupon information | | `coupon.title` | String | Required | Coupon title - Only the following 5 types are available. - `${Number between 1-99,999,999} KRW discount coupon` - `${Number between 1-100}% discount coupon` - `Shipping fee discount coupon` - `${Up to 7 characters} free coupon` - `${Up to 7 characters} UP coupon` | | `coupon.description` | String | Required | Coupon description - Up to 12 characters - No line breaks | | `coupon.linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters. - When entering a web URL, the remaining fields are optional. | | `coupon.linkPc` | String | Optional | PC web link - Up to 1000 characters | | `coupon.schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `coupon.schemeIos` | String | Conditional | iOS app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `useSmsFailover` | Boolean | Optional | SMS alternative delivery usage - `true` \| `false` - `true`: Enabled. - `false`: Disabled. - Default: Follow the settings of Kakao Talk Channel. - Available only on Kakao Talk Channels where alternative delivery is configured. | | `failoverConfig` | Object | Optional | Alternate delivery settings | | `failoverConfig.type` | String | Optional | Message type - `SMS` \| `LMS` - `SMS`: SMS message. - `LMS`: LMS message. - If not entered, it is automatically applied based on the message length. - Up to 90 bytes: SMS. - Over 90 bytes: LMS. | | `failoverConfig.from` | String | Optional | Caller ID - Only numbers registered via the console can be used. | | `failoverConfig.subject` | String | Optional | Message subject - If not entered, the channel name is applied. - Only available in LMS. | | `failoverConfig.content` | String | Optional | Message content - If not entered, it is applied as `content`. | #### `buttons` The following describes `buttons`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | Array | Required | Button type information: [type](/docs/en/sens-brandmessage-send#type) | | `name` | String | Required | Button name - Up to 14 characters | | `linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters - Required if `type` is `WL` | | `linkPc` | String | Optional | PC web link - Up to 1000 characters | | `schemeIos` | String | Conditional | iOS app link - Up to 1000 characters - Required if `type` is `AL` | | `schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters - Required if `type` is `AL` | | `bizFormId` | String | Optional | Business form ID | #### `type` The following describes `type`. | Field | Type | Description | | --- | --- | --- | | `WL` | String | Web link - URL that starts with http:// or https:// - Required for `linkMobile` | | `AL` | String | App link - Two among `linkMobile`, `schemeIos`, and `schemeAndroid` are required. | | `BF` | String | Business form - Only 5 types are available for the button name (name). - Describe in Talk. - Enter in Talk. - Reserve in Talk. - For `TEXT` and `IMAGE` templates, it is only available as the first button. For others, it is only available as the last button. - When used with AC buttons, AC order takes precedence. In the first button position, AC -> BF order is applied, and in the last button position, BF -> AC order is applied. - Maximum of 1 button can be used. | | `AC` | String | Add channel - For `TEXT` and `IMAGE` templates,it is only available as the first button. For others, it is only available as the last button. | | `BK` | String | Bot keyword | | `MD` | String | Send message | | `BC` | String | Switch to Consultation Talk - Only available for channels using Consultation Talk | | `BT` | String | Switch to chatbot - Only available for channels using Kakao Open Builder's chatbots | #### Request example The request example is as follows: ``` 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": "Congratulation card", "buttons": [ { "type": "WL", "name": "Website", "linkMobile": "https://******.com/ko/", "linkPc": "https://******.com/ko/" }, { "type": "WL", "name": "Blog", "linkMobile": "https://******.com/ko/blog/", "linkPc": "https://******.com/ko/blog/" } ] } ] }' ``` ### Response This section describes the response format. #### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `requestId` | String | - | Request ID | | `requestTime` | DateTime | - | Request date and time - YYYY-MM-DDTHH:mm:ss.sss format | | `statusCode` | String | - | Request status code - `202`: Success. - Others: Failure. - It follows the HTTP status specification. | | `statusName` | String | - | Status - `success` \| `processing` \| `fail` - `success`: Success - `processing`: Processing - `fail`: Failure | | `messages` | Array | - | Message information: [messages](/docs/en/sens-brandmessage-send#messages1) | #### `messages` The following describes `messages`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `messageId` | String | - | Message ID | | `countryCode` | String | - | Country code | | `to` | String | - | Recipient number | | `requestStatusCode` | String | - | Request status code - `A000`: Success - Others: Failure | | `requestStatusName` | String | - | Request status - `success` \| `fail` - `success`: Success - `fail`: Failure | | `requestStatusDesc` | String | - | Request status description | | `useSmsFailover` | Boolean | - | Use of SMS alternative delivery - `true` \| `false` - `true`: Enabled - `false`: Disabled | #### Response status codes For information about the response status codes common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service response status codes](/docs/en/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). #### Response example The response example is as follows: ``` { "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": "Succeeded", "useSmsFailover": false } ] } ``` ## Image type message Send an image type message. ### Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | POST | /brandmessage/v2/services/{serviceId}/messages | #### Request headers For information about the request headers common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service request headers](/docs/en/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). #### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `serviceId` | String | Required | Biz Message service ID - See [Get project list](/docs/en/sens-project-list). | #### Request body You can include the following data in the body of your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `plusFriendId` | String | Required | Channel ID - Check from **Simple & Easy Notification Service** > **Biz MessageBrand** > **KakaoTalk Channel** in the NAVER Cloud Platform console. | | `messageType` | String | Required | Message type - Enter `IMAGE` (image type). - `TEXT` \| `IMAGE` \| `WIDE_IMAGE` \| `WIDE_ITEM_LIST` \| `COMMERCE` \| `CAROUSEL_COMMERCE` \| `CAROUSEL_FEED` \| `PREMIUM_VIDEO` - `TEXT`: Text - `IMAGE`: Image type - `WIDE_IMAGE`: Wide image type - `WIDE_ITEM_LIST`: Wide list type - `COMMERCE`: Commerce type - `CAROUSEL_COMMERCE`: Carousel commerce type - `CAROUSEL_FEED`: Carousel feed type - `PREMIUM_VIDEO`: Premium video type | | `targeting` | String | Optional | Targeting code - `M` \| `N` \| `I` (default) - `M`: Users who have consented to receive promotional information from customers (Kakao Talk consent). - `N`: Exclude friends of the channel among users who have consented to receive promotional information from customers (Kakao Talk consent). - `I`: Users who have consented to receive promotional information from customers (Kakao Talk consent) and are friends of the channel. | | `isAdult` | Boolean | Optional | Target age - `true` \| `false` (default) - `true`: Adult - `false`: All ages | | `messages` | Array | Required | [Message](/docs/en/sens-brandmessage-send#messages2) information | | `reserveTime` | String | Optional | Reserved date and time - YYYY-MM-DD HH:mm format. - Enter for reserved delivery. | | `reserveTimeZone` | String | Optional | Reserved time zone - `Asia/Seoul` (default) - See [Time zone list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). | #### `messages` The following describes `messages`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `countryCode` | String | Optional | Country code - `82` (default) - See [List of countries where international SMS can be sent](https://guide.ncloud-docs.com/docs/en/sens-smspolicy). | | `to` | String | Required | Recipient number - Only numbers can be entered. | | `content` | String | Required | Message content - Up to 1300 characters - Maximum of 99 line breaks - URL format input allowed | | `buttons` | Array | Optional | [Button](/docs/en/sens-brandmessage-send#buttons1) information - Up to 5. - Only one coupon highlight button can be created. | | `image` | Object | Optional | Image information - See [Get image list](/docs/en/sens-brandmessage-image-list). | | `image.imageId` | String | Conditional | Image ID - Required when adding an image | | `image.imageLink` | String | Conditional | Image URL - Required when adding an image | | `coupon` | Object | Optional | Coupon information - Up to 1 | | `coupon.title` | String | Required | Coupon title - Only the following 5 types are available. - `${Number between 1-99,999,999} KRW discount coupon` - `${Number between 1-100}% discount coupon` - `Shipping fee discount coupon` - `${Up to 7 characters} free coupon` - `${Up to 7 characters} UP coupon` | | `coupon.description` | String | Required | Coupon description - Up to 12 characters - No line breaks | | `coupon.linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters. - When entering a web URL, the remaining fields are optional. | | `coupon.linkPc` | String | Optional | PC web link - Up to 1000 characters | | `coupon.schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `coupon.schemeIos` | String | Conditional | iOS app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `useSmsFailover` | Boolean | Optional | SMS alternative delivery usage - `true` \| `false` - `true`: Enabled. - `false`: Disabled. - Default: Follow the settings of Kakao Talk Channel. - Available only on Kakao Talk Channels where alternative delivery is configured. | | `failoverConfig` | Object | Optional | Alternate delivery settings | | `failoverConfig.type` | String | Optional | Message type - `SMS` \| `LMS` - `SMS`: SMS message. - `LMS`: LMS message. - If not entered, it is automatically applied based on the message length. - Up to 90 bytes: SMS. - Over 90 bytes: LMS. | | `failoverConfig.from` | String | Optional | Caller ID - Only numbers registered via the console can be used. | | `failoverConfig.subject` | String | Optional | Message subject - If not entered, the channel name is applied. - Only available in LMS. | | `failoverConfig.content` | String | Optional | Message content - If not entered, it is applied as `content`. | #### `buttons` The following describes `buttons`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | Array | Required | [Button type](/docs/en/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) information | | `name` | String | Required | Button name - Up to 14 characters | | `linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters - Required if `type` is `WL` | | `linkPc` | String | Optional | PC web link - Up to 1000 characters | | `schemeIos` | String | Conditional | iOS app link - Up to 1000 characters - Required if `type` is `AL` | | `schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters - Required if `type` is `AL` | | `bizFormId` | String | Optional | Business form ID | #### Request example The request example is as follows: ``` 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": "Congratulation card", "buttons": [ { "type": "WL", "name": "Website", "linkMobile": "https://******.com/ko/", "linkPc": "https://******.com/ko/" }, { "type": "WL", "name": "Blog", "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" } } ] }' ``` ### Response This section describes the response format. #### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `requestId` | String | - | Request ID | | `requestTime` | DateTime | - | Request date and time - YYYY-MM-DDTHH:mm:ss.sss format | | `statusCode` | String | - | Request status code - `202`: Success. - Others: Failure. - It follows the HTTP status specification. | | `statusName` | String | - | Status - `success` \| `processing` \| `fail` - `success`: Success - `processing`: Processing - `fail`: Failure | | `messages` | Array | - | [Message](/docs/en/sens-brandmessage-send#messages1) information | #### Response status codes For information about the response status codes common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service response status codes](/docs/en/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). #### Response example The response example is as follows: ``` { "requestId": "RBBA-*************-****-********-zVDPjteh", "requestTime": "2025-12-01T17:45:40.047", "statusCode": "202", "statusName": "processing", "messages": [ { "messageId": "5ba5a7a8-****-****-****-55a76b65f7ec", "countryCode": "82", "to": "010********", "content": "Congratulation card", "requestStatusCode": "A000", "requestStatusName": "success", "requestStatusDesc": "Succeeded", "useSmsFailover": false } ] } ``` ## Wide image type message Send a wide image type message. ### Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | POST | /brandmessage/v2/services/{serviceId}/messages | #### Request headers For information about the request headers common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service request headers](/docs/en/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). #### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `serviceId` | String | Required | Biz Message service ID - See [Get project list](/docs/en/sens-project-list). | #### Request body You can include the following data in the body of your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `plusFriendId` | String | Required | Channel ID - Check from **Simple & Easy Notification Service** > **Biz MessageBrand** > **KakaoTalk Channel** in the NAVER Cloud Platform console. | | `messageType` | String | Required | Message type - Enter `WIDE_IMAGE` (wide image type). - `TEXT` \| `IMAGE` \| `WIDE_IMAGE` \| `WIDE_ITEM_LIST` \| `COMMERCE` \| `CAROUSEL_COMMERCE` \| `CAROUSEL_FEED` \| `PREMIUM_VIDEO` - `TEXT`: Text - `IMAGE`: Image type - `WIDE_IMAGE`: Wide image type - `WIDE_ITEM_LIST`: Wide list type - `COMMERCE`: Commerce type - `CAROUSEL_COMMERCE`: Carousel commerce type - `CAROUSEL_FEED`: Carousel feed type - `PREMIUM_VIDEO`: Premium video type | | `targeting` | String | Optional | Targeting code - `M` \| `N` \| `I` (default) - `M`: Users who have consented to receive promotional information from customers (Kakao Talk consent). - `N`: Exclude friends of the channel among users who have consented to receive promotional information from customers (Kakao Talk consent). - `I`: Users who have consented to receive promotional information from customers (Kakao Talk consent) and are friends of the channel. | | `isAdult` | Boolean | Optional | Target age - `true` \| `false` (default) - `true`: Adult - `false`: All ages | | `messages` | Array | Required | [Message](/docs/en/sens-brandmessage-send#messages3) information | | `reserveTime` | String | Optional | Reserved date and time - YYYY-MM-DD HH:mm format. - Enter for reserved delivery. | | `reserveTimeZone` | String | Optional | Reserved time zone - `Asia/Seoul` (default) - See [Time zone list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). | #### `messages` The following describes `messages`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `countryCode` | String | Optional | Country code - `82` (default) - See [List of countries where international SMS can be sent](https://guide.ncloud-docs.com/docs/en/sens-smspolicy). | | `to` | String | Required | Recipient number - Only numbers can be entered. | | `content` | String | Required | Message content - Up to 76 characters - Maximum of 5 line breaks | | `buttons` | Array | Optional | [Button](/docs/en/sens-brandmessage-send#buttons2) information - Up to 2. - Only one coupon highlight button can be created. | | `image` | Object | Optional | Image information - See [Get image list](/docs/en/sens-brandmessage-image-list). | | `image.imageId` | String | Conditional | Image ID - Required when adding an image | | `image.imageLink` | String | Conditional | Image URL - Required when adding an image | | `coupon` | Object | Optional | Coupon information - Up to 1 | | `coupon.title` | String | Required | Coupon title - Only the following 5 types are available. - `${Number between 1-99,999,999} KRW discount coupon` - `${Number between 1-100}% discount coupon` - `Shipping fee discount coupon` - `${Up to 7 characters} free coupon` - `${Up to 7 characters} UP coupon` | | `coupon.description` | String | Required | Coupon description - Up to 8 characters - No line breaks | | `coupon.linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters. - When entering a web URL, the remaining fields are optional. | | `coupon.linkPc` | String | Optional | PC web link - Up to 1000 characters | | `coupon.schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `coupon.schemeIos` | String | Conditional | iOS app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `useSmsFailover` | Boolean | Optional | SMS alternative delivery usage - `true` \| `false` - `true`: Enabled. - `false`: Disabled. - Default: Follow the settings of Kakao Talk Channel. - Available only on Kakao Talk Channels where alternative delivery is configured. | | `failoverConfig` | Object | Optional | Alternate delivery settings | | `failoverConfig.type` | String | Optional | Message type - `SMS` \| `LMS` - `SMS`: SMS message. - `LMS`: LMS message. - If not entered, it is automatically applied based on the message length. - Up to 90 bytes: SMS. - Over 90 bytes: LMS. | | `failoverConfig.from` | String | Optional | Caller ID - Only numbers registered via the console can be used. | | `failoverConfig.subject` | String | Optional | Message subject - If not entered, the channel name is applied. - Only available in LMS. | | `failoverConfig.content` | String | Optional | Message content - If not entered, it is applied as `content`. | #### `buttons` The following describes `buttons`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | Array | Required | [Button type](/docs/en/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) information | | `name` | String | Required | Button name - Up to 8 characters | | `linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters - Required if `type` is `WL` | | `linkPc` | String | Optional | PC web link - Up to 1000 characters | | `schemeIos` | String | Conditional | iOS app link - Up to 1000 characters - Required if `type` is `AL` | | `schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters - Required if `type` is `AL` | | `bizFormId` | String | Optional | Business form ID | #### Request example The request example is as follows: ``` 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": "Congratulation card", "buttons": [ { "type": "WL", "name": "Website", "linkMobile": "https://******.com/ko/", "linkPc": "https://******.com/ko/" }, { "type": "WL", "name": "Blog", "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" } } ] }' ``` ### Response This section describes the response format. #### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `requestId` | String | - | Request ID | | `requestTime` | DateTime | - | Request date and time - YYYY-MM-DDTHH:mm:ss.sss format | | `statusCode` | String | - | Request status code - `202`: Success. - Others: Failure. - It follows the HTTP status specification. | | `statusName` | String | - | Status - `success` \| `processing` \| `fail` - `success`: Success - `processing`: Processing - `fail`: Failure | | `messages` | Array | - | [Message](/docs/en/sens-brandmessage-send#messages1) information | #### Response status codes For information about the response status codes common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service response status codes](/docs/en/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). #### Response example The response example is as follows: ``` { "requestId": "RBBA-*************-****-********-zVDPjteh", "requestTime": "2025-12-02T11:54:21.776", "statusCode": "202", "statusName": "processing", "messages": [ { "messageId": "d8dedd42-****-****-****-2f7b08d080da", "countryCode": "82", "to": "010********", "content": "Congratulation card", "requestStatusCode": "A000", "requestStatusName": "success", "requestStatusDesc": "Succeeded", "useSmsFailover": false } ] } ``` ## Wide item list type message Send a wide item list type message. ### Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | POST | /brandmessage/v2/services/{serviceId}/messages | #### Request headers For information about the request headers common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service request headers](/docs/en/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). #### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `serviceId` | String | Required | Biz Message service ID - See [Get project list](/docs/en/sens-project-list). | #### Request body You can include the following data in the body of your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `plusFriendId` | String | Required | Channel ID - Check from **Simple & Easy Notification Service** > **Biz MessageBrand** > **KakaoTalk Channel** in the NAVER Cloud Platform console. | | `messageType` | String | Required | Message type - Enter `WIDE_ITEM_LIST` (wide item list type). - `TEXT` \| `IMAGE` \| `WIDE_IMAGE` \| `WIDE_ITEM_LIST` \| `COMMERCE` \| `CAROUSEL_COMMERCE` \| `CAROUSEL_FEED` \| `PREMIUM_VIDEO` - `TEXT`: Text - `IMAGE`: Image type - `WIDE_IMAGE`: Wide image type - `WIDE_ITEM_LIST`: Wide list type - `COMMERCE`: Commerce type - `CAROUSEL_COMMERCE`: Carousel commerce type - `CAROUSEL_FEED`: Carousel feed type - `PREMIUM_VIDEO`: Premium video type | | `targeting` | String | Optional | Targeting code - `M` \| `N` \| `I` (default) - `M`: Users who have consented to receive promotional information from customers (Kakao Talk consent). - `N`: Exclude friends of the channel among users who have consented to receive promotional information from customers (Kakao Talk consent). - `I`: Users who have consented to receive promotional information from customers (Kakao Talk consent) and are friends of the channel. | | `isAdult` | Boolean | Optional | Target age - `true` \| `false` (default) - `true`: Adult - `false`: All ages | | `messages` | Array | Required | [Message](/docs/en/sens-brandmessage-send#messages4) information | | `reserveTime` | String | Optional | Reserved date and time - YYYY-MM-DD HH:mm format. - Enter for reserved delivery. | | `reserveTimeZone` | String | Optional | Reserved time zone - `Asia/Seoul` (default) - See [Time zone list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). | #### `messages` The following describes `messages`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `countryCode` | String | Optional | Country code - `82` (default) - See [List of countries where international SMS can be sent](https://guide.ncloud-docs.com/docs/en/sens-smspolicy). | | `to` | String | Required | Recipient number - Only numbers can be entered. | | `headerContent` | String | Required | Header (subject) - Up to 20 characters - No line breaks | | `buttons` | Array | Optional | [Button](/docs/en/sens-brandmessage-send#buttons3) information - Up to 2 (horizontal arrangement) | | `item` | Object | Required | Wide list information | | `item.list` | Array | Required | [Wide list](/docs/en/sens-brandmessage-send#itemlist) | | `coupon` | Object | Optional | Coupon information - Up to 1 | | `coupon.title` | String | Required | Coupon title - Only the following 5 types are available. - `${Number between 1-99,999,999} KRW discount coupon` - `${Number between 1-100}% discount coupon` - `Shipping fee discount coupon` - `${Up to 7 characters} free coupon` - `${Up to 7 characters} UP coupon` | | `coupon.description` | String | Required | Coupon description - Up to 18 characters - No line breaks | | `coupon.linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters. - When entering a web URL, the remaining fields are optional. | | `coupon.linkPc` | String | Optional | PC web link - Up to 1000 characters | | `coupon.schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `coupon.schemeIos` | String | Conditional | iOS app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `useSmsFailover` | Boolean | Optional | SMS alternative delivery usage - `true` \| `false` - `true`: Enabled. - `false`: Disabled. - Default: Follow the settings of Kakao Talk Channel. - Available only on Kakao Talk Channels where alternative delivery is configured. | | `failoverConfig` | Object | Optional | Alternate delivery settings | | `failoverConfig.type` | String | Optional | Message type - `SMS` \| `LMS` - `SMS`: SMS message. - `LMS`: LMS message. - If not entered, it is automatically applied based on the message length. - Up to 90 bytes: SMS. - Over 90 bytes: LMS. | | `failoverConfig.from` | String | Optional | Caller ID - Only numbers registered via the console can be used. | | `failoverConfig.subject` | String | Optional | Message subject - If not entered, the channel name is applied. - Only available in LMS. | | `failoverConfig.content` | String | Optional | Message content - If not entered, it is applied as `content`. | #### `buttons` The following describes `buttons`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | Array | Required | [Button type](/docs/en/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) information | | `name` | String | Required | Button name - Up to 8 characters | | `linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters - Required if `type` is `WL` | | `linkPc` | String | Optional | PC web link - Up to 1000 characters | | `schemeIos` | String | Conditional | iOS app link - Up to 1000 characters - Required if `type` is `AL` | | `schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters - Required if `type` is `AL` | | `bizFormId` | String | Optional | Business form ID | #### `item.list` The following describes `item.list`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `title` | String | Required | Item title - 1st item - Optional when using - Up to 25 characters - Maximum of 1 line break - 2nd-4th item - Required when using - Up to 30 characters - Maximum of 1 line break | | `imageId` | String | Required | Image ID - 1st item. - Main wide item list image. - 2nd-4th item. - Sub wide item list image. - See [Get image list](/docs/en/sens-brandmessage-image-list). | | `linkMobile` | String | Required | Mobile web link - Up to 1000 characters | | `linPc` | String | Optional | PC web link - Up to 1000 characters | | `schemeAndroid` | String | Optional | Android app link - Up to 1000 characters | | `schemeIos` | String | Optional | iOS app link - Up to 1000 characters | #### Request example The request example is as follows: ``` 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": "Congratulation card", "buttons": [ { "type": "WL", "name": "Website", "linkMobile": "https://******.com/ko/", "linkPc": "https://******.com/ko/" }, { "type": "WL", "name": "Blog", "linkMobile": "https://******.com/ko/blog/", "linkPc": "https://******.com/ko/blog/" } ], "item": { "list": [ { "title": "Main", "imageId": "34ba283e-****-****-****-db59803ae7eb", "linkMobile": "https://******.com/ko/" }, { "title": "Item 1", "imageId": "67828a69-****-****-****-9026147fe5ee", "linkMobile": "https://******.com/ko/" }, { "title": "Item 2", "imageId": "67828a69-****-****-****-9026147fe5ee", "linkMobile": "https://******.com/ko/" } ] } } ] } ``` ### Response This section describes the response format. #### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `requestId` | String | - | Request ID | | `requestTime` | DateTime | - | Request date and time - YYYY-MM-DDTHH:mm:ss.sss format | | `statusCode` | String | - | Request status code - `202`: Success. - Others: Failure. - It follows the HTTP status specification. | | `statusName` | String | - | Status - `success` \| `processing` \| `fail` - `success`: Success - `processing`: Processing - `fail`: Failure | | `messages` | Array | - | [Message](/docs/en/sens-brandmessage-send#messages1) information | #### Response status codes For information about the response status codes common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service response status codes](/docs/en/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). #### Response example The response example is as follows: ``` { "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": "Succeeded", "useSmsFailover": false } ] } ``` ## Commerce type message Send a commerce type message. ### Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | POST | /brandmessage/v2/services/{serviceId}/messages | #### Request headers For information about the request headers common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service request headers](/docs/en/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). #### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `serviceId` | String | Required | Biz Message service ID - See [Get project list](/docs/en/sens-project-list). | #### Request body You can include the following data in the body of your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `plusFriendId` | String | Required | Channel ID - Check from **Simple & Easy Notification Service** > **Biz MessageBrand** > **KakaoTalk Channel** in the NAVER Cloud Platform console. | | `messageType` | String | Required | Message type - Enter `COMMERCE` (commerce type). - `TEXT` \| `IMAGE` \| `WIDE_IMAGE` \| `WIDE_ITEM_LIST` \| `COMMERCE` \| `CAROUSEL_COMMERCE` \| `CAROUSEL_FEED` \| `PREMIUM_VIDEO` - `TEXT`: Text - `IMAGE`: Image type - `WIDE_IMAGE`: Wide image type - `WIDE_ITEM_LIST`: Wide list type - `COMMERCE`: Commerce type - `CAROUSEL_COMMERCE`: Carousel commerce type - `CAROUSEL_FEED`: Carousel feed type - `PREMIUM_VIDEO`: Premium video type | | `targeting` | String | Optional | Targeting code - `M` \| `N` \| `I` (default) - `M`: Users who have consented to receive promotional information from customers (Kakao Talk consent). - `N`: Exclude friends of the channel among users who have consented to receive promotional information from customers (Kakao Talk consent). - `I`: Users who have consented to receive promotional information from customers (Kakao Talk consent) and are friends of the channel. | | `isAdult` | Boolean | Optional | Target age - `true` \| `false` (default) - `true`: Adult - `false`: All ages | | `messages` | Array | Required | [Message](/docs/en/sens-brandmessage-send#messages5) information | | `reserveTime` | String | Optional | Reserved date and time - YYYY-MM-DD HH:mm format. - Enter for reserved delivery. | | `reserveTimeZone` | String | Optional | Reserved time zone - `Asia/Seoul` (default) - See [Time zone list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). | #### `messages` The following describes `messages`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `countryCode` | String | Optional | Country code - `82` (default) - See [List of countries where international SMS can be sent](https://guide.ncloud-docs.com/docs/en/sens-smspolicy). | | `to` | String | Required | Recipient number - Only numbers can be entered. | | `additionalContent` | String | Optional | Additional information - Up to 34 characters - Maximum of 1 line break | | `buttons` | Array | Required | [buttons](/docs/en/sens-brandmessage-send#buttons4) information - Minimum of 1, maximum of 2 | | `image` | Object | Optional | Image information - See [Get image list](/docs/en/sens-brandmessage-image-list). | | `image.imageId` | String | Conditional | Image ID - Required when adding an image | | `image.imageLink` | String | Conditional | Image URL - Required when adding an image | | `commerce` | Object | Required | Commerce information | | `commerce.title` | String | Required | Product name - Up to 30 characters - No line breaks | | `commerce.regularPrice` | String | Required | Regular price (KRW) - 0-99,999,999 | | `commerce.discountPrice` | String | Conditional | Price after discount (KRW) - 0-9,999,999 | | `commerce.discountRate` | String | Conditional | Discount rate (%) - 0-100 - Required when applying discount rate. - Can't be used at the same time with `commerce.discountFixed`. | | `commerce.discountFixed` | String | Conditional | Fixed discount price (KRW) - 0-999,999 - Required when applying fixed discount. - Can't be used at the same time with `commerce.discountRate`. | | `coupon` | Object | Optional | Coupon information - Up to 1 | | `coupon.title` | String | Required | Coupon title - Only the following 5 types are available. - `${Number between 1-99,999,999} KRW discount coupon` - `${Number between 1-100}% discount coupon` - `Shipping fee discount coupon` - `${Up to 7 characters} free coupon` - `${Up to 7 characters} UP coupon` | | `coupon.description` | String | Required | Coupon description - Up to 12 characters - No line breaks | | `coupon.linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters. - When entering a web URL, the remaining fields are optional. | | `coupon.linkPc` | String | Optional | PC web link - Up to 1000 characters | | `coupon.schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `coupon.schemeIos` | String | Conditional | iOS app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `useSmsFailover` | Boolean | Optional | SMS alternative delivery usage - `true` \| `false` - `true`: Enabled. - `false`: Disabled. - Default: Follow the settings of Kakao Talk Channel. - Available only on Kakao Talk Channels where alternative delivery is configured. | | `failoverConfig` | Object | Optional | Alternate delivery settings | | `failoverConfig.type` | String | Optional | Message type - `SMS` \| `LMS` - `SMS`: SMS message. - `LMS`: LMS message. - If not entered, it is automatically applied based on the message length. - Up to 90 bytes: SMS. - Over 90 bytes: LMS. | | `failoverConfig.from` | String | Optional | Caller ID - Only numbers registered via the console can be used. | | `failoverConfig.subject` | String | Optional | Message subject - If not entered, the channel name is applied. - Only available in LMS. | | `failoverConfig.content` | String | Optional | Message content - If not entered, it is applied as `content`. | #### `buttons` The following describes `buttons`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | Array | Required | [Button type](/docs/en/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) information | | `name` | String | Required | Button name - Up to 8 characters | | `linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters - Required if `type` is `WL` | | `linkPc` | String | Optional | PC web link - Up to 1000 characters | | `schemeIos` | String | Conditional | iOS app link - Up to 1000 characters - Required if `type` is `AL` | | `schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters - Required if `type` is `AL` | | `bizFormId` | String | Optional | Business form ID | #### Request example The request example is as follows: ``` 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": "Congratulation card - 10% discount", "buttons": [ { "type": "WL", "name": "Website", "linkMobile": "https://******.com/ko/", "linkPc": "https://******.com/ko/" }, { "type": "WL", "name": "Blog", "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% discount", "regularPrice":"10000", "discountPrice":"9000", "discountRate":"10" } } ] }' ``` ### Response This section describes the response format. #### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `requestId` | String | - | Request ID | | `requestTime` | DateTime | - | Request date and time - YYYY-MM-DDTHH:mm:ss.sss format | | `statusCode` | String | - | Request status code - `202`: Success. - Others: Failure. - It follows the HTTP status specification. | | `statusName` | String | - | Status - `success` \| `processing` \| `fail` - `success`: Success - `processing`: Processing - `fail`: Failure | | `messages` | Array | - | [Message](/docs/en/sens-brandmessage-send#messages1) information | #### Response status codes For information about the response status codes common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service response status codes](/docs/en/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). #### Response example The response example is as follows: ``` { "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": "Succeeded", "useSmsFailover": false } ] } ``` ## Carousel commerce type message Send a carousel commerce type message. ### Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | POST | /brandmessage/v2/services/{serviceId}/messages | #### Request headers For information about the request headers common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service request headers](/docs/en/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). #### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `serviceId` | String | Required | Biz Message service ID - See [Get project list](/docs/en/sens-project-list). | #### Request body You can include the following data in the body of your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `plusFriendId` | String | Required | Channel ID - Check from **Simple & Easy Notification Service** > **Biz MessageBrand** > **KakaoTalk Channel** in the NAVER Cloud Platform console. | | `messageType` | String | Required | Message type - Enter `CAROUSEL_COMMERCE` (carousel commerce type). - `TEXT` \| `IMAGE` \| `WIDE_IMAGE` \| `WIDE_ITEM_LIST` \| `COMMERCE` \| `CAROUSEL_COMMERCE` \| `CAROUSEL_FEED` \| `PREMIUM_VIDEO` - `TEXT`: Text - `IMAGE`: Image type - `WIDE_IMAGE`: Wide image type - `WIDE_ITEM_LIST`: Wide list type - `COMMERCE`: Commerce type - `CAROUSEL_COMMERCE`: Carousel commerce type - `CAROUSEL_FEED`: Carousel feed type - `PREMIUM_VIDEO`: Premium video type | | `targeting` | String | Optional | Targeting code - `M` \| `N` \| `I` (default) - `M`: Users who have consented to receive promotional information from customers (Kakao Talk consent). - `N`: Exclude friends of the channel among users who have consented to receive promotional information from customers (Kakao Talk consent). - `I`: Users who have consented to receive promotional information from customers (Kakao Talk consent) and are friends of the channel. | | `isAdult` | Boolean | Optional | Target age - `true` \| `false` (default) - `true`: Adult - `false`: All ages | | `messages` | Array | Required | [Message](/docs/en/sens-brandmessage-send#messages6) information | | `reserveTime` | String | Optional | Reserved date and time - YYYY-MM-DD HH:mm format. - Enter for reserved delivery. | | `reserveTimeZone` | String | Optional | Reserved time zone - `Asia/Seoul` (default) - See [Time zone list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). | #### `messages` The following describes `messages`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `countryCode` | String | Optional | Country code - `82` (default) - See [List of countries where international SMS can be sent](https://guide.ncloud-docs.com/docs/en/sens-smspolicy). | | `to` | String | Required | Recipient number - Only numbers can be entered. | | `carousel` | Object | Required | Carousel information | | `carousel.head` | Object | Optional | Carousel intro information | | `carousel.head.headerContent` | String | Required | Header (subject) - Up to 20 characters - No line breaks | | `carousel.head.content` | String | Required | Content - Up to 50 characters - No line breaks | | `carousel.head.imageId` | String | Required | Image ID - Only `CAROUSEL_COMMERCE` type images are available. - It must have the same aspect ratio as the carousel list image. | | `carousel.head.linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters - Required when using `schemeAndroid` or `schemeIos` | | `carousel.head.linkPc` | String | Optional | PC web link - Up to 1000 characters | | `carousel.head.schemeAndroid` | String | Optional | Android app link - Up to 1000 characters | | `carousel.head.schemeIos` | String | Optional | iOS app link - Up to 1000 characters | | `carousel.list` | Array | Required | [Carousel list](/docs/en/sens-brandmessage-send#carousellist) - Minimum of 2, maximum of 6 (including carousel intro) | | `carousel.tail` | Object | Optional | Carousel details information | | `carousel.tail.linkMobile` | String | Required | Mobile web link - Up to 1000 characters | | `carousel.tail.linkPc` | String | Optional | PC web link - Up to 1000 characters | | `carousel.tail.schemeAndroid` | String | Optional | Android app link - Up to 1000 characters | | `carousel.tail.schemeIos` | String | Optional | iOS app link - Up to 1000 characters | | `useSmsFailover` | Boolean | Optional | SMS alternative delivery usage - `true` \| `false` - `true`: Enabled. - `false`: Disabled. - Default: Follow the settings of Kakao Talk Channel. - Available only on Kakao Talk Channels where alternative delivery is configured. | | `failoverConfig` | Object | Optional | Alternate delivery settings | | `failoverConfig.type` | String | Optional | Message type - `SMS` \| `LMS` - `SMS`: SMS message. - `LMS`: LMS message. - If not entered, it is automatically applied based on the message length. - Up to 90 bytes: SMS. - Over 90 bytes: LMS. | | `failoverConfig.from` | String | Optional | Caller ID - Only numbers registered via the console can be used. | | `failoverConfig.subject` | String | Optional | Message subject - If not entered, the channel name is applied. - Only available in LMS. | | `failoverConfig.content` | String | Optional | Message content - If not entered, it is applied as `content`. | #### `carousel.list` The following describes `carousel.list`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `additionalContent` | String | Optional | Additional information - Up to 34 characters - Maximum of 1 line break | | `buttons` | Array | Required | Button information: [buttons](/docs/en/sens-brandmessage-send#buttons5) - Minimum of 1, maximum of 2 | | `image` | Object | Optional | Image information - See [Get image list](/docs/en/sens-brandmessage-image-list). | | `image.imageId` | String | Conditional | Image ID - Required when adding an image | | `image.imageLink` | String | Conditional | Image URL - Required when adding an image | | `coupon` | Object | Optional | Coupon information - Up to 1 | | `coupon.title` | String | Required | Coupon title - Only the following 5 types are available. - `${Number between 1-99,999,999} KRW discount coupon` - `${Number between 1-100}% discount coupon` - `Shipping fee discount coupon` - `${Up to 7 characters} free coupon` - `${Up to 7 characters} UP coupon` | | `coupon.description` | String | Required | Coupon description - Up to 12 characters - No line breaks | | `coupon.linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters. - When entering a web URL, the remaining fields are optional. | | `coupon.linkPc` | String | Optional | PC web link - Up to 1000 characters | | `coupon.schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `coupon.schemeIos` | String | Conditional | iOS app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `commerce` | Object | Required | Commerce information | | `commerce.title` | String | Required | Product name - Up to 30 characters - No line breaks | | `commerce.regularPrice` | Integer | Required | Regular price (KRW) - 0-99,999,999 | | `commerce.discountPrice` | Integer | Conditional | Price after discount (KRW) - 0-9,999,999 | | `commerce.discountRate` | Integer | Conditional | Discount rate (%) - 0-100 - Required when applying discount rate. - Can't be used at the same time with `commerce.discountFixed`. | | `commerce.discountFixed` | Integer | Conditional | Fixed discount price (KRW) - 0-999,999 - Required when applying fixed discount. - Can't be used at the same time with `commerce.discountRate`. | #### `buttons` The following describes `buttons`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | Array | Required | [Button type](/docs/en/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) information | | `name` | String | Required | Button name - Up to 8 characters | | `linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters - Required if `type` is `WL` | | `linkPc` | String | Optional | PC web link - Up to 1000 characters | | `schemeIos` | String | Conditional | iOS app link - Up to 1000 characters - Required if `type` is `AL` | | `schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters - Required if `type` is `AL` | | `bizFormId` | String | Optional | Business form ID | #### Request example The request example is as follows: ``` 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":"Congratulation card", "content":"Congratulation card discount promotion", "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": "Website", "linkMobile": "https://******.com/ko/", "linkPc": "https://******.com/ko/" }, { "type": "WL", "name": "Blog", "linkMobile": "https://******.com/ko/blog/", "linkPc": "https://******.com/ko/blog/" } ], "commerce": { "title": "10% discount", "regularPrice": "10000", "discountPrice": "9000", "discountRate": "10" } }, { "image": { "imageId": "cde370b6-****-****-****-6a122739e51f", "imageLink": "https://mud-kage.kakao.com/dn/***********/**********************/img_l.jpg" }, "buttons": [ { "type": "WL", "name": "Website", "linkMobile": "https://******.com/ko/", "linkPc": "https://******.com/ko/" }, { "type": "WL", "name": "Blog", "linkMobile": "https://******.com/ko/blog/", "linkPc": "https://******.com/ko/blog/" } ], "commerce": { "title": "10% discount", "regularPrice": "10000", "discountPrice": "9000", "discountRate": "10" } } ], "tail": { "linkMobile": "https://hansem.com/ko/" } } } ] }' ``` ### Response This section describes the response format. #### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `requestId` | String | - | Request ID | | `requestTime` | DateTime | - | Request date and time - YYYY-MM-DDTHH:mm:ss.sss format | | `statusCode` | String | - | Request status code - `202`: Success. - Others: Failure. - It follows the HTTP status specification. | | `statusName` | String | - | Status - `success` \| `processing` \| `fail` - `success`: Success - `processing`: Processing - `fail`: Failure | | `messages` | Array | - | [Message](/docs/en/sens-brandmessage-send#messages1) information | #### Response status codes For information about the response status codes common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service response status codes](/docs/en/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). #### Response example The response example is as follows: ``` { "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": "Succeeded", "useSmsFailover": false } ] } ``` ## Carousel feed type message Send a carousel feed type message. ### Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | POST | /brandmessage/v2/services/{serviceId}/messages | #### Request headers For information about the request headers common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service request headers](/docs/en/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). #### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `serviceId` | String | Required | Biz Message service ID - See [Get project list](/docs/en/sens-project-list). | #### Request body You can include the following data in the body of your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `plusFriendId` | String | Required | Channel ID - Check from **Simple & Easy Notification Service** > **Biz MessageBrand** > **KakaoTalk Channel** in the NAVER Cloud Platform console. | | `messageType` | String | Required | Message type - Enter `CAROUSEL_FEED` (carousel feed type). - `TEXT` \| `IMAGE` \| `WIDE_IMAGE` \| `WIDE_ITEM_LIST` \| `COMMERCE` \| `CAROUSEL_COMMERCE` \| `CAROUSEL_FEED` \| `PREMIUM_VIDEO` - `TEXT`: Text - `IMAGE`: Image type - `WIDE_IMAGE`: Wide image type - `WIDE_ITEM_LIST`: Wide list type - `COMMERCE`: Commerce type - `CAROUSEL_COMMERCE`: Carousel commerce type - `CAROUSEL_FEED`: Carousel feed type - `PREMIUM_VIDEO`: Premium video type | | `targeting` | String | Optional | Targeting code - `M` \| `N` \| `I` (default) - `M`: Users who have consented to receive promotional information from customers (Kakao Talk consent). - `N`: Exclude friends of the channel among users who have consented to receive promotional information from customers (Kakao Talk consent). - `I`: Users who have consented to receive promotional information from customers (Kakao Talk consent) and are friends of the channel. | | `isAdult` | Boolean | Optional | Target age - `true` \| `false` (default) - `true`: Adult - `false`: All ages | | `messages` | Array | Required | [Message](/docs/en/sens-brandmessage-send#messages7) information | | `reserveTime` | String | Optional | Reserved date and time - YYYY-MM-DD HH:mm format. - Enter for reserved delivery. | | `reserveTimeZone` | String | Optional | Reserved time zone - `Asia/Seoul` (default) - See [Time zone list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). | #### `messages` The following describes `messages`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `countryCode` | String | Optional | Country code - `82` (default) - See [List of countries where international SMS can be sent](https://guide.ncloud-docs.com/docs/en/sens-smspolicy). | | `to` | String | Required | Recipient number - Only numbers can be entered. | | `carousel` | Object | Required | Carousel information | | `carousel.list` | Array | Required | [Carousel list](/docs/en/sens-brandmessage-send#carousellist1) - Minimum of 2, maximum of 6 | | `carousel.tail` | Object | Optional | Carousel details information | | `carousel.tail.linkMobile` | String | Required | Mobile web link - Up to 1000 characters | | `carousel.tail.linkPc` | String | Optional | PC web link - Up to 1000 characters | | `carousel.tail.schemeAndroid` | String | Optional | Android app link - Up to 1000 characters | | `carousel.tail.schemeIos` | String | Optional | iOS app link - Up to 1000 characters | | `useSmsFailover` | Boolean | Optional | SMS alternative delivery usage - `true` \| `false` - `true`: Enabled. - `false`: Disabled. - Default: Follow the settings of Kakao Talk Channel. - Available only on Kakao Talk Channels where alternative delivery is configured. | | `failoverConfig` | Object | Optional | Alternate delivery settings | | `failoverConfig.type` | String | Optional | Message type - `SMS` \| `LMS` - `SMS`: SMS message. - `LMS`: LMS message. - If not entered, it is automatically applied based on the message length. - Up to 90 bytes: SMS. - Over 90 bytes: LMS. | | `failoverConfig.from` | String | Optional | Caller ID - Only numbers registered via the console can be used. | | `failoverConfig.subject` | String | Optional | Message subject - If not entered, the channel name is applied. - Only available in LMS. | | `failoverConfig.content` | String | Optional | Message content - If not entered, it is applied as `content`. | #### `carousel.list` The following describes `carousel.list`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `headerContent` | String | Required | Header (subject) - Up to 20 characters - No line breaks | | `message` | String | Required | Content - Up to 180 characters. - Up to 10 line breaks. - Enter variables in the form #{Variable name} without spaces. | | `buttons` | Array | Required | [Button](/docs/en/sens-brandmessage-send#buttons6) information - Minimum of 1, maximum of 2 | | `image` | Object | Optional | Image information - See [Get image list](/docs/en/sens-brandmessage-image-list). | | `image.imageId` | String | Conditional | Image ID - Required when adding an image | | `image.imageLink` | String | Conditional | Image URL - Required when adding an image | | `coupon` | Object | Optional | Coupon information - Up to 1 | | `coupon.title` | String | Required | Coupon title - Only the following 5 types are available. - `${Number between 1-99,999,999} KRW discount coupon` - `${Number between 1-100}% discount coupon` - `Shipping fee discount coupon` - `${Up to 7 characters} free coupon` - `${Up to 7 characters} UP coupon` | | `coupon.description` | String | Required | Coupon description - Up to 12 characters - No line breaks | | `coupon.linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters. - When entering a web URL, the remaining fields are optional. | | `coupon.linkPc` | String | Optional | PC web link - Up to 1000 characters | | `coupon.schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `coupon.schemeIos` | String | Conditional | iOS app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | #### `buttons` The following describes `buttons`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | Array | Required | [Button type](/docs/en/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) information | | `name` | String | Required | Button name - Up to 8 characters | | `linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters - Required if `type` is `WL` | | `linkPc` | String | Optional | PC web link - Up to 1000 characters | | `schemeIos` | String | Conditional | iOS app link - Up to 1000 characters - Required if `type` is `AL` | | `schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters - Required if `type` is `AL` | | `bizFormId` | String | Optional | Business form ID | #### Request example The request example is as follows: ``` 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":"Congratulation card 1", "message":"Congratulation card discount promotion 1", "image": { "imageId":"6c4b9ceb-****-****-****-cf550dd5f2e8", "imageLink": "https://mud-kage.kakao.com/dn/C2Ft0/***********/**********************/img_l.jpg" }, "buttons": [ { "type": "WL", "name": "Website", "linkMobile": "https://******.com/ko/", "linkPc": "https://******.com/ko/" }, { "type": "WL", "name": "Blog", "linkMobile": "https://******.com/ko/blog/", "linkPc": "https://******.com/ko/blog/" } ], "coupon": { "title": "10% discount", "description": "10% discount", "linkMobile": "https://******.com/ko/blog/" } }, { "headerContent":"Congratulation card 2", "message":"Congratulation card discount promotion 2", "image": { "imageId":"6c4b9ceb-****-****-****-cf550dd5f2e8", "imageLink": "https://mud-kage.kakao.com/dn/C2Ft0/***********/**********************/img_l.jpg" }, "buttons": [ { "type": "WL", "name": "Website", "linkMobile": "https://******.com/ko/", "linkPc": "https://******.com/ko/" }, { "type": "WL", "name": "Blog", "linkMobile": "https://******.com/ko/blog/", "linkPc": "https://******.com/ko/blog/" } ], "coupon": { "title": "10% discount", "description": "10% discount", "linkMobile": "https://******.com/ko/blog/" } } ], "tail": { "linkMobile": "https://******.com/ko/" } } } ] }' ``` ### Response This section describes the response format. #### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `requestId` | String | - | Request ID | | `requestTime` | DateTime | - | Request date and time - YYYY-MM-DDTHH:mm:ss.sss format | | `statusCode` | String | - | Request status code - `202`: Success. - Others: Failure. - It follows the HTTP status specification. | | `statusName` | String | - | Status - `success` \| `processing` \| `fail` - `success`: Success - `processing`: Processing - `fail`: Failure | | `messages` | Array | - | [Message](/docs/en/sens-brandmessage-send#messages1) information | #### Response status codes For information about the response status codes common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service response status codes](/docs/en/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). #### Response example The response example is as follows: ``` { "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": "Succeeded", "useSmsFailover": false } ] } ``` ## Premium video type message Send a premium video type message. ### Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | POST | /brandmessage/v2/services/{serviceId}/messages | #### Request headers For information about the request headers common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service request headers](/docs/en/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). #### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `serviceId` | String | Required | Biz Message service ID - See [Get project list](/docs/en/sens-project-list). | #### Request body You can include the following data in the body of your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `plusFriendId` | String | Required | Channel ID - Check from **Simple & Easy Notification Service** > **Biz MessageBrand** > **KakaoTalk Channel** in the NAVER Cloud Platform console. | | `messageType` | String | Required | Message type - Enter `PREMIUM_VIDEO` (premium video type). - `TEXT` \| `IMAGE` \| `WIDE_IMAGE` \| `WIDE_ITEM_LIST` \| `COMMERCE` \| `CAROUSEL_COMMERCE` \| `CAROUSEL_FEED` \| `PREMIUM_VIDEO` - `TEXT`: Text - `IMAGE`: Image type - `WIDE_IMAGE`: Wide image type - `WIDE_ITEM_LIST`: Wide list type - `COMMERCE`: Commerce type - `CAROUSEL_COMMERCE`: Carousel commerce type - `CAROUSEL_FEED`: Carousel feed type - `PREMIUM_VIDEO`: Premium video type | | `targeting` | String | Optional | Targeting code - `M` \| `N` \| `I` (default) - `M`: Users who have consented to receive promotional information from customers (Kakao Talk consent). - `N`: Exclude friends of the channel among users who have consented to receive promotional information from customers (Kakao Talk consent). - `I`: Users who have consented to receive promotional information from customers (Kakao Talk consent) and are friends of the channel. | | `isAdult` | Boolean | Optional | Target age - `true` \| `false` (default) - `true`: Adult - `false`: All ages | | `messages` | Array | Required | [Message](/docs/en/sens-brandmessage-send#messages8) information | | `reserveTime` | String | Optional | Reserved date and time - YYYY-MM-DD HH:mm format. - Enter for reserved delivery. | | `reserveTimeZone` | String | Optional | Reserved time zone - `Asia/Seoul` (default) - See [Time zone list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). | #### `messages` The following describes `messages`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `countryCode` | String | Optional | Country code - `82` (default) - See [List of countries where international SMS can be sent](https://guide.ncloud-docs.com/docs/en/sens-smspolicy). | | `to` | String | Required | Recipient number - Only numbers can be entered. | | `headerContent` | String | Optional | Header (subject) - Up to 20 characters - No line breaks | | `content` | String | Optional | Content - Up to 76 characters - Maximum of 5 line breaks | | `video` | Object | Required | Video information | | `video.thumbnailId` | String | Required | Image ID for video thumbnail - Up to 500 characters | | `video.videoUrl` | String | Required | KakaoTV video URL - Up to 500 characters. - Only videos uploaded to KakaoTV can be used. | | `buttons` | Array | Optional | Button information: [buttons](/docs/en/sens-brandmessage-send#buttons7) - Maximum of 1 | | `coupon` | Object | Optional | Coupon information - Up to 1 | | `coupon.title` | String | Required | Coupon title - Only the following 5 types are available. - `${Number between 1-99,999,999} KRW discount coupon` - `${Number between 1-100}% discount coupon` - `Shipping fee discount coupon` - `${Up to 7 characters} free coupon` - `${Up to 7 characters} UP coupon` | | `coupon.description` | String | Required | Coupon description - Up to 12 characters - No line breaks | | `coupon.linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters. - When entering a web URL, the remaining fields are optional. | | `coupon.linkPc` | String | Optional | PC web link - Up to 1000 characters | | `coupon.schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `coupon.schemeIos` | String | Conditional | iOS app link - Up to 1000 characters. - When entering a channel coupon URL (format: alimtalk=coupon://), the remaining fields are optional. | | `useSmsFailover` | Boolean | Optional | SMS alternative delivery usage - `true` \| `false` - `true`: Enabled. - `false`: Disabled. - Default: Follow the settings of Kakao Talk Channel. - Available only on Kakao Talk Channels where alternative delivery is configured. | | `failoverConfig` | Object | Optional | Alternate delivery settings | | `failoverConfig.type` | String | Optional | Message type - `SMS` \| `LMS` - `SMS`: SMS message. - `LMS`: LMS message. - If not entered, it is automatically applied based on the message length. - Up to 90 bytes: SMS. - Over 90 bytes: LMS. | | `failoverConfig.from` | String | Optional | Caller ID - Only numbers registered via the console can be used. | | `failoverConfig.subject` | String | Optional | Message subject - If not entered, the channel name is applied. - Only available in LMS. | | `failoverConfig.content` | String | Optional | Message content - If not entered, it is applied as `content`. | #### `buttons` The following describes `buttons`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `type` | Array | Required | [Button type](/docs/en/sens-brandmessage-send#%EB%B2%84%ED%8A%BC%EC%9C%A0%ED%98%95) information | | `name` | String | Required | Button name - Up to 8 characters | | `linkMobile` | String | Conditional | Mobile web link - Up to 1000 characters - Required if `type` is `WL` | | `linkPc` | String | Optional | PC web link - Up to 1000 characters | | `schemeIos` | String | Conditional | iOS app link - Up to 1000 characters - Required if `type` is `AL` | | `schemeAndroid` | String | Conditional | Android app link - Up to 1000 characters - Required if `type` is `AL` | | `bizFormId` | String | Optional | Business form ID | #### Request example The request example is as follows: ``` 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":"Congratulation card", "content":"Congratulation card", "video": { "thumbnailId":"7b8101c8-****-****-****-ad384cb8e215", "videoUrl":"https://tv.kakao.com/v/********" }, "buttons":[ { "type":"WL", "name":"Website", "linkMobile":"https://******.com/ko/" } ], "coupon": { "title":"Congratulation card - 10% discount", "description":"Congratulation card 10% discount promotion", "linkMobile":"https://******.com/ko/" } } ] }' ``` ### Response This section describes the response format. #### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `requestId` | String | - | Request ID | | `requestTime` | DateTime | - | Request date and time - YYYY-MM-DDTHH:mm:ss.sss format | | `statusCode` | String | - | Request status code - `202`: Success. - Others: Failure. - It follows the HTTP status specification. | | `statusName` | String | - | Status - `success` \| `processing` \| `fail` - `success`: Success - `processing`: Processing - `fail`: Failure | | `messages` | Array | - | [Message](/docs/en/sens-brandmessage-send#messages1) information | #### Response status codes For information about the response status codes common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service response status codes](/docs/en/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). #### Response example The response example is as follows: ``` { "requestId": "RBBA-*************-****-********-dDYJgYGe", "requestTime": "2025-12-02T17:18:16.512", "statusCode": "202", "statusName": "processing", "messages": [ { "messageId": "9c5063e5-****-****-****-fd10d1aab9c4", "countryCode": "82", "to": "010********", "content": "Congratulation card", "requestStatusCode": "A000", "requestStatusName": "success", "requestStatusDesc": "Succeeded", "useSmsFailover": false } ] } ``` ## Template (default type) message Send a message with Brand Message template (default type). ### Request This section describes the request format. The method and URI are as follows: | Method | URI | | --- | --- | | POST | /brandmessage/v2/services/{serviceId}/messages | #### Request headers For information about the request headers common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service request headers](/docs/en/sens-overview#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94). #### Request path parameters You can use the following path parameters with your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `serviceId` | String | Required | Biz Message service ID - See [Get project list](/docs/en/sens-project-list). | #### Request body You can include the following data in the body of your request: | Field | Type | Required | Description | | --- | --- | --- | --- | | `plusFriendId` | String | Required | Channel ID - Check from **Simple & Easy Notification Service** > **Biz MessageBrand** > **KakaoTalk Channel** in the NAVER Cloud Platform console. | | `messageType` | String | Required | Message type - `TEXT` \| `IMAGE` \| `WIDE_IMAGE` \| `WIDE_ITEM_LIST` \| `COMMERCE` \| `CAROUSEL_COMMERCE` \| `CAROUSEL_FEED` \| `PREMIUM_VIDEO` - `TEXT`: Text - `IMAGE`: Image type - `WIDE_IMAGE`: Wide image type - `WIDE_ITEM_LIST`: Wide list type - `COMMERCE`: Commerce type - `CAROUSEL_COMMERCE`: Carousel commerce type - `CAROUSEL_FEED`: Carousel feed type - `PREMIUM_VIDEO`: Premium video type | | `templateCode` | String | Required | Message template code - Check from **Simple & Easy Notification Service** > **Biz MessageBrand** > **Message Template** in the NAVER Cloud Platform console. | | `targeting` | String | Optional | Targeting code - `M` \| `N` \| `I` (default) - `M`: Users who have consented to receive promotional information from customers (Kakao Talk consent). - `N`: Exclude friends of the channel among users who have consented to receive promotional information from customers (Kakao Talk consent). - `I`: Users who have consented to receive promotional information from customers (Kakao Talk consent) and are friends of the channel. | | `messages` | Array | Required | [Message](/docs/en/sens-brandmessage-send#messages9) information | | `reserveTime` | String | Optional | Reserved date and time - YYYY-MM-DD HH:mm format. - Enter for reserved delivery. | | `reserveTimeZone` | String | Optional | Reserved time zone - `Asia/Seoul` (default) - See [Time zone list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). | #### `messages` The following describes `messages`. | Field | Type | Required | Description | | --- | --- | --- | --- | | `countryCode` | String | Optional | Country code - `82` (default) - See [List of countries where international SMS can be sent](https://guide.ncloud-docs.com/docs/en/sens-smspolicy). | | `to` | String | Required | Recipient number - Only numbers can be entered. | | `templateParameters` | Object | Required | Template parameter - Required when including template variable - Example: If the template variable name is `#{Discount amount}` and the price is `10000`, `"templateParameters": {"Discount amount": "10000"}` | | `useSmsFailover` | Boolean | Optional | SMS alternative delivery usage - `true` \| `false` - `true`: Enabled. - `false`: Disabled. - Default: Follow the settings of Kakao Talk Channel. - Available only on Kakao Talk Channels where alternative delivery is configured. | | `failoverConfig` | Object | Optional | Alternate delivery settings | | `failoverConfig.type` | String | Optional | Message type - `SMS` \| `LMS` - `SMS`: SMS message. - `LMS`: LMS message. - If not entered, it is automatically applied based on the message length. - Up to 90 bytes: SMS. - Over 90 bytes: LMS. | | `failoverConfig.from` | String | Optional | Caller ID - Only numbers registered via the console can be used. | | `failoverConfig.subject` | String | Optional | Message subject - If not entered, the channel name is applied. - Only available in LMS. | | `failoverConfig.content` | String | Optional | Message content - If not entered, it is applied as `content`. | #### Request example The request example is as follows: ``` 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": { "Name": "Gildong Hong", "Discount amount": "10000" } } ] }' ``` ### Response This section describes the response format. #### Response body The response body includes the following data: | Field | Type | Required | Description | | --- | --- | --- | --- | | `requestId` | String | - | Request ID | | `requestTime` | DateTime | - | Request date and time - YYYY-MM-DDTHH:mm:ss.sss format | | `statusCode` | String | - | Request status code - `202`: Success. - Others: Failure. - It follows the HTTP status specification. | | `statusName` | String | - | Status - `success` \| `processing` \| `fail` - `success`: Success - `processing`: Processing - `fail`: Failure | | `messages` | Array | - | [Message](/docs/en/sens-brandmessage-send#messages1) information | #### Response status codes For information about the response status codes common to all Simple & Easy Notification Service APIs, see [Simple & Easy Notification Service response status codes](/docs/en/sens-overview#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C). #### Response example The response example is as follows: ``` { "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": "Succeeded", "useSmsFailover": false } ] } ```