Notification > Notification Hub > API v1.0 User Guide > Message
Request that a message be sent by entering the message content in the request body.
In order to send messages to each message channel, the sender information for each message channel must be registered. You can register the sender information in the Notification Hub console > Sender Information tab. For a detailed description of outgoing information for message channels, see Notification > Notification Hub > Service Policy & Precondition.
POST /message/v1.0/SMS/free-form-messages/{messagePurpose}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | Y | App Key |
| X-NHN-Authorization | Header | String | Y | Access Token |
| messagePurpose | Path | String | Y | Message purpose. [AD, AUTH, NORMAL] |
The additional description that will be added under the request parameter.
Request Body
{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"sender" : {
"senderPhoneNumber" : "01012341234"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"content" : {
"messageType" : "SMS",
"title" : "Notice for Holiday Operating Hours",
"body" : "Hello. Your product arrived today. Please visit us^^",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}
| Path | Type | Required | Description |
|---|---|---|---|
| statsKeyId | String | N | Statistics key ID |
| scheduledDateTime | String | N | Scheduled sending time |
| confirmBeforeSend | Boolean | N | Whether to send after confirmation |
| sender | Object | N | |
| sender.senderPhoneNumber | String | Y | Sender number |
| recipients | Array | N | |
| recipients[].contacts | Array | N | |
| recipients[].templateParameters | Object | N | Template parameters. Consist of key (Key, placeholder) and value (Value) pairs. Template parameters cannot be specified for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| id | String | N | ID generated upon successful bulk recipient list and file upload |
| content | Object | N | |
| content.messageType | String | Y | Sent message type (SMS, LMS, MMS) [SMS, LMS, MMS] |
| content.title | String | N | Message title |
| content.body | String | Y | Message body |
| content.attachmentIds | Array | N | Up to 3 attachment IDs |
| Message Channel | Field | Description |
|---|---|---|
| SMS | sender.senderPhoneNumber | Sender Number |
| RCS | sender.brandId | Brand ID |
| RCS | sender.chatbotId | Chatbot ID |
| sender.senderMailAddress | Sender Email Address | |
| ALIMTALK | sender.senderKey | Sender Key |
| ALIMTALK | sender.senderProfileType | Sender Profile Type GROUP, NORMAL |
Request Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"messageId" : "aA123456"
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
| messageId | String | The message ID. This value is generated when a message sending request is received. |
An additional description to be added to the response.
Request Example
### Free-form message sending requests - SMS
POST {{endpoint}}/message/v1.0/SMS/free-form-messages/{{messagePurpose}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"sender" : {
"senderPhoneNumber" : "01012341234"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"content" : {
"messageType" : "SMS",
"title" : "Notice for Holiday Operating Hours",
"body" : "Hello. Your product arrived today. Please visit us^^",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}
curl -X POST "${endpoint}/message/v1.0/SMS/free-form-messages/${messagePurpose}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"sender" : {
"senderPhoneNumber" : "01012341234"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"content" : {
"messageType" : "SMS",
"title" : "Notice for Holiday Operating Hours",
"body" : "Hello. Your product arrived today. Please visit us^^",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}'
Request a free-form message to be sent to EMAIL.
Request
POST /message/v1.0/EMAIL/free-form-messages/{messagePurpose}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | Y | Appkey |
| X-NHN-Authorization | Header | String | Y | Access token |
| messagePurpose | Path | String | Y | Message purpose NORMAL, AD, AUTH |
Request Body
{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"sender" : {
"senderMailAddress" : "abcde@nhn.com"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "EMAIL_ADDRESS",
"contact" : "recipient@example.com",
"clientReference" : "1234:abcd:011-asd"
} ]
} ],
"id" : "alpha123",
"content" : {
"title" : "[NHN Cloud Email][##env##] Monitoring notification",
"body" : "Hello. Your product arrived today.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}
| Path | Type | Required | Description |
|---|---|---|---|
| statsKeyId | String | N | Statistics key ID |
| scheduledDateTime | String | N | Scheduled sending time |
| confirmBeforeSend | Boolean | N | Whether to send after confirmation |
| sender | Object | N | |
| sender.senderMailAddress | String | Y | Sender email address |
| recipients | Array | N | |
| recipients[].contacts | Array | N | |
| recipients[].templateParameters | Object | N | Template parameters. Consist of key (Key, placeholder) and value (Value) pairs. Template parameters cannot be specified for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| id | String | N | ID generated upon successful bulk recipient list and file upload |
| content | Object | N | |
| content.title | String | Y | Template Email Title |
| content.body | String | Y | Template Email Body |
| content.attachmentIds | Array | N | Template Attachment ID |
Request Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"messageId" : "aA123456"
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
| messageId | String | The message ID. This value is generated when a message sending request is received. |
Request Example
### Request to Send a Free-Form Message - EMAIL
POST {{endpoint}}/message/v1.0/EMAIL/free-form-messages/{{messagePurpose}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"sender" : {
"senderMailAddress" : "abcde@nhn.com"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "EMAIL_ADDRESS",
"contact" : "recipient@example.com",
"clientReference" : "1234:abcd:011-asd"
} ]
} ],
"id" : "alpha123",
"content" : {
"title" : "[NHN Cloud Email][##env##] Monitoring notification",
"body" : "Hello. Your product arrived today.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}
curl -X POST "${endpoint}/message/v1.0/EMAIL/free-form-messages/${messagePurpose}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"sender" : {
"senderMailAddress" : "abcde@nhn.com"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "EMAIL_ADDRESS",
"contact" : "recipient@example.com",
"clientReference" : "1234:abcd:011-asd"
} ]
} ],
"id" : "alpha123",
"content" : {
"title" : "[NHN Cloud Email][##env##] Monitoring notification",
"body" : "Hello. Your product arrived today.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}'
Request to send a free-form message to RCS.
Request
POST /message/v1.0/RCS/free-form-messages/{messagePurpose}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | Y | Appkey |
| X-NHN-Authorization | Header | String | Y | Access token |
| messagePurpose | Path | String | Y | Message purpose NORMAL, AD, AUTH |
Request Body
{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"sender" : {
"brandId" : "AR.lj0eOjEI7Y",
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"content" : {
"messageType" : "SMS",
"title": "Notice of Holiday Operating Hours",
"body": "Hi, your product arrived today. Please visit us^^",
"smsType" : "STANDALONE",
"lmsType" : "HORIZONTAL",
"mmsType" : "HORIZONTAL",
"messagebaseId" : "44o4SUjpqnjDuUcH+uHvPg==",
"unsubscribePhoneNumber" : "08012341234",
"cards" : [ {
"title" : "Title",
"description" : "Body",
"attachmentId" : "20240814125609swLmoZTsGr0",
"mTitle" : "Main Title",
"mTitleMedia" : "LT-messagebase.common-2k8ydI",
"title1" : "Title 1",
"title2" : "Title 2",
"title3" : "Title 3",
"description1" : "Body 1",
"description2" : "Body 2",
"description3" : "Body 3",
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "Register schedule",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "Schedule title",
"description" : "Schedule description"
}
}
}
}
} ]
} ],
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "Register schedule",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "Schedule title",
"description" : "Schedule description"
}
}
}
}
} ]
},
"options" : {
"expiryOption" : 1,
"groupId" : "20240814125609swLmoZTsGr0"
}
}
| Path | Type | Required | Description |
|---|---|---|---|
| statsKeyId | String | N | Statistics key ID |
| scheduledDateTime | String | N | Scheduled sending time |
| confirmBeforeSend | Boolean | N | Whether to send after confirmation |
| sender | Object | N | |
| sender.brandId | String | Y | Brand ID |
| sender.chatbotId | String | Y | Chatbot ID |
| recipients | Array | N | |
| recipients[].contacts | Array | N | |
| recipients[].templateParameters | Object | N | Template parameters. Consist of key (Key, placeholder) and value (Value) pairs. Template parameters cannot be specified for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| id | String | N | ID generated upon successful bulk recipient list and file upload |
| content | Object | N | |
| content.messageType | String | N | RCS message type [SMS, LMS, MMS, RBC_TEMPLATE] |
| content.title | String | N | (Use deprecated, content.cards[].title) Message title |
| content.body | String | N | (Use deprecated, content.cards[].description) Message body |
| content.smsType | String | N | SMS type [STANDALONE, UNIFIED_STANDALONE] |
| content.lmsType | String | N | LMS type [STANDALONE, FORMAT_BASIC, FORMAT_TITLE_HIGHLIGHT, FORMAT_PARAGRAPH, UNIFIED_STANDALONE] |
| content.mmsType | String | N | MMS type (required for MMS transmission) [HORIZONTAL, VERTICAL, CAROUSEL_MEDIUM, CAROUSEL_SMALL, UNIFIED_HORIZONTAL, UNIFIED_VERTICAL] |
| content.messagebaseId | String | N | RCS Biz Center Template ID |
| content.unsubscribePhoneNumber | String | N | Unsubscribe Number (required for advertisements) |
| content.cards | Array | N | RCS Card |
| content.cards[].title | String | N | Title |
| content.cards[].description | String | N | Body |
| content.cards[].attachmentId | String | N | Attachment File ID ※ If a GIF image is attached to an Integrated MMS Card, it cannot be received on iOS devices. |
| content.cards[].mTitle | String | N | Main Title |
| content.cards[].mTitleMedia | String | N | Main Title Logo File ID |
| content.cards[].title1 | String | N | Title 1 |
| content.cards[].title2 | String | N | Title 2 |
| content.cards[].title3 | String | N | Title 3 |
| content.cards[].description1 | String | N | Body 1 |
| content.cards[].description2 | String | N | Body 2 |
| content.cards[].description3 | String | N | Body 3 |
| content.cards[].buttons | Array | N | Button |
| content.cards[].buttons[].buttonType | String | N | Button type COMPOSE (Open chat room), CLIPBOARD (Copy), DIALER (Make a call), MAP_SHOW (Show map), MAP_QUERY (Search map), MAP_SHARE (Share current location), URL (Connect URL), CALENDAR (Add to calendar) ※ If a CLIPBOARD (Copy) button is used in an integrated message type, it cannot be received on iOS devices. [COMPOSE, CLIPBOARD, DIALER, MAP_SHOW, MAP_QUERY, MAP_SHARE, URL, CALENDAR] |
| content.cards[].buttons[].buttonJson | Object | N | Button JSON, check format for each button type |
| content.buttons | Array | N | (Use deprecated, content.cards[].buttons) RCS button list |
| content.buttons[].buttonType | String | N | An Action object with the same name as the buttonType value is included as buttonJson. Button Types: Open Chat Room (COMPOSE), Copy (CLIPBOARD), Make a Call (DIALER), Show Map (MAP_SHOW), Search Map (MAP_QUERY), Share Current Location (MAP_SHARE), Connect to URL (URL), Register Schedule (CALENDAR) [COMPOSE, CLIPBOARD, DIALER, MAP_SHOW, MAP_QUERY, MAP_SHARE, URL, CALENDAR] |
| content.buttons[].buttonJson | Object | N | |
| content.buttons[].buttonJson.action | Object | N | Button Action |
| options | Object | N | |
| options.expiryOption | Integer | N | The time the carrier attempts to send to the device (1: 1 day, 2: 40 seconds, 3: 3 minutes, 4: 1 hour) Default: 1 |
| options.groupId | String | N | Group ID for RCS Biz Center statistics integration |
Request Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"messageId" : "aA123456"
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
| messageId | String | The message ID. This value is generated when a message sending request is received. |
Request Example
### Request to a Send Free-Form Message - RCS
POST {{endpoint}}/message/v1.0/RCS/free-form-messages/{{messagePurpose}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"sender" : {
"brandId" : "AR.lj0eOjEI7Y",
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"content" : {
"messageType" : "SMS",
"title" : "Notice for Holiday Operating Hours",
"body" : "Hello. Your product arrived today. Please visit us^^",
"smsType" : "STANDALONE",
"lmsType" : "HORIZONTAL",
"mmsType" : "HORIZONTAL",
"messagebaseId" : "44o4SUjpqnjDuUcH+uHvPg==",
"unsubscribePhoneNumber" : "08012341234",
"cards" : [ {
"title" : "Title",
"description" : "Body",
"attachmentId" : "20240814125609swLmoZTsGr0",
"mTitle" : "Main title",
"mTitleMedia" : "LT-messagebase.common-2k8ydI",
"title1" : "Title 1",
"title2" : "Title 2",
"title3" : "Title 3",
"description1" : "Body 1",
"description2" : "Body 2",
"description3" : "Body 3",
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "Register schedule",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "Schedule title",
"description" : "Schedule description"
}
}
}
}
} ]
} ],
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "Register schedule",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "Schedule title",
"description" : "Schedule description"
}
}
}
}
} ]
},
"options" : {
"expiryOption" : 1,
"groupId" : "20240814125609swLmoZTsGr0"
}
}
curl -X POST "${endpoint}/message/v1.0/RCS/free-form-messages/${messagePurpose}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"sender" : {
"brandId" : "AR.lj0eOjEI7Y",
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"content" : {
"messageType" : "SMS",
"title" : "Notice for Holiday Operating Hours",
"body" : "Hello. Your product arrived today. Please visit us^^",
"smsType" : "STANDALONE",
"lmsType" : "HORIZONTAL",
"mmsType" : "HORIZONTAL",
"messagebaseId" : "44o4SUjpqnjDuUcH+uHvPg==",
"unsubscribePhoneNumber" : "08012341234",
"cards" : [ {
"title" : "Title",
"description" : "Body",
"attachmentId" : "20240814125609swLmoZTsGr0",
"mTitle" : "Main title",
"mTitleMedia" : "LT-messagebase.common-2k8ydI",
"title1" : "Title 1",
"title2" : "Title 2",
"title3" : "Title 3",
"description1" : "Body 1",
"description2" : "Body 2",
"description3" : "Body 3",
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "Register schedule",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "Schedule title",
"description" : "Schedule description"
}
}
}
}
} ]
} ],
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "Register schedule",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "Schedule title",
"description" : "Schedule description"
}
}
}
}
} ]
},
"options" : {
"expiryOption" : 1,
"groupId" : "20240814125609swLmoZTsGr0"
}
}'
Request to send a free-form message for PUSH.
Request
POST /message/v1.0/PUSH/free-form-messages/{messagePurpose}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | Y | Appkey |
| X-NHN-Authorization | Header | String | Y | Access token |
| messagePurpose | Path | String | Y | Message purpose NORMAL, AD, AUTH |
Request Body
{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"recipients" : [ {
"contacts" : [ {
"contactType" : "TOKEN_FCM",
"contact" : "TOKEN_FCM",
"clientReference" : "1234:abcd:011-asd"
} ]
} ],
"id" : "alpha123",
"content" : {
"unsubscribePhoneNumber" : "Main Number",
"unsubscribeGuide" : "Menu > Settings",
"title" : "Title",
"body" : "Content",
"richMessage" : {
"buttons" : [ {
"name" : "Button Name",
"submitName" : "Send button name",
"buttonType" : "Button Type, REPLY, DEEP_LINK, OPEN_APP, OPEN_URL, DISMISS",
"link" : "When you press the button, the link is connected",
"hint" : "Hint for button"
} ],
"media" : {
"sourceType" : "Media location, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE",
"mediaType" : "Media type, IMAGE, GIF, VEDIO, AUDIO. Only IMAGE supported in Android",
"extension" : "Media file extension, jpg, png",
"expandable" : true
},
"androidMedia" : {
"sourceType" : "Media location, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE",
"mediaType" : "Media type, IMAGE, GIF, VEDIO, AUDIO. Only IMAGE supported in Android",
"extension" : "Media file extension, jpg, png",
"expandable" : true
},
"iosMedia" : {
"sourceType" : "Media location, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE",
"mediaType" : "Media type, IMAGE, GIF, VEDIO, AUDIO. Only IMAGE supported in Android",
"extension" : "Media file extension, jpg, png",
"expandable" : true
},
"largeIcon" : {
"sourceType" : "Location of large icon, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE"
},
"group" : {
"key" : "Group key, feature to group multiple messages, supported only on Android",
"description" : "Description for group"
}
},
"style" : {
"useHtmlStyle" : true
},
"customKey" : "customValue"
}
}
| Path | Type | Required | Description |
|---|---|---|---|
| statsKeyId | String | N | Statistics key ID |
| scheduledDateTime | String | N | Scheduled sending time |
| confirmBeforeSend | Boolean | N | Whether to send after confirmation |
| recipients | Array | N | |
| recipients[].contacts | Array | N | |
| recipients[].templateParameters | Object | N | Template parameters. Consist of key (Key, placeholder) and value (Value) pairs. Template parameters cannot be specified for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| id | String | N | ID generated upon successful bulk recipient list and file upload |
| content | Object | N | Push message content |
Request Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"messageId" : "aA123456"
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
| messageId | String | The message ID. This value is generated when a message sending request is received. |
Request Example
### Request to Send a Free-Form Message - PUSH
POST {{endpoint}}/message/v1.0/PUSH/free-form-messages/{{messagePurpose}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"recipients" : [ {
"contacts" : [ {
"contactType" : "TOKEN_FCM",
"contact" : "TOKEN_FCM",
"clientReference" : "1234:abcd:011-asd"
} ]
} ],
"id" : "alpha123",
"content" : {
"unsubscribePhoneNumber" : "Main Number",
"unsubscribeGuide" : "Menu > Settings",
"title" : "Title",
"body" : "Content",
"richMessage" : {
"buttons" : [ {
"name" : "Button Name",
"submitName" : "Send button name",
"buttonType" : "Button Type, REPLY, DEEP_LINK, OPEN_APP, OPEN_URL, DISMISS",
"link" : "When you press the button, the link is connected",
"hint" : "Hint for button"
} ],
"media" : {
"sourceType" : "Media location, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE",
"mediaType" : "Media type, IMAGE, GIF, VEDIO, AUDIO. Only IMAGE supported in Android",
"extension" : "Media file extension, jpg, png",
"expandable" : true
},
"androidMedia" : {
"sourceType" : "Media location, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE",
"mediaType" : "Media type, IMAGE, GIF, VEDIO, AUDIO. Only IMAGE supported in Android",
"extension" : "Media file extension, jpg, png",
"expandable" : true
},
"iosMedia" : {
"sourceType" : "Media location, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE",
"mediaType" : "Media type, IMAGE, GIF, VEDIO, AUDIO. Only IMAGE supported in Android",
"extension" : "Media file extension, jpg, png",
"expandable" : true
},
"largeIcon" : {
"sourceType" : "Location of large icon, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE"
},
"group" : {
"key" : "Group key, feature to group multiple messages, supported only on Android",
"description" : "Description for group"
}
},
"style" : {
"useHtmlStyle" : true
},
"customKey" : "customValue"
}
}
curl -X POST "${endpoint}/message/v1.0/PUSH/free-form-messages/${messagePurpose}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"recipients" : [ {
"contacts" : [ {
"contactType" : "TOKEN_FCM",
"contact" : "TOKEN_FCM",
"clientReference" : "1234:abcd:011-asd"
} ]
} ],
"id" : "alpha123",
"content" : {
"unsubscribePhoneNumber" : "Main Number",
"unsubscribeGuide" : "Menu > Settings",
"title" : "Title",
"body" : "Content",
"richMessage" : {
"buttons" : [ {
"name" : "Button Name",
"submitName" : "Send button name",
"buttonType" : "Button Type, REPLY, DEEP_LINK, OPEN_APP, OPEN_URL, DISMISS",
"link" : "When you press the button, the link is connected",
"hint" : "Hint for button"
} ],
"media" : {
"sourceType" : "Media location, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE",
"mediaType" : "Media type, IMAGE, GIF, VEDIO, AUDIO. Only IMAGE supported in Android",
"extension" : "Media file extension, jpg, png",
"expandable" : true
},
"androidMedia" : {
"sourceType" : "Media location, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE",
"mediaType" : "Media type, IMAGE, GIF, VEDIO, AUDIO. Only IMAGE supported in Android",
"extension" : "Media file extension, jpg, png",
"expandable" : true
},
"iosMedia" : {
"sourceType" : "Media location, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE",
"mediaType" : "Media type, IMAGE, GIF, VEDIO, AUDIO. Only IMAGE supported in Android",
"extension" : "Media file extension, jpg, png",
"expandable" : true
},
"largeIcon" : {
"sourceType" : "Location of large icon, REMOTE, LOCAL",
"source" : "Address of where the media is located, URL, LOCAL_RESOURCE"
},
"group" : {
"key" : "Group key, feature to group multiple messages, supported only on Android",
"description" : "Description for group"
}
},
"style" : {
"useHtmlStyle" : true
},
"customKey" : "customValue"
}
}'
Send a message using a registered template.
If no template is registered, register a template first and then send the message.
The recipient settings must be set to one of the following: Single Recipient, Bulk Recipient, or Group Query.
* Single Recipient (recipient)
* Bulk/Group Recipient (id)
For scheduled sending, set 'scheduledDateTime'.
For confirmation-based sending, set 'confirmBeforeSend' to true.
Request
POST /message/v1.0/{messageChannel}/template-messages/{messagePurpose}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | Y | Appkey |
| X-NHN-Authorization | Header | String | Y | Access token |
| messageChannel | Path | String | Y | Message channel. [SMS, RCS, ALIMTALK, EMAIL, PUSH] |
| messagePurpose | Path | String | Y | Message purpose NORMAL, AD, AUTH |
Request Body
{
"statsKeyId" : "aA123456",
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123"
}
| Path | Type | Required | Description |
|---|---|---|---|
| statsKeyId | String | N | Statistics key ID |
| templateId | String | N | Template ID |
| scheduledDateTime | String | N | Scheduled sending time |
| confirmBeforeSend | Boolean | N | Whether to send after confirmation |
| templateParameters | Object | N | Template parameters. It consists of a pair of key (Key, placeholder) and value (Value). Template parameters cannot be specified for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| recipients | Array | N | |
| recipients[].contacts | Array | N | |
| recipients[].templateParameters | Object | N | Template parameters. It consists of a pair of keys (key, placeholder) and values (value). You cannot specify template parameters for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| id | String | N | ID generated when bulk recipient list and file upload are successful |
Request Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"messageId" : "aA123456"
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
| messageId | String | The message ID. This value is generated when a message sending request is received. |
Request Example
### Request to Send a Template Message
POST {{endpoint}}/message/v1.0/{{messageChannel}}/template-messages/{{messagePurpose}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"statsKeyId" : "aA123456",
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123"
}
curl -X POST "${endpoint}/message/v1.0/${messageChannel}/template-messages/${messagePurpose}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"statsKeyId" : "aA123456",
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123"
}'
Sends a message using a registered template.
If no template has been registered, register a template first and then send.
You must select one of the following recipients: Single Recipient, Bulk Recipient, or Group Query.
* Single Recipient (recipient)
* Bulk/Group Recipient (id)
For scheduled delivery, set 'scheduledDateTime'.
For confirmation-based delivery, set 'confirmBeforeSend' to true.
Request
POST /message/v1.0/ALIMTALK/template-messages/{messagePurpose}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | Y | Appkey |
| X-NHN-Authorization | Header | String | Y | Access token |
| messagePurpose | Path | String | Y | Message purpose NORMAL, AD, AUTH |
Request Body
{
"statsKeyId" : "aA123456",
"sender" : {
"senderKey" : "3f8a6b1c5d9e2f7a0b4c8d3e6f1a9b2c5d7e0f4a8b3c"
},
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123"
}
| Path | Type | Required | Description |
|---|---|---|---|
| statsKeyId | String | N | Statistics key ID |
| sender | Object | N | |
| sender.senderKey | String | Y | Sender profile sender key |
| templateId | String | N | Template ID |
| scheduledDateTime | String | N | Scheduled sending time |
| confirmBeforeSend | Boolean | N | Whether to send after confirmation |
| templateParameters | Object | N | Template parameters. It consists of a pair of key (Key, placeholder) and value (Value). Template parameters cannot be specified for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| recipients | Array | N | |
| recipients[].contacts | Array | N | |
| recipients[].templateParameters | Object | N | Template parameter. It consists of a pair of key (key, placeholder) and value (value). You cannot specify template parameters for each recipient in group sending. Template parameters set for each recipient take precedence over message template parameters. |
| id | String | N | ID generated upon successful bulk recipient list and file upload |
Request Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"messageId" : "aA123456"
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
| messageId | String | The message ID. This value is generated when a message sending request is received. |
요청 예시
### Send an AlimTalk Template Message
POST {{endpoint}}/message/v1.0/ALIMTALK/template-messages/{{messagePurpose}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"statsKeyId" : "aA123456",
"sender" : {
"senderKey" : "3f8a6b1c5d9e2f7a0b4c8d3e6f1a9b2c5d7e0f4a8b3c"
},
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123"
}
curl -X POST "${endpoint}/message/v1.0/ALIMTALK/template-messages/${messagePurpose}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"statsKeyId" : "aA123456",
"sender" : {
"senderKey" : "3f8a6b1c5d9e2f7a0b4c8d3e6f1a9b2c5d7e0f4a8b3c"
},
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123"
}'
Sends a message using a registered template.
If no template is registered, register a template first and then send.
The recipient settings must be set to one of the following: Single Recipient, Bulk Recipient, or Group Query.
* Single Recipient (recipient)
* Bulk/Group Recipient (id)
For scheduled sending, set 'scheduledDateTime'.
For confirmation-based sending, set 'confirmBeforeSend' to true.
Request
POST /message/v1.0/RCS/template-messages/{messagePurpose}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| messagePurpose | Path | String | Y | Message purpose NORMAL, AD, AUTH |
Request Body
{
"statsKeyId" : "aA123456",
"sender" : {
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"content" : {
"unsubscribePhoneNumber" : "08012341234"
},
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"options" : {
"expiryOption" : 1,
"groupId" : "20240814125609swLmoZTsGr0"
}
}
| Path | Type | Required | Description |
|---|---|---|---|
| statsKeyId | String | N | Statistics key ID |
| sender | Object | N | |
| sender.chatbotId | String | N | Chatbot ID |
| content | Object | N | |
| content.unsubscribePhoneNumber | String | N | Unsubscribe phone number |
| templateId | String | N | Template ID |
| scheduledDateTime | String | N | Scheduled sending time |
| confirmBeforeSend | Boolean | N | Whether to send after confirmation |
| templateParameters | Object | N | Template parameters. Consists of key (key, placeholder) and value (value) pairs. Template parameters cannot be specified for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| recipients | Array | N | |
| recipients[].contacts | Array | N | |
| recipients[].templateParameters | Object | N | Template parameters. They consist of key (placeholder) and value (value) pairs. You cannot specify template parameters for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| id | String | N | ID generated upon successful bulk recipient list and file upload |
| options | Object | N | |
| options.expiryOption | Integer | N | Time the carrier attempts to send to the device (1: 1 day, 2: 40 seconds, 3: 3 minutes, 4: 1 hour) Default: 1 |
| options.groupId | String | N | Group ID for RCS Biz Center statistics integration |
Request Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"messageId" : "aA123456"
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
| messageId | String | The message ID. This value is generated when a message sending request is received. |
Request Example
### Send RCS Template Message
POST {{endpoint}}/message/v1.0/RCS/template-messages/{{messagePurpose}}
{
"statsKeyId" : "aA123456",
"sender" : {
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"content" : {
"unsubscribePhoneNumber" : "08012341234"
},
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"options" : {
"expiryOption" : 1,
"groupId" : "20240814125609swLmoZTsGr0"
}
}
curl -X POST "${endpoint}/message/v1.0/RCS/template-messages/${messagePurpose}" \
-d '{
"statsKeyId" : "aA123456",
"sender" : {
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"content" : {
"unsubscribePhoneNumber" : "08012341234"
},
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"options" : {
"expiryOption" : 1,
"groupId" : "20240814125609swLmoZTsGr0"
}
}'
Sends a message using the registered template.
If no template has been registered, register a template first and then send.
The recipient settings must be set to either a single recipient, a bulk recipient, or a group query.
* Single recipient (recipient)
* Bulk/group recipient (id)
For scheduled sending, set 'scheduledDateTime'.
For confirmation-based sending, set 'confirmBeforeSend' to true.
When sending an MMS template with an image layout, keep the following in mind:
* Required template parameters: cardNumber and scratchNumber must be included.
* cardNumber: Used to generate a barcode and must be a 16-digit number.
* scratchNumber: No restrictions. * Image Layout Override: You can override the image layout set in the template by including content.imageLayoutId or content.imageLayoutName in the request body.
* You must use only one of content.imageLayoutId and content.imageLayoutName.
* If neither field is included, the default image layout associated with the template will be used.
Request
POST /message/v1.0/SMS/template-messages/{messagePurpose}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| messagePurpose | Path | String | Y | Message purpose NORMAL, AD, AUTH |
Request Body
{
"statsKeyId" : "aA123456",
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"content" : {
"imageLayoutId" : "aA123456",
"imageLayoutName" : "2025-promotion-layout"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
}
| Path | Type | Required | Description |
|---|---|---|---|
| statsKeyId | String | N | Statistics key ID |
| templateId | String | N | Template ID |
| scheduledDateTime | String | N | Scheduled sending time |
| confirmBeforeSend | Boolean | N | Whether to send after confirmation |
| templateParameters | Object | N | Template parameters. Consist of key (placeholder) and value (value) pairs. Template parameters cannot be specified for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| content | Object | N | |
| content.imageLayoutName | String | N | Image layout name |
| recipients | Array | N | |
| recipients[].contacts | Array | Y | |
| recipients[].templateParameters | Object | N | Template parameters. They consist of key (key, placeholder) and value (value) pairs. You cannot specify template parameters for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| id | String | N | ID generated upon successful bulk recipient list and file upload |
Request Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"messageId" : "aA123456"
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
| messageId | String | The message ID. This value is generated when a message sending request is received. |
Request Example
### Send a SMS Template Message
POST {{endpoint}}/message/v1.0/SMS/template-messages/{{messagePurpose}}
{
"statsKeyId" : "aA123456",
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"content" : {
"imageLayoutId" : "aA123456",
"imageLayoutName" : "2025-promotion-layout"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123"
}
curl -X POST "${endpoint}/message/v1.0/SMS/template-messages/${messagePurpose}" \
-d '{
"statsKeyId" : "aA123456",
"templateId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"content" : {
"imageLayoutId" : "aA123456",
"imageLayoutName" : "2025-promotion-layout"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
}'
Send a message using a registered flow.
If you haven't registered a flow, you must register one and send it.
The recipient settings must be set to either a single recipient, bulk recipient, or group query.
* Single recipient (recipient)
* Bulk/group recipient (id)
For scheduled delivery, set 'scheduledDateTime'.
For confirmation-based delivery, set 'confirmBeforeSend' to true.
Request
POST /message/v1.0/flow-messages/{messagePurpose}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | Y | Appkey |
| X-NHN-Authorization | Header | String | Y | Access token |
| messagePurpose | Path | String | Y | Message purpose NORMAL, AD, AUTH |
Request Body
{
"statsKeyId" : "aA123456",
"flowId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"flow" : {
"steps" : [ {
"messageChannel" : "SMS",
"sender" : {
"senderPhoneNumber" : "0123456789"
},
"content" : {
"title" : "Title",
"body" : "Body"
},
"options" : {
"expiryOption:" : 1,
"groupId\"" : "groupId"
},
"nextSteps" : [ {
"messageChannel" : "RCS"
} ]
} ]
}
}
| Path | Type | Required | Description |
|---|---|---|---|
| statsKeyId | String | N | Statistics key ID |
| flowId | String | N | Flow ID |
| scheduledDateTime | String | N | Scheduled sending time |
| confirmBeforeSend | Boolean | N | Whether to send after confirmation |
| templateParameters | Object | N | Template parameters. It consists of a pair of key (Key, placeholder) and value (Value). Template parameters cannot be specified for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| recipients | Array | N | |
| recipients[].templateParameters | Object | N | Template parameters. It consists of a pair of keys (keys, placeholders) and values (values). You cannot specify template parameters for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| id | String | N | ID generated upon successful bulk recipient list and file upload |
| flow | Object | N | |
| flow.steps | Array | Y | |
| flow.steps[].messageChannel | String | Y | Message channel [SMS, ALIMTALK, EMAIL, RCS, PUSH] |
| flow.steps[].sender | Object | N | Sender information. Sender information may be configured differently depending on the message channel. |
| flow.steps[].content | Object | N | Message content. Message content may be configured differently depending on the message channel. |
| flow.steps[].options | Object | N | Sending options. Sending options can be configured differently depending on the message channel. |
| flow.steps[].nextSteps | Array | N | The next step. If there is no next step, message sending will end. |
Request Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"messageId" : "aA123456"
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
| messageId | String | The message ID. This value is generated when a message sending request is received. |
Request Example
### Send Flow Message
POST {{endpoint}}/message/v1.0/flow-messages/{{messagePurpose}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"statsKeyId" : "aA123456",
"flowId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"flow" : {
"steps" : [ {
"messageChannel" : "SMS",
"sender" : {
"senderPhoneNumber" : "0123456789"
},
"content" : {
"title" : "Title",
"body" : "Body"
},
"options" : {
"expiryOption:" : 1,
"groupId\"" : "groupId"
},
"nextSteps" : [ {
"messageChannel" : "RCS"
} ]
} ]
}
}
curl -X POST "${endpoint}/message/v1.0/flow-messages/${messagePurpose}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"statsKeyId" : "aA123456",
"flowId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"id" : "alpha123",
"flow" : {
"steps" : [ {
"messageChannel" : "SMS",
"sender" : {
"senderPhoneNumber" : "0123456789"
},
"content" : {
"title" : "Title",
"body" : "Body"
},
"options" : {
"expiryOption:" : 1,
"groupId\"" : "groupId"
},
"nextSteps" : [ {
"messageChannel" : "RCS"
} ]
} ]
}
}'
When requesting a message, define a flow to send the message.
When entering an instant flow, you can use a template to request a message or manually enter sender information and content.
Request
POST /message/v1.0/instant-flow-messages/{messagePurpose}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| messagePurpose | Path | String | Y | Message purpose NORMAL, AD, AUTH |
Request Body
{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"instantFlow" : {
"steps" : [ {
"messageChannel" : "SMS",
"sender" : {
"senderPhoneNumber" : "0123456789"
},
"content" : {
"title" : "Title",
"body" : "Body"
},
"options" : {
"expiryOption:" : 1,
"groupId\"" : "groupId"
},
"templateId" : "Template_ID",
"nextSteps" : [ ]
} ]
}
}
| Path | Type | Required | Description |
|---|---|---|---|
| statsKeyId | String | N | Statistics key ID |
| scheduledDateTime | String | N | Scheduled sending time |
| confirmBeforeSend | Boolean | N | Whether to send after confirmation |
| templateParameters | Object | N | Template parameters. It consists of a pair of key (Key, placeholder) and value (Value). Template parameters cannot be specified for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| recipients | Array | Y | |
| recipients[].contacts | Array | N | |
| recipients[].templateParameters | Object | N | Template parameters. It consists of a pair of key (key, placeholder) and value (value). You cannot specify template parameters for each recipient in group sending. Template parameters set for recipients take precedence over message template parameters. |
| instantFlow | Object | Y | |
| instantFlow.steps | Array | Y | |
| instantFlow.steps[].messageChannel | String | Y | Message Channel [SMS, ALIMTALK, EMAIL, RCS, PUSH] |
| instantFlow.steps[].sender | Object | N | Sender information. Sender information can be configured differently depending on the message channel. |
| instantFlow.steps[].content | Object | N | Message content. Message content can be configured differently depending on the message channel. |
| instantFlow.steps[].options | Object | N | Sending options. Sending options can be configured differently depending on the message channel. |
| instantFlow.steps[].templateId | String | N | Template ID. If a template ID is set, the sender information (sender) and message content (content) will not be applied to the request. If a template ID is not set in an instant flow message, the sender information (sender) and message content (content) are required. |
| instantFlow.steps[].nextSteps | Array | N | The next step. If there is no next step, message sending will end. |
Request Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"messageId" : "aA123456"
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
| messageId | String | The message ID. This value is generated when a message sending request is received. |
Request Example
### Send an Instant Flow Message
POST {{endpoint}}/message/v1.0/instant-flow-messages/{{messagePurpose}}
{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"instantFlow" : {
"steps" : [ {
"messageChannel" : "SMS",
"sender" : {
"senderPhoneNumber" : "0123456789"
},
"content" : {
"title" : "Title",
"body" : "Body"
},
"options" : {
"expiryOption:" : 1,
"groupId\"" : "groupId"
},
"templateId" : "Template_ID",
"nextSteps" : [ ]
} ]
}
}
curl -X POST "${endpoint}/message/v1.0/instant-flow-messages/${messagePurpose}" \
-d '{
"statsKeyId" : "aA123456",
"scheduledDateTime" : "2024-10-29T06:00:01.000+09:00",
"confirmBeforeSend" : false,
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
},
"recipients" : [ {
"contacts" : [ {
"contactType" : "PHONE_NUMBER",
"contact" : "01012345678",
"clientReference" : "1234:abcd:011-asd"
} ],
"templateParameters" : {
"key1" : "value1",
"key2" : "value2"
}
} ],
"instantFlow" : {
"steps" : [ {
"messageChannel" : "SMS",
"sender" : {
"senderPhoneNumber" : "0123456789"
},
"content" : {
"title" : "Title",
"body" : "Body"
},
"options" : {
"expiryOption:" : 1,
"groupId\"" : "groupId"
},
"templateId" : "Template_ID",
"nextSteps" : [ ]
} ]
}
}'
Enter the message ID you wish to cancel the message.
You can cancel the message using the message ID received in response to the message you sent.
All requests within the message will be canceled.
Request
POST /message/v1.0/messages/{messageId}/do-cancel
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | Y | Appkey |
| X-NHN-Authorization | Header | String | Y | Access token |
| messageId | Path | String | Y | null |
Request Body
This API does not request a request body.
Request Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
Request Example
### Cancel Sending Message
POST {{endpoint}}/message/v1.0/messages/{{messageId}}/do-cancel
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X POST "${endpoint}/message/v1.0/messages/${messageId}/do-cancel" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
After confirmation, check the message you requested to send.
Request
POST /message/v1.0/messages/{messageId}/do-confirm
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
Request Parameter
| Name | Category | Type | Required | Description |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | Y | Appkey |
| X-NHN-Authorization | Header | String | Y | Access token |
| messageId | Path | String | Y | null |
Request Body
이 API는 요청 본문을 요구하지 않습니다.
Response Body
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| Path | Type | Description |
|---|---|---|
| header | Object | |
| header.isSuccessful | Boolean | Indicates whether the request was successful. Default: true |
| header.resultCode | Integer | The result code of the request. Default: 0 |
| header.resultMessage | String | The result message of the request. Default: SUCCESS |
Request Example
### Confirm Message Delivery
POST {{endpoint}}/message/v1.0/messages/{{messageId}}/do-confirm
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X POST "${endpoint}/message/v1.0/messages/${messageId}/do-confirm" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"