페이지 이동경로
  • Docs>
  • Message template>
  • Default template

Message template

Default template

This document shows you how to create messages with predefined default templates for the Kakao Talk Message API or Kakao Talk Share API.

Overview

Default templates are template formats that compose messages as objects according to defined formats. For characteristics of default templates, refer to Understanding.

How to use

  1. Refer to Template types to decide which message template to use.
  2. Compose the template object according to the defined format of the desired template.
  3. When calling the Kakao Talk Message API or Kakao Talk Share API, pass the composed template object according to the parameter names specified for each language to send the message. Parameter names differ by language and template type, so refer to examples and the development documentation for your platform.

Feed template

To use the Feed template, you must compose the object as follows.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
object_type String Fixed as feed. O
content Content Main content information of the message. O
item_content ItemContent Content to include in the item area.
Used when composing as Feed Type B.
X
social Social Social information about the content. X
button_title String Set when you want to change the default button title ("View details"). X
buttons Buttons[] Button list, maximum 2.
Used when you want to change button title and link,
or when you want to add two buttons.
X
// Example of template_object composition for Feed template message
{
        "object_type": "feed",
        "content": {
            "title": "Today's Dessert",
            "description": "Americano, Bread, Cake",
            "image_url": "https://mud-kage.kakao.com/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg",
            "image_width": 640,
            "image_height": 640,
            "link": {
                "web_url": "http://www.daum.net",
                "mobile_web_url": "http://m.daum.net",
                "android_execution_params": "contentId=100",
                "ios_execution_params": "contentId=100"
            }
        },
        "item_content" : {
            "profile_text" :"Kakao",
            "profile_image_url" :"https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
            "title_image_url" : "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
            "title_image_text" :"Cheese cake",
            "title_image_category" : "Cake",
            "items" : [
                {
                    "item" :"Cake1",
                    "item_op" : "1000원"
                },
                {
                    "item" :"Cake2",
                    "item_op" : "2000원"
                },
                {
                    "item" :"Cake3",
                    "item_op" : "3000원"
                },
                {
                    "item" :"Cake4",
                    "item_op" : "4000원"
                },
                {
                    "item" :"Cake5",
                    "item_op" : "5000원"
                }
            ],
            "sum" :"Total",
            "sum_op" : "15000원"
        },
        "social": {
            "like_count": 100,
            "comment_count": 200,
            "shared_count": 300,
            "view_count": 400,
            "subscriber_count": 500
        },
        "buttons": [
            {
                "title": "Go to Web",
                "link": {
                    "web_url": "http://www.daum.net",
                    "mobile_web_url": "http://m.daum.net"
                }
            },
            {
                "title": "Go to App",
                "link": {
                    "android_execution_params": "contentId=100",
                    "ios_execution_params": "contentId=100"
                }
            }
        ]
    }'
Name Type Description Required
objectType String Fixed as feed. O
content ContentObject Main content information of the message. O
itemContent ItemContentObject Content to include in the item area.
Used when composing as Feed Type B.
X
social SocialObject Social information about the content. X
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons Array.<ButtonObject> Button list, maximum 2.
Used when you want to change button title and link,
or when you want to add two buttons.
X
// Example of template_object composition for Feed template message
{
  objectType: 'feed',
  content: {
    title: 'Today\'s Dessert',
    description: 'Americano, Bread, Cake',
    imageUrl:
      'https://mud-kage.kakao.com/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg',
    link: {
      mobileWebUrl: 'https://developers.kakao.com',
      webUrl: 'https://developers.kakao.com',
    },
  },
  itemContent: {
    profileText: 'Kakao',
    profileImageUrl: 'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png',
    titleImageUrl: 'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png',
    titleImageText: 'Cheese cake',
    titleImageCategory: 'Cake',
    items: [
      {
        item: 'Cake1',
        itemOp: '1000원',
      },
      {
        item: 'Cake2',
        itemOp: '2000원',
      },
      {
        item: 'Cake3',
        itemOp: '3000원',
      },
      {
        item: 'Cake4',
        itemOp: '4000원',
      },
      {
        item: 'Cake5',
        itemOp: '5000원',
      },
    ],
    sum: 'Total Payment',
    sumOp: '15000원',
  },
  social: {
    likeCount: 10,
    commentCount: 20,
    sharedCount: 30,
  },
  buttons: [
    {
      title: 'Go to Web',
      link: {
        mobileWebUrl: 'https://developers.kakao.com',
        webUrl: 'https://developers.kakao.com',
      },
    },
    {
      title: 'Go to App',
      link: {
        mobileWebUrl: 'https://developers.kakao.com',
        webUrl: 'https://developers.kakao.com',
      },
    },
  ],
}
Name Type Description Required
content Content Main content information of the message. O
itemContent ItemContent Content to include in the item area.
Used when composing as Feed Type B.
X
social Social Social information about the content. X
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons List<Button> Button list, maximum 2.
Used when you want to change button title and link,
or when you want to add two buttons.
X
// Example of FeedTemplate class composition for Feed template message

val defaultFeed = FeedTemplate(
    content = Content(
        title = "Today's Dessert",
        description = "#cake #strawberry #sampyeongdong #cafe #atmosphere #blinddate",
        imageUrl = "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
        link = Link(
            webUrl = "https://developers.kakao.com",
            mobileWebUrl = "https://developers.kakao.com"
        )
    ),
    itemContent = ItemContent(
        profileText = "Kakao",
        profileImageUrl = "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
        titleImageUrl = "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
        titleImageText = "Cheese cake",
        titleImageCategory = "Cake",
        items = listOf(
            ItemInfo(item = "cake1", itemOp = "1000원"),
            ItemInfo(item = "cake2", itemOp = "2000원"),
            ItemInfo(item = "cake3", itemOp = "3000원"),
            ItemInfo(item = "cake4", itemOp = "4000원"),
            ItemInfo(item = "cake5", itemOp = "5000원")
        ),
        sum = "Total",
        sumOp = "15000원"
    ),
    social = Social(
        likeCount = 286,
        commentCount = 45,
        sharedCount = 845
    ),
    buttons = listOf(
        Button(
            "View on Web",
            Link(
                webUrl = "https://developers.kakao.com",
                mobileWebUrl = "https://developers.kakao.com"
            )
        ),
        Button(
            "View on App",
            Link(
                androidExecutionParams = mapOf("key1" to "value1", "key2" to "value2"),
                iosExecutionParams = mapOf("key1" to "value1", "key2" to "value2")
            )
        )
    )
)
Name Type Description Required
content Content Main content information of the message. O
itemContent ItemContent Content to include in the item area.
Used when composing as Feed Type B.
X
social Social Social information about the content. X
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons [Button] Button list, maximum 2.
Used when you want to change button title and link,
or when you want to add two buttons.
X
// Example of FeedTemplate class composition for Feed template message

let title = "Feed Message"
let description = "Feed message example"

let feedTemplateJsonStringData =
    """
    {
        "object_type": "feed",
        "content": {
            "title": "Today's Dessert",
            "description": "#cake #strawberry #sampyeongdong #cafe #atmosphere #blinddate",
            "image_url": "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
            "link": {
                "mobile_web_url": "https://developers.kakao.com",
                "web_url": "https://developers.kakao.com"
            }
        },
        "item_content" : {
            "profile_text" :"Kakao",
            "profile_image_url" :"https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
            "title_image_url" : "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
            "title_image_text" :"Cheese cake",
            "title_image_category" : "Cake",
            "items" : [
                {
                    "item" :"Cake1",
                    "item_op" : "1000원"
                },
                {
                    "item" :"Cake2",
                    "item_op" : "2000원"
                },
                {
                    "item" :"Cake3",
                    "item_op" : "3000원"
                },
                {
                    "item" :"Cake4",
                    "item_op" : "4000원"
                },
                {
                    "item" :"Cake5",
                    "item_op" : "5000원"
                }
            ],
            "sum" :"Total",
            "sum_op" : "15000원"
        },
        "social": {
            "comment_count": 45,
            "like_count": 286,
            "shared_count": 845
        },
        "buttons": [
            {
                "title": "View on Web",
                "link": {
                    "mobile_web_url": "https://developers.kakao.com",
                    "web_url": "https://developers.kakao.com"
                }
            },
            {
                "title": "View on App",
                "link": {
                    "android_execution_params": "key1=value1&key2=value2",
                    "ios_execution_params": "key1=value1&key2=value2"
                }
            }
        ]
    }
    """.data(using: .utf8)!
Name Type Description Required
content Content Main content information of the message. O
itemContent ItemContent Content to include in the item area.
Used when composing as Feed Type B.
X
social Social Social information about the content. X
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons List<Button> Button list, maximum 2.
Used when you want to change button title and link,
or when you want to add two buttons.
X
// Example of FeedTemplate class composition for Feed template message

final FeedTemplate defaultFeed = FeedTemplate(
  content: Content(
    title: 'Strawberry Cheese Cake',
    description: '#cake #strawberry #sampyeongdong #cafe #atmosphere #blinddate',
    imageUrl: Uri.parse(
        'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png'),
    link: Link(
        webUrl: Uri.parse('https://developers.kakao.com'),
        mobileWebUrl: Uri.parse('https://developers.kakao.com')),
  ),
  itemContent: ItemContent(
    profileText: 'Kakao',
    profileImageUrl: Uri.parse(
        'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png'),
    titleImageUrl: Uri.parse(
        'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png'),
    titleImageText: 'Cheese cake',
    titleImageCategory: 'cake',
    items: [
      ItemInfo(item: 'cake1', itemOp: '1000원'),
      ItemInfo(item: 'cake2', itemOp: '2000원'),
      ItemInfo(item: 'cake3', itemOp: '3000원'),
      ItemInfo(item: 'cake4', itemOp: '4000원'),
      ItemInfo(item: 'cake5', itemOp: '5000원')
    ],
    sum: 'total',
    sumOp: '15000원',
  ),
  social: Social(likeCount: 286, commentCount: 45, sharedCount: 845),
  buttons: [
    Button(
      title: 'View on Web',
      link: Link(
        webUrl: Uri.parse('https: //developers.kakao.com'),
        mobileWebUrl: Uri.parse('https: //developers.kakao.com'),
      ),
    ),
    Button(
      title: 'View on App',
      link: Link(
        androidExecutionParams: {'key1': 'value1', 'key2': 'value2'},
        iosExecutionParams: {'key1': 'value1', 'key2': 'value2'},
      ),
    ),
  ],
);

List template

To use the List template, you must compose the object as follows.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
object_type String Fixed as list. O
header_title String Main title displayed at the top of the list, maximum 200 characters. O
header_link Link Link information corresponding to the header title content. O
contents Content[] Content list displayed in the list, minimum 2 required, maximum 3. O
button_title String Set when you want to change the default button title ("View details"). X
buttons Buttons[] Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of template_object composition for List template message
    {
        "object_type": "list",
        "header_title": "WEEKLY MAGAZINE",
        "header_link": {
            "web_url": "http://www.daum.net",
            "mobile_web_url": "http://m.daum.net",
            "android_execution_params": "main",
            "ios_execution_params": "main"
        },
        "contents": [
            {
                "title": "Space for Bicycle Riders",
                "description": "Magazine",
                "image_url": "https://mud-kage.kakao.com/dn/QNvGY/btqfD0SKT9m/k4KUlb1m0dKPHxGV8WbIK1/openlink_640x640s.jpg",
                "image_width": 640,
                "image_height": 640,
                "link": {
                    "web_url": "http://www.daum.net/contents/1",
                    "mobile_web_url": "http://m.daum.net/contents/1",
                    "android_execution_params": "/contents/1",
                    "ios_execution_params": "/contents/1"
                }
            },
            {
                "title": "Oreo Cappuccino with Amazing Visual",
                "description": "Magazine",
                "image_url": "https://mud-kage.kakao.com/dn/boVWEm/btqfFGlOpJB/mKsq9z6U2Xpms3NztZgiD1/openlink_640x640s.jpg",
                "image_width": 640,
                "image_height": 640,
                "link": {
                    "web_url": "http://www.daum.net/contents/2",
                    "mobile_web_url": "http://m.daum.net/contents/2",
                    "android_execution_params": "/contents/2",
                    "ios_execution_params": "/contents/2"
                }
            },
            {
                "title": "Atmosphere Full of Sensibility",
                "description": "Magazine",
                "image_url": "https://mud-kage.kakao.com/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg",
                "image_width": 640,
                "image_height": 640,
                "link": {
                    "web_url": "http://www.daum.net/contents/3",
                    "mobile_web_url": "http://m.daum.net/contents/3",
                    "android_execution_params": "/contents/3",
                    "ios_execution_params": "/contents/3"
                }
            }
        ],
        "buttons": [
            {
                "title": "Go to Web",
                "link": {
                    "web_url": "http://www.daum.net",
                    "mobile_web_url": "http://m.daum.net"
                }
            },
            {
                "title": "Go to App",
                "link": {
                    "android_execution_params": "main",
                    "ios_execution_params": "main"
                }
            }
        ]
    }'
Name Type Description Required
objectType String Fixed as list O
headerTitle String Main title displayed at the top of the list, maximum 200 characters O
headerLink LinkObject Link information corresponding to the header title content O
contents Array.<ContentObject> Content list displayed in the list, minimum 2 required, maximum 3 O
buttonTitle String Set when you want to change the default button title ("View details") X
buttons Array.<ButtonObject> Button list, maximum 2
Used when you want to change button title and link, or when you want to add two buttons
X
// Example of template_object composition for List template message
{
  objectType: 'list',
  headerTitle: 'WEEKLY MAGAZINE',
  headerLink: {
    mobileWebUrl: 'https://developers.kakao.com',
    webUrl: 'https://developers.kakao.com',
  },
  contents: [
    {
      title: 'My hobby, Table tennis',
      description: 'Sports',
      imageUrl:
        'http://k.kakaocdn.net/dn/bDPMIb/btqgeoTRQvd/49BuF1gNo6UXkdbKecx600/kakaolink40_original.png',
      link: {
        mobileWebUrl: 'https://developers.kakao.com',
        webUrl: 'https://developers.kakao.com',
      },
    },
    {
      title: 'Understanding coffee with cream',
      description: 'Food',
      imageUrl:
        'http://k.kakaocdn.net/dn/QPeNt/btqgeSfSsCR/0QJIRuWTtkg4cYc57n8H80/kakaolink40_original.png',
      link: {
        mobileWebUrl: 'https://developers.kakao.com',
        webUrl: 'https://developers.kakao.com',
      },
    },
    {
      title: 'Emotional atmosphere',
      description: 'Photo',
      imageUrl:
        'http://k.kakaocdn.net/dn/c7MBX4/btqgeRgWhBy/ZMLnndJFAqyUAnqu4sQHS0/kakaolink40_original.png',
      link: {
        mobileWebUrl: 'https://developers.kakao.com',
        webUrl: 'https://developers.kakao.com',
      },
    },
  ],
  buttons: [
    {
      title: 'View on Web',
      link: {
        mobileWebUrl: 'https://developers.kakao.com',
        webUrl: 'https://developers.kakao.com',
      },
    },
    {
      title: 'View on App',
      link: {
        mobileWebUrl: 'https://developers.kakao.com',
        webUrl: 'https://developers.kakao.com',
      },
    },
  ],
}
Note: Example code

When using JavaScript SDK, message composition field values differ between Kakao Talk Share API and Kakao Talk Message API, so refer to the examples below to implement in the appropriate format for each.

* When calling Kakao Talk Message API with Kakao SDK for JavaScript, snake case is applied to field names identical to REST API

Name Type Description Required
headerTitle String Main title displayed at the top of the list, maximum 200 characters O
headerLink Link Link information corresponding to the header title content O
contents List<Content> Content list displayed in the list, minimum 2 required, maximum 3 O
buttonTitle String Set when you want to change the default button title ("View details") X
buttons List<Button> Button list, maximum 2
Used when you want to change button title and link, or when you want to add two buttons
X
// Example of ListTemplate class composition for List template message

val defaultList = ListTemplate(
    headerTitle = "WEEKLY MAGAZINE",
    headerLink = Link(
        webUrl = "https://developers.kakao.com",
        mobileWebUrl = "https://developers.kakao.com"
    ),
    contents = listOf(
        Content(
            title = "My hobby, Table tennis",
            description = "Sports",
            imageUrl = "https://mud-kage.kakao.com/dn/bDPMIb/btqgeoTRQvd/49BuF1gNo6UXkdbKecx600/kakaolink40_original.png",
            link = Link(
                webUrl = "https://developers.kakao.com",
                mobileWebUrl = "https://developers.kakao.com"
            )
        ),
        Content(
            title = "Understanding coffee with cream",
            description = "Food",
            imageUrl = "https://mud-kage.kakao.com/dn/QPeNt/btqgeSfSsCR/0QJIRuWTtkg4cYc57n8H80/kakaolink40_original.png",
            link = Link(
                webUrl = "https://developers.kakao.com",
                mobileWebUrl = "https://developers.kakao.com"
            )
        ),
        Content(
            title = "Emotional atmosphere",
            description = "Photo",
            imageUrl = "https://mud-kage.kakao.com/dn/c7MBX4/btqgeRgWhBy/ZMLnndJFAqyUAnqu4sQHS0/kakaolink40_original.png",
            link = Link(
                webUrl = "https://developers.kakao.com",
                mobileWebUrl = "https://developers.kakao.com"
            )
        )
    ),
    buttons = listOf(
        Button(
            "View on Web",
            Link(
                webUrl = "https://developers.kakao.com",
                mobileWebUrl = "https://developers.kakao.com"
            )
        ),
        Button(
            "View on App",
            Link(
                androidExecutionParams = mapOf("key1" to "value1", "key2" to "value2"),
                iosExecutionParams = mapOf("key1" to "value1", "key2" to "value2")
            )
        )
    )
)
Name Type Description Required
headerTitle String Main title displayed at the top of the list, maximum 200 characters O
headerLink Link Link information corresponding to the header title content O
contents [Content] Content list displayed in the list, minimum 2 required, maximum 3 O
buttonTitle String Set when you want to change the default button title ("View details") X
buttons [Button] Button list, maximum 2
Used when you want to change button title and link, or when you want to add two buttons
X
// Example of ListTemplate class composition for List template message

let headerTitle = "List message example"
let listTemplateJsonStringData =
    """
    {
        "object_type": "list",
        "header_title": "WEEKLY MAGAZINE",
        "header_link": {
            "mobile_web_url": "https://developers.kakao.com",
            "web_url": "https://developers.kakao.com"
        },
        "contents": [
            {
                "title": "My hobby, Table tennis",
                "description": "Sports",
                "image_url": "https://mud-kage.kakao.com/dn/bDPMIb/btqgeoTRQvd/49BuF1gNo6UXkdbKecx600/kakaolink40_original.png",
                "link": {
                    "mobile_web_url": "https://developers.kakao.com",
                    "web_url": "https://developers.kakao.com"
                }
            },
            {
                "title": "Understanding coffee with cream",
                "description": "Food",
                "image_url": "https://mud-kage.kakao.com/dn/QPeNt/btqgeSfSsCR/0QJIRuWTtkg4cYc57n8H80/kakaolink40_original.png",
                "link": {
                    "mobile_web_url": "https://developers.kakao.com",
                    "web_url": "https://developers.kakao.com"
                }
            },
            {
                "title": "Emotional atmosphere",
                "description": "Photo",
                "image_url": "https://mud-kage.kakao.com/dn/c7MBX4/btqgeRgWhBy/ZMLnndJFAqyUAnqu4sQHS0/kakaolink40_original.png",
                "link": {
                    "mobile_web_url": "https://developers.kakao.com",
                    "web_url": "https://developers.kakao.com"
                }
            }
        ],
        "buttons": [
            {
                "title": "웹으로 보기",
                "link": {
                    "mobile_web_url": "https://developers.kakao.com",
                    "web_url": "https://developers.kakao.com"
                }
            },
            {
                "title": "앱으로 보기",
                "link": {
                    "android_execution_params": "key1=value1&key2=value2",
                    "ios_execution_params": "key1=value1&key2=value2"
                }
            }
        ]
    }
    """.data(using: .utf8)!
Name Type Description Required
headerTitle String Main title displayed at the top of the list, maximum 200 characters. O
headerLink Link Link information corresponding to the header title content. O
contents List<Content> Content list displayed in the list, minimum 2 required, maximum 3. X
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons List<Button> Button list, maximum 2.
Used when you want to change button title and link,
or when you want to add two buttons.
X
// Example of ListTemplate class composition for List template message

final ListTemplate defaultList = ListTemplate(
  headerTitle: 'WEEKLY MAGAZINE',
  headerLink: Link(
    webUrl: Uri.parse('https://developers.kakao.com'),
    mobileWebUrl: Uri.parse('https://developers.kakao.com'),
  ),
  contents: [
    Content(
      title: 'My hobby, Table tennis',
      description: 'Sports',
      imageUrl: Uri.parse(
          'https://mud-kage.kakao.com/dn/bDPMIb/btqgeoTRQvd/49BuF1gNo6UXkdbKecx600/kakaolink40_original.png'),
      link: Link(
        webUrl: Uri.parse('https://developers.kakao.com'),
        mobileWebUrl: Uri.parse('https://developers.kakao.com'),
      ),
    ),
    Content(
      title: 'Understanding coffee with cream',
      description: 'Food',
      imageUrl: Uri.parse(
          'https://mud-kage.kakao.com/dn/QPeNt/btqgeSfSsCR/0QJIRuWTtkg4cYc57n8H80/kakaolink40_original.png'),
      link: Link(
        webUrl: Uri.parse('https://developers.kakao.com'),
        mobileWebUrl: Uri.parse('https://developers.kakao.com'),
      ),
    ),
    Content(
      title: 'Emotional atmosphere',
      description: 'Photo',
      imageUrl: Uri.parse(
          'https://mud-kage.kakao.com/dn/c7MBX4/btqgeRgWhBy/ZMLnndJFAqyUAnqu4sQHS0/kakaolink40_original.png'),
      link: Link(
        webUrl: Uri.parse('https://developers.kakao.com'),
        mobileWebUrl: Uri.parse('https://developers.kakao.com'),
      ),
    ),
  ],
  buttons: [
    Button(
      title: 'View on Web',
      link: Link(
        webUrl: Uri.parse('https://developers.kakao.com'),
        mobileWebUrl: Uri.parse('https://developers.kakao.com'),
      ),
    ),
    Button(
      title: 'View on App',
      link: Link(
        androidExecutionParams: {'key1': 'value1', 'key2': 'value2'},
        iosExecutionParams: {'key1': 'value1', 'key2': 'value2'},
      ),
    ),
  ],
);

* header_image_url, header_image_width, header_image_height: Deprecated. For header background image, see Notice.

Commerce template

To use the Commerce template, you must compose the object as follows.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
object_type String Fixed as commerce. O
content Content Content information of the message. O
commerce Commerce Product name and price information. O
button_title String Set when you want to change the default button title ("View details"). X
buttons Buttons[] Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of template_object composition for Commerce template message
{
    "object_type": "commerce",
    "content": {
        "title": "Ivory long dress (4 Color)",
        "image_url": "https://mud-kage.kakao.com/dn/RY8ZN/btqgOGzITp3/uCM1x2xu7GNfr7NS9QvEs0/kakaolink40_original.png",
        "image_width": 640,
        "image_height": 640,
        "link": {
            "web_url": "https://style.kakao.com/main/women/contentId=100",
            "mobile_web_url": "https://style.kakao.com/main/women/contentId=100",
            "android_execution_params": "contentId=100",
            "ios_execution_params": "contentId=100"
        }
    },
    "commerce": {
        "regular_price": 208800,
        "discount_price": 146160,
        "discount_rate": 30
    },
    "buttons": [
        {
            "title": "Buy now",
            "link": {
                "web_url": "https://style.kakao.com/main/women/contentId=100/buy",
                "mobile_web_url": "https://style.kakao.com/main/women/contentId=100/buy",
                "android_execution_params": "contentId=100&buy=true",
                "ios_execution_params": "contentId=100&buy=true"
            }
        },
        {
            "title": "Share",
            "link": {
                "web_url": "https://style.kakao.com/main/women/contentId=100/share",
                "mobile_web_url": "https://style.kakao.com/main/women/contentId=100/share",
                "android_execution_params": "contentId=100&share=true",
                "ios_execution_params": "contentId=100&share=true"
            }
        }
    ]
}
Name Type Description Required
objectType String Fixed as commerce. O
content ContentObject Content information of the message. O
commerce CommerceObject Product name and price information. O
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons Array.<ButtonObject> Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of template_object composition for Commerce template message
{
  objectType: 'commerce',
  content: {
    title: 'Anytime, anywhere, make your daily life easier and more enjoyable. Let me tell you the story of Hey Ryan.',
    imageUrl:
      'http://k.kakaocdn.net/dn/dScJiJ/btqB3cwK1Hi/pv5qHVwetz5RZfPZR3C5K1/kakaolink40_original.png',
    link: {
      mobileWebUrl: 'https://developers.kakao.com',
      webUrl: 'https://developers.kakao.com',
    },
  },
  commerce: {
    productName: 'Kakao Mini',
    regularPrice: 100000,
    discountRate: 10,
    discountPrice: 90000,
  },
  buttons: [
    {
      title: 'Buy now',
      link: {
        mobileWebUrl: 'https://developers.kakao.com',
        webUrl: 'https://developers.kakao.com',
      },
    },
    {
      title: 'Share',
      link: {
        mobileWebUrl: 'https://developers.kakao.com',
        webUrl: 'https://developers.kakao.com',
      },
    },
  ],
}
Name Type Description Required
content Content Content information of the message O
commerce Commerce Product name and price information O
buttonTitle String Set when you want to change the default button title ("View details") X
buttons List<Button> Button list, up to 2
Use when you want to change the button title and link, or add two buttons
X
// Example of CommerceTemplate composition for Commerce template message

val defaultCommerce = CommerceTemplate(
    content = Content(
        title = "Ivory long dress (4 Color)",
        imageUrl = "https://mud-kage.kakao.com/dn/RY8ZN/btqgOGzITp3/uCM1x2xu7GNfr7NS9QvEs0/kakaolink40_original.png",
        link = Link(
            webUrl = "https://developers.kakao.com",
            mobileWebUrl = "https://developers.kakao.com"
        )
    ),
    commerce = Commerce(
        regularPrice = 208800,
        discountPrice = 146160,
        discountRate = 30,
        productName = "Ivory long dress"
    ),
    buttons = listOf(
        Button(
            "Purchase",
            Link(
                webUrl = "https://developers.kakao.com",
                mobileWebUrl = "https://developers.kakao.com"
            )
        ),
        Button(
            "Share",
            Link(
                androidExecutionParams = mapOf("key1" to "value1", "key2" to "value2"),
                iosExecutionParams = mapOf("key1" to "value1", "key2" to "value2")
            )
        )
    )
)
Name Type Description Required
content Content Content information of the message. O
commerce CommerceDetail Product name and price information. O
buttonTitle String Set when you want to change the default button title ("See more"). X
buttons [Button] Button list, up to 2.
Use when you want to change the button title and link, or add two buttons.
X
// Example of CommerceTemplate composition for Commerce template message

let title = "Commerce Message"
let description = "Commerce message example"

let commerceTemplateJsonStringData =
    """
    {
        "object_type": "commerce",
        "commerce": {
            "product_name": "Ivory long dress",
            "regular_price": 208800,
            "discount_price": 146160,
            "discount_rate": 30
        },
        "content": {
            "title": "Ivory long dress (4 Color)",
            "image_url": "https://mud-kage.kakao.com/dn/RY8ZN/btqgOGzITp3/uCM1x2xu7GNfr7NS9QvEs0/kakaolink40_original.png",
            "link": {
                "mobile_web_url": "https://developers.kakao.com",
                "web_url": "https://developers.kakao.com"
            },
        },
        "buttons": [
            {
                "title": "Purchase",
                "link": {
                    "mobile_web_url": "https://developers.kakao.com",
                    "web_url": "https://developers.kakao.com"
                }
            },
            {
                "title": "Share",
                "link": {
                    "android_execution_params": "key1=value1&key2=value2",
                    "ios_execution_params": "key1=value1&key2=value2"
                }
            }
        ]
    }
    """.data(using: .utf8)!
Name Type Description Required
content Content Content information of the message. O
commerce Commerce Product name and price information. O
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons List<Button> Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of CommerceTemplate composition for Commerce template message

final CommerceTemplate defaultCommerce = CommerceTemplate(
  content: Content(
    title: 'Ivory long dress (4 Color)',
    imageUrl: Uri.parse(
        'https://mud-kage.kakao.com/dn/RY8ZN/btqgOGzITp3/uCM1x2xu7GNfr7NS9QvEs0/kakaolink40_original.png'),
    link: Link(
      webUrl: Uri.parse('https://developers.kakao.com'),
      mobileWebUrl: Uri.parse('https://developers.kakao.com'),
    ),
  ),
  commerce: Commerce(
    regularPrice: 208800,
    discountPrice: 146160,
    discountRate: 30,
    productName: "Ivory long dress",
    currencyUnit: "₩",
    currencyUnitPosition: 1,
  ),
  buttons: [
    Button(
      title: 'Purchase',
      link: Link(
        webUrl: Uri.parse('https://developers.kakao.com'),
        mobileWebUrl: Uri.parse('https://developers.kakao.com'),
      ),
    ),
    Button(
      title: 'Share',
      link: Link(
        androidExecutionParams: {'key1': 'value1', 'key2': 'value2'},
        iosExecutionParams: {'key1': 'value1', 'key2': 'value2'},
      ),
    )
  ],
);

Location template

To use the Location template, you must compose the object as follows.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
object_type String Fixed as location. O
address String Address of the location to share.
(Example: 235, Pangyoyeok-ro, Bundang-gu, Seongnam-si, Gyeonggi-do.)
O
address_title String Title used in the map view in KakaoTalk.
(Example: Kakao Pangyo Office.)
X
content Content Content information describing the location. O
social Social Additional social information. X
button_title String Set when you want to change the default button title ("View details"). X
buttons Buttons[] Button list, up to 2.
Used when you want to change the button title and link, or add two buttons.
X
// Example of template_object composition for Location template message
{
    "object_type": "location",
    "content": {
        "title": "Kakao Pangyo Office",
        "description": "Location of Kakao Pangyo Office.",
        "image_url": "https://mud-kage.kakao.com/dn/drTdbB/bWYf06POFPf/owUHIt7K7NoGD0hrzFLeW0/kakaolink40_original.png",
        "image_width": 800,
        "image_height": 800,
        "link": {
            "web_url": "https://developers.kakao.com",
            "mobile_web_url": "https://developers.kakao.com/mobile",
            "android_execution_params": "platform=android",
            "ios_execution_params": "platform=ios"
        }
    },
    "buttons": [
        {
            "title": "View on Web",
            "link": {
                "web_url": "https://developers.kakao.com",
                "mobile_web_url": "https://developers.kakao.com/mobile"
            }
        }
    ],
    "address": "235 Pangyo Station-ro, Bundang-gu, Seongnam-si, Gyeonggi-do, H Square N Building 7th Floor",
    "address_title": "Kakao Pangyo Office"
}
Name Type Description Required
objectType String Fixed as location. O
address String Address of the location to share.
(Example: 235, Pangyoyeok-ro, Bundang-gu, Seongnam-si, Gyeonggi-do.)
O
addressTitle String Title used in the map view in KakaoTalk.
(Example: Kakao Pangyo Office.)
X
content ContentObject Content information describing the location. O
social SocialObject Additional social information. X
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons Array.<ButtonObject> Button list, up to 2.
Used when you want to change the button title and link, or add two buttons.
X
// Example of template_object composition for Location template message
{
  objectType: 'location',
  address: '166 Pangyo Station-ro, Bundang-gu, Seongnam-si, Gyeonggi-do, 3rd Floor',
  addressTitle: 'Kakao Pangyo Office Chat',
  content: {
    title: 'New menu release♥︎ Cherry Blossom Latte',
    description: 'This week is Cherry Blossom Latte 1+1',
    imageUrl:
      'http://k.kakaocdn.net/dn/bSbH9w/btqgegaEDfW/vD9KKV0hEintg6bZT4v4WK/kakaolink40_original.png',
    link: {
      mobileWebUrl: 'https://developers.kakao.com',
      webUrl: 'https://developers.kakao.com',
    },
  },
  social: {
    likeCount: 286,
    commentCount: 45,
    sharedCount: 845,
  },
  buttons: [
    {
      title: 'View on Web',
      link: {
        mobileWebUrl: 'https://developers.kakao.com',
        webUrl: 'https://developers.kakao.com',
      },
    },
  ],
}
Name Type Description Required
address String Address of the location to share.
(Example: Gyeonggi Seongnam Bundang-gu Pangyo Station-ro 235)
O
addressTitle String Title used in the map view within Kakao Talk.
(Example: Kakao Pangyo Office)
X
content Content Content information describing the location. O
social Social Additional social information. X
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons List<Button> Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of LocationTemplate class composition for Location template message

val defaultLocation = LocationTemplate(
    address = "Gyeonggi Seongnam Bundang-gu Pangyo Station-ro 235 H Square N Building 8th Floor",
    addressTitle = "Kakao Pangyo Office Chat",
    content = Content(
        title = "New menu release❤️ Cherry Blossom Latte",
        description = "This week is Cherry Blossom Latte 1+1",
        imageUrl = "https://mud-kage.kakao.com/dn/bSbH9w/btqgegaEDfW/vD9KKV0hEintg6bZT4v4WK/kakaolink40_original.png",
        link = Link(
            webUrl = "https://developers.com",
            mobileWebUrl = "https://developers.kakao.com"
        )
    ),
    social = Social(
        likeCount = 286,
        commentCount = 45,
        sharedCount = 845
    )
)
Name Type Description Required
address String Address of the location to share.
(Example: Gyeonggi Seongnam Bundang-gu Pangyo Station-ro 235)
O
addressTitle String Title used in the map view within Kakao Talk.
(Example: Kakao Pangyo Office)
X
content Content Content information describing the location. O
social Social Additional social information. X
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons [Button] Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of LocationTemplate class composition for Location template message

let title = "Location Message"
let description = "Location message example"

let locationTemplateJsonStringData =
    """
    {
        "object_type": "location",
        "address_title": "Kakao Pangyo Office Chat",
        "address": "Gyeonggi Seongnam Bundang-gu Pangyo Station-ro 235 H Square N Building 8th Floor",
        "content": {
            "description": "This week is Cherry Blossom Latte 1+1",
            "image_url": "https://mud-kage.kakao.com/dn/bSbH9w/btqgegaEDfW/vD9KKV0hEintg6bZT4v4WK/kakaolink40_original.png",
            "link": {
                "mobile_web_url": "https://developers.kakao.com",
                "web_url": "https://developers.com"
            },
            "title": "New menu release❤️ Cherry Blossom Latte"
        },
        "social": {
            "comment_count": 45,
            "like_count": 286,
            "shared_count": 845
        }
    }
    """.data(using: .utf8)!
Name Type Description Required
address String Address to share
(e.g., 235, Pangyo Station-ro, Bundang-gu, Seongnam-si, Gyeonggi-do)
O
addressTitle String Title used in the map view within KakaoTalk
(e.g., Kakao Pangyo Office)
X
content Content Content information describing the location O
social Social Additional social information X
buttonTitle String Set when you want to change the default button title ("View Details") X
buttons List<Button> Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of LocationTemplate class composition for Location template message

final LocationTemplate defaultLocation = LocationTemplate(
  address: 'Gyeonggi Seongnam Bundang-gu Pangyo Station-ro 235 H Square N Building 8th Floor',
  content: Content(
    title: 'New menu release❤️ Cherry Blossom Latte',
    description: 'This week is Cherry Blossom Latte 1+1',
    imageUrl: Uri.parse(
        'https://mud-kage.kakao.com/dn/bSbH9w/btqgegaEDfW/vD9KKV0hEintg6bZT4v4WK/kakaolink40_original.png'),
    link: Link(
      webUrl: Uri.parse('https://developers.kakao.com'),
      mobileWebUrl: Uri.parse('https://developers.kakao.com'),
    ),
  ),
  social: Social(likeCount: 286, commentCount: 45, sharedCount: 845),
);

Text template

To use the Text template, you must compose the object as follows.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
object_type String Fixed as text. O
text String Text information, maximum 200 characters. O
link Link Link information to move when content is clicked. O
button_title String Set when you want to change the default button title ("View details"). X
buttons Buttons[] Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of template_object composition for Text template message
{
    "object_type": "text",
        "text": "This is the text area. You can display up to 200 characters.",
        "link": {
            "web_url": "https://developers.kakao.com",
            "mobile_web_url": "https://developers.kakao.com"
        },
        "button_title": "Check now"
}
Name Type Description Required
objectType String Fixed as text. O
text String Text information, maximum 200 characters. O
link LinkObject Link information to move when content is clicked. O
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons Array.<ButtonObject> Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of template_object composition for Text template message
{
  objectType: 'text',
  text:
    'The text template provided as a default template can display text up to 200 characters. The text template has a text area and one default button. You can also set arbitrary buttons. For more extended forms of Kakao Talk sharing such as multiple images and profile information, you can use other templates.',
  link: {
    mobileWebUrl: 'https://developers.kakao.com',
    webUrl: 'https://developers.kakao.com',
  },
}
Name Type Description Required
text String Text information, maximum 200 characters. O
link Link Link information to move when content is clicked. O
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons List<Button> Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of TextTemplate class composition for Text template message

val defaultText = TextTemplate(
    text = """
        Kakao Talk sharing executes Kakao Talk to
        send messages to the chat room selected by the user.
    """.trimIndent(),
    link = Link(
        webUrl = "https://developers.kakao.com",
        mobileWebUrl = "https://developers.kakao.com"
    )
)
Name Type Description Required
text String Text information, maximum 200 characters. O
link Link Link information to move when content is clicked. O
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons [Button] Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of TextTemplate class composition for Text template message

let text = "Kakao Talk sharing is a representative feature of Kakao platform services that can execute various functions by linking with the Kakao platform installed on the user's mobile device.\\n\\nCurrently available Kakao Talk sharing is as follows:\\nKakao Talk Link\\nExecutes Kakao Talk to send messages to the chat room selected by the user."

let textTemplateJsonStringData =
"""
{
    "object_type": "text",
    "text": "\(text)",
    "link": {
        "web_url": "http://dev.kakao.com",
        "mobile_web_url": "http://dev.kakao.com"
    },
            "button_title": "Check now"
}
""".data(using: .utf8)!
Name Type Description Required
text String Text information, maximum 200 characters. O
link Link Link information to move when content is clicked. O
buttonTitle String Set when you want to change the default button title ("View details"). X
buttons List<Button> Button list, maximum 2.
Used when you want to change button title and link, or when you want to add two buttons.
X
// Example of TextTemplate class composition for Text template message

final TextTemplate defaultText = TextTemplate(
  text:
      'Kakao Talk sharing is a representative feature of Kakao platform services that can execute various functions by linking with the Kakao platform installed on the user\'s mobile device.\nCurrently available Kakao Talk sharing is as follows:\nKakao Talk Link\nExecutes Kakao Talk to send messages to the chat room selected by the user.',
  link: Link(
    webUrl: Uri.parse('https: //developers.kakao.com'),
    mobileWebUrl: Uri.parse('https: //developers.kakao.com'),
  ),
);

Calendar template

To use the Calendar template, you must compose the object as follows.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
object_type String Fixed as calendar. O
id_type String Type of id, one of event (public schedule) or calendar (subscription calendar).

Important: Depending on id_type, the default button in 🅒 outputs the following specified text.
Public event ID: [Schedule registration].
Subscription calendar ID: [Calendar subscription].
O
id String Public event or Subscribed calendar ID. O
content Content Schedule title and description. O
buttons Buttons[] User-defined button information, maximum 1 button information only.
Calendar messages provide a default button for adding public schedules or subscribing to subscription calendars, and 1 user-defined button can be optionally added.
X
// Example of template_object composition for Calendar template message
{
    "object_type": "calendar",
    "content": {
        "title": "Schedule title",
        "description": "Schedule description",
        "image_url": "https://developers.kakao.com/static/images/pc/txt_visual1.png",
        "link": {
            "web_url":"https://kakao.com"
        }
    },
    "buttons": [
        {
            "title": "View schedule information",
            "link": {
                "web_url": "https://developers.kakao.com",
                "mobile_web_url": "https://developers.kakao.com/mobile"
            }
        }
    ],
    "id_type": "event",
    "id": "6351f57c7ec8e318d0b809a0"
}
Name Type Description Required
objectType String Fixed as calendar. O
idType String Type of id, one of event (public schedule) or calendar (subscription calendar).

Important: Depending on idType, the default button in 🅒 outputs the specified text below.
Public event ID: [Register schedule].
Subscription calendar ID: [Subscribe to calendar].
O
id String Public event or Subscribed calendar ID. O
content ContentObject Schedule title and description. O
buttons Array.<ButtonObject> User-defined button information, only up to 1 button information is used.
Calendar messages provide a default button for adding public schedules or subscribing to subscription calendars, and 1 user-defined button can be optionally added.
X
// Example of template_object composition for Calendar template message
{
  objectType: 'calendar',
  idType: 'event',
  id: '${YOUR_EVENT_ID}',
  content: {
    title: 'January New Release Review Meeting',
    description: 'You are invited to a monthly gathering to share your thoughts on the latest releases.',
    imageUrl:
      'http://k.kakaocdn.net/dn/dFUqwp/bl3SUTqb2VV/VFSqyPpKUzZVVMcmotN9A0/kakaolink40_original.png',
    link: {
      webUrl: 'https://developers.kakao.com',
      mobileWebUrl: 'https://developers.kakao.com',
    },
  },
  buttons: [
    {
      title: 'View Meeting Topic',
      link: {
        webUrl: 'https://developers.kakao.com',
        mobileWebUrl: 'https://developers.kakao.com',
      },
    },
  ],
}
Name Type Description Required
idType String Type of id, either event (public event) or calendar (subscription calendar).

Important: Depending on idType, the default button in 🅒 is displayed with the phrase below.
Public event ID: [Register event]
Subscription calendar ID: [Subscribe to calendar]
O
id String Public event or Subscribed calendar ID O
content Content Event title and description O
buttons List<Button> Custom button information, only up to 1 button can be used.
Calendar messages provide a default button for adding a public event or subscribing to a subscription calendar, and you can optionally add one custom button.
X
// Example of CalendarTemplate class composition for Calendar template message

val defaultCalendar = CalendarTemplate(
    idType = IdType.EVENT,
    id = "${YOUR_EVENT_ID}",
    content = Content(
        title = "January New Release Review Meeting",
        description = "You are invited to a monthly gathering to share your thoughts on the latest releases.",
        imageUrl = "http://k.kakaocdn.net/dn/dFUqwp/bl3SUTqb2VV/VFSqyPpKUzZVVMcmotN9A0/kakaolink40_original.png",
        link = Link(
            webUrl = "https://developers.kakao.com",
            mobileWebUrl = "https://developers.kakao.com",
        )
    ),
    buttons = listOf(
        Button(
            title = "View Meeting Topic",
            link = Link(
                webUrl = "https://developers.kakao.com",
                mobileWebUrl = "https://developers.kakao.com",
            ),
        )
    )
)
Name Type Description Required
idType IdType Type of id, either event (public event) or calendar (subscription calendar).

Important: Depending on idType, the default button in 🅒 is displayed with the phrase below.
Public event ID: [Register event].
Subscription calendar ID: [Subscribe to calendar].
O
id String Public event or Subscribed calendar ID. O
content Content Event title and description. O
buttons [Button] Custom button information, only one button can be used.
Calendar messages provide a default button for adding a public event or subscribing to a subscription calendar, and you can optionally add one custom button.
X
// Example of composing a CalendarTemplate class for a calendar template message

let calendarTemplateJsonStringData =
"""
{
    "object_type": "calendar",
    "id_type": "\(CalendarTemplate.IdType.Event.rawValue)",
    "id": "${YOUR_EVENT_ID}",
    "content": {
        "link": {
            "web_url": "https://devtalk.kakao.com",
            "mobile_web_url": "https://developers.kakao.com"
        },
        "title": "January New Release Review Meeting",
        "image_url": "http://k.kakaocdn.net/dn/dFUqwp/bl3SUTqb2VV/VFSqyPpKUzZVVMcmotN9A0/kakaolink40_original.png"
    },
    "buttons": [
        {
            "title": "View Meeting Topic",
            "link": {
                "mobile_web_url": "https://developers.kakao.com",
                "web_url": "https://developers.kakao.com"
            }
        }
    ]
}
""".data(using: .utf8)!
Name Type Description Required
idType String Type of id, either event (public event) or calendar (subscription calendar).

Important: Depending on idType, the default button in 🅒 is displayed with the phrase below.
Public event ID: [Register event]
Subscription calendar ID: [Subscribe to calendar]
O
id String Public event or Subscribed calendar ID O
content Content Event title and description O
buttons List<Button> Custom button information, only one button can be used.
Calendar messages provide a default button for adding a public event or subscribing to a subscription calendar, and you can optionally add one custom button.
X
// Example of composing a CalendarTemplate class for a calendar template message

final CalendarTemplate defaultCalendar = CalendarTemplate(
  idType: IdType.event,
  id: '${YOUR_EVENT_ID}',
  content: Content(
    title: 'January New Release Review Meeting',
    description: 'You are invited to a monthly meeting to share your thoughts on the latest releases.',
    imageUrl: Uri.parse(
        'http://k.kakaocdn.net/dn/dFUqwp/bl3SUTqb2VV/VFSqyPpKUzZVVMcmotN9A0/kakaolink40_original.png'),
    link: Link(
      webUrl: Uri.parse('https://developers.kakao.com'),
      mobileWebUrl: Uri.parse('https://developers.kakao.com'),
    ),
  ),
  buttons: [
    Button(
      title: 'View Meeting Topic',
      link: Link(
        webUrl: Uri.parse('https://developers.kakao.com'),
        mobileWebUrl: Uri.parse('https://developers.kakao.com'),
      ),
    )
  ],
);

Common components

This section describes the common components that make up message templates.

Content

This object contains the basic content information of the message, such as message title, body, and image information.

For images, they must be passed as URLs and must comply with RFC2396, RFC1034, and RFC1123. Image URLs that do not comply with the specifications will not display images.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
title String Title of the content O*
image_url String Image URL of the content O*
image_width Int Width of the content image in pixels X
image_height Int Height of the content image in pixels X
description String Detailed description of the content, displayed up to 4 lines combined with the title O*
link Link Link information to navigate to when the content is clicked O
Name Type Description Required
title String Title of the content O*
imageUrl String Image URL of the content O*
imageWidth Number Width of the content image in pixels X
imageHeight Number Height of the content image in pixels X
description String Detailed description of the content, displayed up to 4 lines combined with the title O*
link LinkObject Link information to navigate to when the content is clicked O

When using the Android SDK, use the Content class.

Name Type Description Required
title String Title of the content O*
imageUrl String Image URL of the content O*
imageWidth Int Width of the content image in pixels X
imageHeight Int Height of the content image in pixels X
description String Detailed description of the content, displayed up to 4 lines combined with the title O*
link Link Link information to navigate to when the content is clicked O

When using the iOS SDK, use the Content class.

Name Type Description Required
title String Title of the content O*
imageURL URL Image URL of the content O*
imageWidth Int Width of the content image in pixels X
imageHeight Int Height of the content image in pixels X
description String Detailed description of the content, displayed up to 4 lines combined with the title O*
link Link Link information to navigate to when the content is clicked O

When using the Flutter SDK, use the Content class.

Name Type Description Required
title String Title of the content O*
imageUrl String Image URL of the content O*
imageWidth Int Width of the content image in pixels X
imageHeight Int Height of the content image in pixels X
description String Detailed description of the content, displayed up to 4 lines combined with the title O*
link Link Link information to navigate to when the content is clicked O

* One of title, image_url, or description is required


Button

This object contains information about buttons included in the message. It defines the button text and actions when clicked.

When composing a message, if both buttonTitle and buttons are provided, buttons takes precedence. If neither is provided, one button is composed with the default title and link information from content.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
title String Button title O
link Link Link information to move to when the button is clicked (at least one is required) O
Name Type Description Required
title String Button title O
link LinkObject Link information to navigate to when the button is clicked (at least one is required) O

When using the Android SDK, use the Button class.

Name Type Description Required
title String Button title O
link Link Link information to navigate to when the button is clicked (at least one is required) O

When using the iOS SDK, use the Button class.

Name Type Description Required
title String Button title O
link Link Link information to navigate to when the button is clicked (at least one is required) O

When using the Flutter SDK, use the Button class.

Name Type Description Required
title String Button title O
link Link Link information to navigate to when the button is clicked (at least one is required) O

Link

This object contains link information that moves when the content area or button is clicked in the message.

You can set different links for each platform, and the appropriate link works according to the user's Kakao Talk execution environment. Web links are supported on PC/Mac, Android, and iOS. Android and iOS links are only applied to buttons on their respective platforms. For more details, refer to Link behavior.

To apply links to messages, at least one field in link must be set. If no link is set or there is no link setting available in the user's Kakao Talk execution environment, links will not be applied to the message content area or buttons will not appear.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
web_url String Web link URL used in Kakao Talk for PC version.
The domain part must match the site domain registered in [My Application] > [Platform] > [Web].
O*
mobile_web_url String Web link URL used in Kakao Talk for mobile.
The domain part must match the site domain registered in [My Application] > [Platform] > [Web].
O*
android_execution_params String Parameters used in the app link URL for Kakao Talk on Android.
If this value is not provided, mobile_web_url is used.
O*
ios_execution_params String Parameters used in the app link URL for Kakao Talk on iOS.
If this value is not provided, mobile_web_url is used.
O*
Name Type Description Required
webUrl String Web link URL used in Kakao Talk for PC version.
The domain part must match the site domain registered in [My Application] > [Platform] > [Web].
O*
mobileWebUrl String Web link URL used in Kakao Talk for mobile.
The domain part must match the site domain registered in [My Application] > [Platform] > [Web].
O*
androidExecutionParams String Parameters used in the app link URL for Kakao Talk on Android.
If this value is not provided, mobile_web_url is used.
O*
iosExecutionParams String Parameters used in the app link URL for Kakao Talk on iOS.
If this value is not provided, mobile_web_url is used.
O*

When using the Android SDK, use the Link class.

Name Type Description Required
webUrl String Web link URL used in Kakao Talk for PC version.
The domain part must match the site domain registered in [My Application] > [Platform] > [Web].
O*
mobileWebUrl String Web link URL used in Kakao Talk for mobile.
The domain part must match the site domain registered in [My Application] > [Platform] > [Web].
O*
androidExecutionParams Map<String,String> Parameters used in the app link URL for Kakao Talk on Android.
If this value is not provided, mobile_web_url is used.
O*
iosExecutionParams Map<String,String> Parameters used in the app link URL for Kakao Talk on iOS.
If this value is not provided, mobile_web_url is used.
O*

When using the iOS SDK, use the Link class.

Name Type Description Required
webURL URL Web link URL used in Kakao Talk for PC version.
The domain part must match the site domain registered in [My Application] > [Platform] > [Web].
O*
mobileWebURL URL Web link URL used in Kakao Talk for mobile.
The domain part must match the site domain registered in [My Application] > [Platform] > [Web].
O*
androidExecutionParams String Parameters used in the app link URL for Kakao Talk on Android.
If this value is not provided, mobile_web_url is used.
O*
iosExecutionParams String Parameters used in the app link URL for Kakao Talk on iOS.
If this value is not provided, mobile_web_url is used.
O*

When using the Flutter SDK, use the Link class.

Name Type Description Required
webUrl Uri Web link URL used in Kakao Talk for PC version.
The domain part must match the site domain registered in [My Application] > [Platform] > [Web].
O*
mobileWebUrl Uri Web link URL used in Kakao Talk for mobile.
The domain part must match the site domain registered in [My Application] > [Platform] > [Web].
O*
androidExecutionParams Map<String,String> Parameters used in the app link URL for Kakao Talk on Android.
If this value is not provided, mobile_web_url is used.
O*
iosExecutionParams Map<String,String> Parameters used in the app link URL for Kakao Talk on iOS.
If this value is not provided, mobile_web_url is used.
O*

* One of web_url, mobile_web_url, android_execution_params, or ios_execution_params is required.

Social

This object is used to display areas that show social metrics such as likes, comments, shares, views, and subscriber counts for content.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
like_count Int Number of likes for the content X
comment_count Int Number of comments for the content X
shared_count Int Number of shares for the content X
view_count Int Number of views for the content X
subscriber_count Int Number of subscribers for the content X
Name Type Description Required
likeCount Number Number of likes for the content X
commentCount Number Number of comments for the content X
sharedCount Number Number of shares for the content X
viewCount Number Number of views for the content X
subscriberCount Number Number of subscribers for the content X

When using the Android SDK, use the Social class.

Name Type Description Required
likeCount Int Number of likes for the content X
commentCount Int Number of comments for the content X
sharedCount Int Number of shares for the content X
viewCount Int Number of views for the content X
subscriberCount Int Number of subscribers for the content X

When using the iOS SDK, use the Social class.

Name Type Description Required
likeCount Int Number of likes for the content X
commentCount Int Number of comments for the content X
sharedCount Int Number of shares for the content X
viewCount Int Number of views for the content X
subscriberCount Int Number of subscribers for the content X

When using the Flutter SDK, use the Social class.

Name Type Description Required
likeCount Int Number of likes for the content X
commentCount Int Number of comments for the content X
sharedCount Int Number of shares for the content X
viewCount Int Number of views for the content X
subscriberCount Int Number of subscribers for the content X

ItemContent

This is text item information that can be used in Feed Type B templates.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
profile_text String Text displayed in the header or profile area.
If profile_image_url is not provided, only a bold title is shown as the header.
Up to 16 characters.
X
profile_image_url String Image displayed in the profile area.
Shown as a small circular profile photo.
X
title_image_text String Title of the image item.
Up to 2 lines, up to 24 characters.
X
title_image_url String Image of the image item.
iOS: 108*108, Android: 98*98 size.
Images not in 1:1 ratio are center cropped.
X
title_image_category String Category information displayed in gray text below the image item title.
Up to 1 line, up to 14 characters.
X
items ItemInfo[] Information for each text item.
JSON array including item and item_op for item name and price, up to 5 items supported.
(e.g., [{"item": "item1 name", "item_op": "item1_description"}, {"item": "item2 name", "item_op": "item2_description"}])
X
sum String Summary title for the item area, such as order amount or payment amount.
Displayed below the text item area, up to 6 characters.

Important: The 🅖 area must have at least one item, and both sum and sum_op must be provided for the 🅗 area to be displayed.
Note: When using the 🅗 area, item_op and sum_op in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned.
X
sum_op String Total price information for the item area.
Displayed in bold below the text item area, up to 11 characters.

Important: The 🅖 area must have at least one item, and both sum and sum_op must be provided for the 🅗 area to be displayed.
Note: When using the 🅗 area, item_op and sum_op in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned.
X
Name Type Description Required
profileText String Text displayed in the header or profile area.
If profileImageUrl is not provided, only a bold title is shown as the header.
Up to 16 characters.
X
profileImageUrl String Image displayed in the profile area.
Shown as a small circular profile photo.
X
titleImageText String Title of the image item.
Up to 2 lines, up to 24 characters.
X
titleImageUrl String Image of the image item.
iOS: 108*108, Android: 98*98 size.
Images not in 1:1 ratio are center cropped.
X
titleImageCategory String Category information displayed in gray text below the image item title.
Up to 1 line, up to 14 characters.
X
items Array.<ItemObject> Information for each text item.
JSON array including item and itemOp for item name and price, up to 5 items supported.
(e.g., [{"item": "item1 name", "itemOp": "item1_description"}, {"item": "item2 name", "itemOp": "item2_description"}])
X
sum String Summary title for the item area, such as order amount or payment amount.
Displayed below the text item area, up to 6 characters.

Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.
Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned.
X
sumOp String Total price information for the item area.
Displayed in bold below the text item area, up to 11 characters.

Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.
Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned.
X

When using the Android SDK, use the ItemContent class.

Name Type Description Required
profileText String Text displayed in the header or profile area.
If profileImageUrl is not provided, only a bold title is shown as the header.
Up to 16 characters.
X
profileImageUrl String Image displayed in the profile area.
Shown as a small circular profile photo.
X
titleImageText String Title of the image item.
Up to 2 lines, up to 24 characters.
X
titleImageUrl String Image of the image item.
iOS: 108*108, Android: 98*98 size.
Images not in 1:1 ratio are center cropped.
X
titleImageCategory String Category information displayed in gray text below the image item title.
Up to 1 line, up to 14 characters.
X
items List<ItemInfo> Information for each text item.
List including item and itemOp for item name and price, up to 5 items supported.
X
sum String Summary title for the item area, such as order amount or payment amount.
Displayed below the text item area, up to 6 characters.

Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.
Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned.
X
sumOp String Total price information for the item area.
Displayed in bold below the text item area, up to 11 characters.

Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.
Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned.
X

When using the iOS SDK, use the ItemContent class.

Name Type Description Required
profileText String Text displayed in the header or profile area.
If profileImageUrl is not provided, only a bold title is shown as the header.
Up to 16 characters.
X
profileImageUrl String Image displayed in the profile area.
Shown as a small circular profile photo.
X
titleImageText String Title of the image item.
Up to 2 lines, up to 24 characters.
X
titleImageUrl String Image of the image item.
iOS: 108*108, Android: 98*98 size.
Images not in 1:1 ratio are center cropped.
X
titleImageCategory String Category information displayed in gray text below the image item title.
Up to 1 line, up to 14 characters.
X
items [ItemInfo] Information for each text item.
Array including item and itemOp for item name and price, up to 5 items supported.
X
sum String Summary title for the item area, such as order amount or payment amount.
Displayed below the text item area, up to 6 characters.

Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.
Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned.
X
sumOp String Total price information for the item area.
Displayed in bold below the text item area, up to 11 characters.

Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.
Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned.
X

When using the Flutter SDK, use the ItemContent class.

Name Type Description Required
profileText String Text displayed in the header or profile area.
If profileImageUrl is not provided, only a bold title is shown as the header.
Up to 16 characters.
X
profileImageUrl String Image displayed in the profile area.
Shown as a small circular profile photo.
X
titleImageText String Title of the image item.
Up to 2 lines, up to 24 characters.
X
titleImageUrl String Image of the image item.
iOS: 108*108, Android: 98*98 size.
Images not in 1:1 ratio are center cropped.
X
titleImageCategory String Category information displayed in gray text below the image item title.
Up to 1 line, up to 14 characters.
X
items List<ItemInfo> Information for each text item.
List including item and itemOp for item name and price, up to 5 items supported.
X
sum String Summary title for the item area, such as order amount or payment amount.
Displayed below the text item area, up to 6 characters.

Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.
Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned.
X
sumOp String Total price information for the item area.
Displayed in bold below the text item area, up to 11 characters.

Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.
Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned.
X

ItemInfo

This is information about one text item in the text item list.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Area Required
item String Item name
Up to 6 characters.
🅖 O
item_op String Item price
Allowed characters: numbers, currency symbols, commas (,), periods (.), spaces.
If including decimal amounts, up to 2 decimal places is recommended.
Up to 2 lines: 14 characters for 1 line, 25 characters for 2 lines.
🅖 O
Name Type Description Area Required
item String Item name
Up to 6 characters.
🅖 O
itemOp String Item price
Allowed characters: numbers, currency symbols, commas (,), periods (.), spaces.
If including decimal amounts, up to 2 decimal places is recommended.
Up to 2 lines: 14 characters for 1 line, 25 characters for 2 lines.
🅖 O

When using the Android SDK, use the ItemInfo class.

Name Type Description Area Required
item String Item name
Up to 6 characters.
🅖 O
itemOp String Item price
Allowed characters: numbers, currency symbols, commas (,), periods (.), spaces.
If including decimal amounts, up to 2 decimal places is recommended.
Up to 2 lines: 14 characters for 1 line, 25 characters for 2 lines.
🅖 O

When using the iOS SDK, use the ItemInfo class.

Name Type Description Area Required
item String Item name
Up to 6 characters.
🅖 O
itemOp String Item price
Allowed characters: numbers, currency symbols, commas (,), periods (.), spaces.
If including decimal amounts, up to 2 decimal places is recommended.
Up to 2 lines: 14 characters for 1 line, 25 characters for 2 lines.
🅖 O

When using the Flutter SDK, use the ItemInfo class.

Name Type Description Area Required
item String Item name
Up to 6 characters.
🅖 O
itemOp String Item price
Allowed characters: numbers, currency symbols, commas (,), periods (.), spaces.
If including decimal amounts, up to 2 decimal places is recommended.
Up to 2 lines: 14 characters for 1 line, 25 characters for 2 lines.
🅖 O

Commerce

This is text item information that can represent product information.

REST API
JavaScript
Android
iOS
Flutter
Name Type Description Required
product_name String Product name and title, up to 2 lines.
Displayed above the product price in black text.
X
regular_price Int Regular price O
discount_price Int Discounted price X
discount_rate Int Discount rate X
fixed_discount_price Int Fixed discount price, cannot be used with discount rate X
currency_unit String Currency unit or symbol (e.g., won, USD, ₩, $)
(Default: won)
X
currency_unit_position Int Position of the currency unit
0: after the price
1: before the price
(Default: 0)
X
Name Type Description Required
productName String Product name and title, up to 2 lines.
Displayed above the product price in black text.
X
regularPrice Int Regular price O
discountPrice Int Discounted price X
discountRate Int Discount rate X
fixedDiscountPrice Int Fixed discount price, cannot be used with discount rate X
currencyUnit String Currency unit or symbol (e.g., won, USD, ₩, $)
(Default: won)
X
currencyUnitPosition Int Position of the currency unit
0: after the price
1: before the price
(Default: 0)
X

When using the Android SDK, use the Commerce class.

Name Type Description Required
productName String Product name and title, up to 2 lines.
Displayed above the product price in black text.
X
regularPrice Int Regular price O
discountPrice Int Discounted price X
discountRate Int Discount rate X
fixedDiscountPrice Int Fixed discount price, cannot be used with discount rate X
currencyUnit String Currency unit or symbol (e.g., won, USD, ₩, $)
(Default: won)
X
currencyUnitPosition Int Position of the currency unit
0: after the price
1: before the price
(Default: 0)
X

When using the iOS SDK, use the CommerceDetail class.

Name Type Description Required
productName String Product name and title, up to 2 lines.
Displayed above the product price in black text.
X
regularPrice Int Regular price O
discountPrice Int Discounted price X
discountRate NSNumber Discount rate X
fixedDiscountPrice Int Fixed discount price, cannot be used with discount rate X
currencyUnit String Currency unit or symbol (e.g., won, USD, ₩, $)
(Default: won)
X
currencyUnitPosition Int Position of the currency unit
0: after the price
1: before the price
(Default: 0)
X

When using the Flutter SDK, use the Commerce class.

Name Type Description Required
productName String Product name and title, up to 2 lines.
Displayed above the product price in black text.
X
regularPrice Int Regular price O
discountPrice Int Discounted price X
discountRate Int Discount rate X
fixedDiscountPrice Int Fixed discount price, cannot be used with discount rate X
currencyUnit String Currency unit or symbol (e.g., won, USD, ₩, $)
(Default: won)
X
currencyUnitPosition Int Position of the currency unit
0: after the price
1: before the price
(Default: 0)
X