사이드 메뉴
Getting started
Kakao Developers
Login
Communication
Advertisement
- Concepts
- Ad creation: Ad account
- Ad creation: Campaign
- Ad creation: Ad group
- Targeting for ad group
- Custom audience targeting for ad group
- Ad creation: Creative common
- Ad creation: Display creative
- Ad creation: Message creative
- Ad creation: Personalized message creative
- Bizboard landing settings
- Report
- Message management
- Personalized message management
- Message ad management
- Message ad operation
- Ad View management
- Business Form+ management
- Business Form linkage management
- Pixel & SDK linkage management
- Audience management
- Engagement targeting management
- Customer file management
- Friend group management
- Ad account management
- Reference
- Type information
- Error code
REST API
This document describes how to integrate the Talk Calendar APIs into your service with a REST API.
You can test some of the features described in this document in [Tools] > [REST API Test]. The test features cannot be called with an admin key.
This section describes how to check the calendar ID and event ID required to specify a calendar or an event, and the order of the API calls.
| Calendar type | How to check the ID |
|---|---|
| My Calendar | Fixed as primary |
| Sub-calendar |
|
| Subscribed calendar |
|
| Event type | How to check the ID |
|---|---|
| Personal / Guest event |
|
| Public event |
|
You can send a calendar message that delivers a public event or a subscribed calendar through Kakao Talk. Users can add the public event to their calendar or subscribe to the subscribed calendar with the buttons in the message. For details, see Send a calendar message.
This section introduces the APIs to manage a user's calendar. To see the calendar types, read Concepts > Calendar types.
| Method | URL | Authorization |
|---|---|---|
GET | https://kapi.kakao.com/v2/api/calendar/calendars |
| Requirements | See also | |
|---|---|---|
| ||
Returns a list of user calendars.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| filter | String | Type of calendar to be retrieved. One of the followings:
For multiple values, use a comma(,) to separate each value. (Example: USER,SUBSCRIBE) | X |
| Name | Type | Description | Required |
|---|---|---|---|
| calendars | Calendar[] | List of My Calendar and sub-calendars. | X |
| subscribe_calendars | Subscribe[] | List of subscribed calendars. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| id | String | Calendar ID. In the case of My Calendar, primary is returned. | O |
| name | String | Calendar name. | X |
| reminder | Integer | Default reminder time for non-all-day events. | X |
| reminder_all_day | Integer | Default reminder time for all-day events. | X |
| color | String | Calendar color. Refer to Color. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| id | String | Subscribed calendar ID. | O |
| name | String | Subscribed calendar name. | X |
| color | String | Subscribed calendar color. Refer to Color. | X |
| reminder | Integer | Default reminder time for non-all-day events. | X |
| reminder_all_day | Integer | Default reminder time for all-day events. | X |
| description | String | Description of the subscribed calendar. This field is set by a service channel. | X |
| profile_image_url | String | URL of the profile image of the subscribed calendar. This field is set by a service channel. | X |
| thumbnail_url | String | URL of the thumbnail image displayed in a chat bubble of the subscribed calendar. This field is set by a service channel. | X |
Request
curl -v -G GET "https://kapi.kakao.com/v2/api/calendar/calendars" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "filter=USER"
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"calendars": [{"id": "primary"},{"id": "user_6364dcb910662e4ed8823c96","name": "Test sub-calendar","color": "ROYAL_BLUE","reminder": 15,"reminder_all_day": -540},{"id": "user_6364df33d89d8b4150bbbbc6"}],"subscribe_calendars": [{"id": "subscribe_62fc58a57499cb775018baf1","name": "Test subscribed calendar","color": "NAVY_BLUE","reminder": 15,"reminder_all_day": -540,"profile_image_url": "https://t1.kakaocdn.net/calendar/event/700053900/62ce299e2e0c0300b49286cd/banner_mo.gif?831"}// ...]}
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v2/api/calendar/create/calendar |
| Requirements | See also | |
|---|---|---|
| ||
Creates a sub-calendar on user's calendar under the Talk Calendar category.
You can add your service's events to the created sub-calendar by using the Create event API or Add public event to user calendar API.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| name | String | Calendar name. Up to 50 characters are allowed. | O |
| color | String | Calendar color. Use one of the values in the Color table. (Default: BLUE) | X |
| reminder | Integer | Default reminder for non-all-day events. Can be set in 5-minute intervals. | X |
| reminder_all_day | Integer | Default reminder for all-day events. Can be set in 5-minute intervals. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| calendar_id | String | ID of the created sub-calendar. | O |
Request
curl -v -X POST "https://kapi.kakao.com/v2/api/calendar/create/calendar" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "name=Service calendar" \-d "color=RED" \-d "reminder=15" \-d "reminder_all_day=30"
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"calendar_id": "user_6359e5226b03401878f0f2fe"}
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v2/api/calendar/update/calendar |
| Requirements | See also | |
|---|---|---|
| ||
Edits a particular sub-calendar.
You can edit only the sub-calendar that your service has created.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8The data type of the request. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| calendar_id | String | Calendar ID. | O |
| name | String | Calendar name. Up to 50 characters are allowed. | X* |
| color | String | Calendar color. Use one of the values in the Color table. | X* |
| reminder | Integer | Default reminder for non-all-day events. Can be set in 5-minute intervals, and passing null resets the value. | X* |
| reminder_all_day | Integer | Default reminder for all-day events. Can be set in 5-minute intervals, and passing null resets the value. | X* |
name, color, reminder, or reminder_all_day is required.
| Name | Type | Description | Required |
|---|---|---|---|
| calendar_id | String | ID of the requested sub-calendar. | O |
Request
curl -v -X POST "https://kapi.kakao.com/v2/api/calendar/update/calendar" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "calendar_id=user_6359e5226b03401878f0f2fe" \-d "name="Edit service calendar" \-d "color=BLUE" \-d "reminder=20" \-d "reminder_all_day=30"
Response: Success
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"calendar_id": "user_6359e5226b03401878f0f2fe"}
| Method | URL | Authorization |
|---|---|---|
DELETE | https://kapi.kakao.com/v2/api/calendar/delete/calendar |
| Requirements | See also | |
|---|---|---|
| ||
Deletes a particular sub-calendar.
You can delete only the sub-calendar that your service has created.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| calendar_id | String | Calendar ID you want to delete. Important: Not allowed to set to primary (My calendar) because you cannot delete a user's My Calendar which is set as a default calendar. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| calendar_id | String | ID of the deleted sub-calendar. | O |
Request
curl -v -G -X DELETE "https://kapi.kakao.com/v2/api/calendar/delete/calendar" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "calendar_id=user_6359e5226b03401878f0f2fe"
Response: Success
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"calendar_id": "user_6359e5226b03401878f0f2fe"}
This section introduces the APIs to manage the events in user's My Calendar or sub-calendars. To learn about the calendar and event types, read Concepts.
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v2/api/calendar/create/event |
| Requirements | See also | |
|---|---|---|
| ||
Creates an event on a user's calendar.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| calendar_id | String | Calendar ID that a new event is added to. (Default: primary (My Calendar))Note: Possible to specify the ID of My Calendar or a sub-calendar created directly by the service. | X |
| event | EventCreate | Event information that you want to create. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| title | String | Event title. Up to 50 characters are allowed. | O |
| time | Time | Event time information, including start and end time, all-day, lunar or time zone information. | O |
| rrule | String | Interval of recurring events (in RFC5545 RRULE format, Example: "FREQ=DAILY;UNTIL=20221030T000000Z").If included, creates a recurring event; if omitted, creates a one-time event. | X |
| description | String | Event description. Up to 5,000 characters are allowed. | X |
| location | Location | Location information of where the event is held. | X |
| reminders | Integer[] | Time of reminders in minutes applied to an event. You can set a maximum of two reminders in multiples of five in the following ranges:
reminder_all_day for all-day events and reminder for non-all-day events. | X |
| color | String | Color of the event. One of the color names that are described in Color. If not specified when creating an event, the color of the calendar to which the event will be added is automatically applied to the event color. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | ID of the created event. Note: Returned without an occurrence suffix even for a recurring event. To find the ID of each occurrence, see the response of Retrieve event list. | O |
Request: Create event
curl -v -X POST "https://kapi.kakao.com/v2/api/calendar/create/event" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "calendar_id=user_63759daa38e1f752188e0cc9" \-d 'event={"title": "Event title","time": {"start_at": "2022-10-27T03:00:00Z","end_at": "2022-10-27T06:00:00Z","time_zone": "Asia/Seoul","all_day": false,"lunar": false},"rrlue": "FREQ=DAILY;UNTIL=20221031T000000Z","description": "Event description","location": {"name": "Kakao","location_id": 18577297,"address": "235, Pangyoyeok-ro, Bundang-gu, Seongnam-si, Gyeonggi-do","latitude": 37.39570088983171,"longitude": 127.1104335101161},"reminders": [15, 30],"color": "RED"}'
Response: Success
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"event_id": "63630868d89d8b4150bbb712"}
| Method | URL | Authorization |
|---|---|---|
GET | https://kapi.kakao.com/v2/api/calendar/events |
| Requirements | See also | |
|---|---|---|
| ||
Returns a list of events registered in a specific calendar.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| calender_id | String | Calendar ID that you want to retrieve. (Default: Retrieves all calendars.) | X |
| preset | String | Retrieval period preset. One of the followings:
Important: Required if from and to are not set.Important: Ignored if next_page_token is set. | X |
| time_zone | String | Time zone of the retrieval period (in IANA Time Zone Database name, Default: Asia/Seoul). | X |
| from | String | Start time to retrieve events (in RFC3339 format based on UTC, Example: "2022-05-17T00:00:00Z").Period between from and to must be within 31 days.Important: Ignored if preset or next_page_token is set. | X |
| to | String | End time to retrieve events (in RFC3339 format based on UTC, Example: "2022-06-16T00:00:00Z").Period between from and to must be within 31 days.Important: Ignored if preset or next_page_token is set. | X |
| limit | Integer | Maximum number of events to be retrieved per page. (Default: 100, Maximum: 1000)Important: Ignored if preset or next_page_token is set. | X |
| next_page_token | String | Token used to filter events. The token contains the filtering conditions ( from, to, limit) and is encoded from JSON to Base64 format.If you pass next_page_token, then from, to, and limit are ignored. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| events | EventBrief[] | List of events. If there is no event, an empty array is returned. | O |
| has_next | Boolean | Whether a next page exists. | O |
| after_url | String | URL used to request the next page. Only returned if has_next is true. | X |
- For schedules that are not created by your service, only
timefield is included in the response.
| Name | Type | Description | Required |
|---|---|---|---|
| id | String | Event ID. For a recurring event, the ID of each occurrence, which joins the event ID and the occurrence start time with an underscore ( _). The occurrence start time is in RFC5545 DATE-TIME format. (Example: 6358e3987ec8e318d0b813bc_20220517T120000Z) | X |
| title | String | Event title. | X |
| type | String | Event type. One of the followings:
| X |
| calendar_id | String | Calendar ID.
| X |
| is_host | Boolean | Whether the user is a host of the event.
| X |
| time | Time | Event time information, including start and end time, all-day, lunar or time zone information. | O |
| is_recur_event | Boolean | Whether the event is recurring.
type is USER. | X |
| color | String | Color of the event. Refer to Color.Not returned if not specified when creating or editing an event. | X |
Request
curl -v -G GET "https://kapi.kakao.com/v2/api/calendar/events" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "calendar_id=user_63759daa38e1f752188e0cc9" \-d "from=2022-10-26T00:00:00Z" \-d "to=2022-10-30T00:00:00Z" \-d "limit=2"
Request: retrieve the next page
curl -v -G GET "${AFTER_URL}" \-H "Authorization: Bearer ${ACCESS_TOKEN}"
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"events": [{"id": "6358e3987ec8e318d0b813bc","title": "Test event","type": "USER","calendar_id": "primary","time": {"start_at": "2022-10-27T00:00:00Z","end_at": "2022-10-28T00:00:00Z","all_day": true,"lunar": false},"is_owner": true,"is_recur_event": false,"color": "RED"},// ...{"time": {"start_at": "2022-10-29T03:00:00Z","end_at": "2022-10-29T06:00:00Z","time_zone": "Asia/Seoul","all_day": false,"lunar": false}}],"has_next": true,"after_url": "https://kapi.kakao.com/v2/api/calendar/events?target_id=1376016924430355247&target_id_type=user_id&calendar_id=primary&next_page_token=eyJmIjoiMjAyMjEwMjZUMDAwMDAwWiIsInQiOiIyMDIyMTAzMFQwMDAwMDBaIiwibCI6MywicmV2IjoxNjY2Nzc0NjU0MzQ1LCJwbGkiOm51bGwsInFsIjpudWxsfQ%3D%3D"}
| Method | URL | Authorization |
|---|---|---|
GET | https://kapi.kakao.com/v2/api/calendar/event |
| Requirements | See also | |
|---|---|---|
| ||
Returns the details of a user's personal event.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | Event ID. For a recurring event, specify the ID of the occurrence, which joins the event ID and the occurrence start time with an underscore ( _). The occurrence start time is in RFC5545 DATE-TIME format. (Example: 6358e3987ec8e318d0b813bc_20220517T120000Z) | O |
| Name | Type | Description | Required |
|---|---|---|---|
| event | EventDetail | Detailed information of the requested event. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| id | String | Event ID. For a recurring event, the ID of each occurrence, which joins the event ID and the occurrence start time with an underscore ( _). The occurrence start time is in RFC5545 DATE-TIME format. (Example: 6358e3987ec8e318d0b813bc_20220517T120000Z) | O |
| title | String | Event title. | O |
| type | String | Event type. One of the followings:
| O |
| calendar_id | String | Calendar ID. In the case of My Calendar, primary is returned. | O |
| time | Time | Event time information, including start and end time, all-day, lunar or time zone information. | O |
| is_host | Boolean | Whether the user is a host of the event.
| O |
| is_recur_event | Boolean | Whether the event is recurring.
type is USER. | X |
| rrule | String | Only returned in the case of a recurring event. Value of rrule that is passed when you request to edit the event (in RFC5545 RRULE format, Example: "FREQ=DAILY;UNTIL=20221030T000000Z"). | X |
| dt_start | String | Time when a recurring event starts (in RFC5545 DATE-TIME format based on UTC, Example: "20220517T000000Z").Only returned if an event is a recurring event. | X |
| description | String | Event description. Up to 5,000 characters are allowed. | X |
| location | Location | Location information of where the event is held. | X |
| reminders | Integer[] | Time of reminders in minutes applied to an event. You can set a maximum of two reminders in multiples of five in the following ranges:
| X |
| color | String | Color of the event. Refer to Color.Not returned if not specified when creating or editing an event. | X |
| memo | String | Note that a user has input. Up to 5,000 characters are allowed. Not returned if user has not input any note. | X |
| banner | Banner | Banner information used to promote a subscribed event. Not retured if banner information is not specified when creating a subscribed event. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| pc_image_url | String | URL of the banner image to be used on a web. | X |
| mobile_image_url | String | URL of the banner image to be used on mobile. | X |
| bg_color | String | Background color displayed in the margin of the banner image. (Example: F3F3F3)
| X |
| link | Link | Link informaiton applied to the image banner. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| web_url | String | URL that is directed to when the button is invoked in a PC environment. | X |
| mobile_web_url | String | URL that is directed to when the button is invoked in a mobile environment. | X |
Request
curl -v -G GET "https://kapi.kakao.com/v2/api/calendar/event" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "event_id=6554545a5df8367886f9d2c5"
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"event": {"id": "6554545a5df8367886f9d2c5","title": "Event title","type": "USER","calendar_id": "primary","is_recur_event": false,"is_host": true,"time": {"start_at": "2022-10-27T03:00:00Z","end_at": "2022-10-27T06:00:00Z","time_zone": "Asia/Seoul","all_day": false,"lunar": false},"description": "Event description","location": {"name": "Kakao","location_id": 18577297,"address": "235, Pangyoyeok-ro, Bundang-gu, Seongnam-si, Gyeonggi-do","latitude": 37.39570088983171,"longitude": 127.1104335101161},"reminders": [15, 30],"color": "RED"}}
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v2/api/calendar/update/event/host |
| Requirements | See also | |
|---|---|---|
| ||
Edits a particular personal event that a user has created.
- Primitive types (
Integer,Boolean,Double,String, etc.):null. - Other types:
nullor{}.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | Event ID. For a recurring event, specify the ID of the occurrence, which joins the event ID and the occurrence start time with an underscore ( _). The occurrence start time is in RFC5545 DATE-TIME format. (Example: 6358e3987ec8e318d0b813bc_20220517T120000Z) | O |
| calendar_id | String | Calendar ID. Used to change a calendar which the event is included in. Note: Possible to specify the ID of My Calendar or a sub-calendar created directly by the service. | X |
| recur_update_type | String | Scope of recurring events to which the changes are applied. One of the followings:
Important: Required in case of recurring events. If recur_update_type is set to THIS, you cannot update calendar_id, memo, reminders, color, rrule, time.lunar and time.all_day. | X |
| event | EventUpdate | Event information to update. Important: Required if calendar_id is omitted. If included, specify at least one field. Omitted fields retain their existing values. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| title | String | Event title. Up to 50 characters are allowed. If omitted, the existing value is retained. | X |
| time | Time | Event time information. If recur_update_type is set to THIS (edit this recurring event only), you cannot edit lunar and all_day.If omitted, the existing value is retained. | X |
| rrule | String | Interval of recurring events (in RFC5545 RRULE format, Example: "FREQ=DAILY;UNTIL=20221030T000000Z", Default: existing value).Important: When changing rrule, recur_update_type must not be THIS. | X |
| description | String | Event description. Up to 5,000 characters are allowed. If omitted, the existing value is retained. | X |
| location | Location | Location information of where the event is held. If omitted, the existing value is retained. | X |
| reminders | Integer[] | Time of reminders in minutes applied to an event. You can set a maximum of two reminders in multiples of five in the following ranges:
| X |
| color | String | Color of the event. One of the color names that are described in Color.If omitted, the existing value is retained. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | Event ID. Important: Required for a non-recurring event. For a recurring event, only the HTTP 200 status code is returned without a response body. | X |
Request: Edit a one-time event
curl -v -X POST "https://kapi.kakao.com/v2/api/calendar/update/event/host" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "event_id=6375b0e938e1f752188e0fba" \-d "calendar_id=primary" \-d "recur_update_type=ALL" \-d 'event={"title": "Edit event title","time": {"start_at": "2022-10-28T03:00:00Z","end_at": "2022-10-29T06:00:00Z","time_zone": "Asia/Seoul","all_day": false,"lunar": false},"rrule": "FREQ=DAILY;UNTIL=20221031T000000Z","description": "Edit event description","location": {"name": "Kakao","location_id": 18577297,"address": "235, Pangyoyeok-ro, Bundang-gu, Seongnam-si, Gyeonggi-do","latitude": 37.39570088983171,"longitude": 127.1104335101161},"reminders": [0,15],"color": "RED"}'
Response: Success
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"event_id": "6375b0e938e1f752188e0fba"}
| Method | URL | Authorization |
|---|---|---|
DELETE | https://kapi.kakao.com/v2/api/calendar/delete/event |
| Requirements | See also | |
|---|---|---|
| ||
Deletes the user's personal event or public event added on a user's calendar.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | Event ID. For a recurring event, specify the ID of the occurrence, which joins the event ID and the occurrence start time with an underscore ( _). The occurrence start time is in RFC5545 DATE-TIME format. (Example: 6358e3987ec8e318d0b813bc_20220517T120000Z) | O |
| recur_update_type | String | Scope of recurring events to which the changes are applied. One of the followings:
Important: Required in case of recurring events. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | ID of the deleted personal event. Not returned if you request to change a recurring event even if the request is successful. | X |
Request: One-time event
curl -v -G -X DELETE "https://kapi.kakao.com/v2/api/calendar/delete/event" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "event_id=63630c44d89d8b4150bbb716"
Response: Success
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"event_id": "63630c44d89d8b4150bbb716"}
This section introduces the APIs to manage public events. To see what a public event is, read Concepts > Event types.
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v2/api/calendar/public/create/event |
| Requirements | See also | |
|---|---|---|
| ||
Creates a public event.
You can only create public events for a Kakao Talk Channel connected to the app.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}Service app admin key as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| channel_public_id | String | Kakao Talk Channel profile ID of your service. If your app is connected with only one Kakao Talk Channel, the value of channel_public_id will be automatically set to the connected Kakao Talk Channel's ID.In other cases, you must specify a Kakao Talk Channel profile ID. | X |
| event | EventPublic | Information of public event to be created. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| title | String | Event title. Up to 50 characters are allowed. | O |
| time | Time | Event time information, including start and end time, all-day, lunar or time zone information. | O |
| description | String | Event description. Up to 5,000 characters are allowed. | X |
| location | Location | Location information of where the event is held. | X |
| reminders | Integer[] | Time of reminders in minutes applied to an event. You can set a maximum of two reminders in multiples of five in the following ranges:
reminder_all_day for all-day events and reminder for non-all-day events. | X |
| color | String | Color of the event. Use one of the values in the Color table. | X |
| notification_message | NotificationMessage | Information of notification message that will be sent when a user adds the public event to a calendar or at the time of the set reminders. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| display_custom_button | Boolean | Whether to enable custom buttons
| X |
| before_event_reminder | EventReminder | Custom setting for the notification message before the event starts. | X |
| after_event_reminder | EventReminder | Custom setting for the notification message after the event starts. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| button | Button | Custom button information in notification messages, apply default custom button (공유하기) if not included | X |
| Name | Type | Description | Required |
|---|---|---|---|
| title | String | Button name. Used to customize a button in the notification message. Use one of the followings:
Important: Only Korean is supported for this button name. | O |
| link | Link | Link information for the custom button in the notification message. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| web_url | String | URL that is directed to when the button is invoked in a PC environment, ignore custom button settings and apply the default custom button (공유하기) when an invalid URL is entered. | X* |
| mobile_web_url | String | URL that is directed to when the button is invoked in a mobile environment, ignore custom button settings and apply the default custom button (공유하기) when an invalid URL is entered. | X* |
web_url or mobile_web_url is required.
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | ID of the created public event. | O |
Request
curl -v -X POST "https://kapi.kakao.com/v2/api/calendar/public/create/event" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "channel_public_id=_xnrxjem" \-d 'event={"title": "Public event test","time": {"start_at": "2022-12-10T03:00:00Z","end_at": "2022-12-10T06:00:00Z","time_zone": "Asia/Seoul","all_day": false,"lunar": false},"description": "Public event description","location": {"name": "Kakao","location_id": 18577297,"address": "235, Pangyoyeok-ro, Bundang-gu, Seongnam-si, Gyeonggi-do","latitude": 37.39570088983171,"longitude": 127.1104335101161},"reminders": [15,30],"color": "RED","notification_message": {"display_custom_button": true,"before_event_reminder": {"button": {"title": "예약하기","link": {"web_url": "https://pf.kakao.com/_ZRQBh/43170951","mobile_web_url": "https://pf.kakao.com/_ZRQBh/43170951"}}},"after_event_reminder": {"button": {"title": "참여하기","link": {"web_url": "https://pf.kakao.com/_ZRQBh/43170951","mobile_web_url": "https://pf.kakao.com/_ZRQBh/43170951"}}}}}'
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"event_id": "6377474a71fdf754fbbf6465"}
| Method | URL | Authorization |
|---|---|---|
GET | https://kapi.kakao.com/v2/api/calendar/public/events |
| Requirements | See also | |
|---|---|---|
| ||
Returns a list of public events registered for a Kakao Talk Channel.
You can only retrieve public events for a Kakao Talk Channel connected to the app.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}Service app admin key as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| channel_public_id | String | Kakao Talk Channel profile ID of your service. If your app is connected with only one Kakao Talk Channel, the value of channel_public_id will be automatically set to the connected Kakao Talk Channel's ID.In other cases, you must specify a Kakao Talk Channel profile ID. | X |
| from | String | Start time to retrieve events (in RFC3339 format based on UTC, Example: "2022-05-17T00:00:00Z").Important: Period between from and to must be within 31 days. | O |
| to | String | End time to retrieve events (in RFC3339 format based on UTC, Example: "2022-06-16T00:00:00Z").Important: Period between from and to must be within 31 days. | O |
| limit | Integer | Maximum number of events to be retrieved per page. (Default: 10, Maximum: 30) | X |
| offset | Integer | Order that the list of public events starts from. For example, if it is set to 10, the tenth and the following public events are retrieved. (Default: 0) | X |
| Name | Type | Description | Required |
|---|---|---|---|
| events | EventPublicBrief[] | List of public event information. | O |
| has_next | Boolean | Whether a next page exists. | O |
| after_url | String | URL used to request the next page. Only returned if has_next is true. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| id | String | Event ID. | O |
| title | String | Event title. | O |
| type | String | Event type. Fixed to PUBLIC. | O |
| time | TimeDefault | Time information. | O |
| color | String | Color of the event. Refer to Color. | X |
Request
curl -v -G GET "https://kapi.kakao.com/v2/api/calendar/public/events" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "channel_public_id=_xnrxjem" \-d "from=2022-12-01T00:00:00Z" \-d "to=2022-12-11T00:00:00Z" \-d "limit=3"
Request: retrieve the next page
curl -v GET "${AFTER_URL}" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}"
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"events": [{"id": "638db634577cba184608ef56","title": "Public event test","type": "PUBLIC","time": {"start_at": "2022-12-10T03:00:00Z","end_at": "2022-12-10T06:00:00Z","all_day": false},"color": "RED"}// ...],"has_next": false,"after_url": "https://kapi.kakao.com/v2/api/calendar/public/events?channel_public_id=_xnrxjem&from=2022-12-01T00%3A00%3A00Z&to=2022-12-11T00%3A00%3A00Z&offset=2"}
| Method | URL | Authorization |
|---|---|---|
GET | https://kapi.kakao.com/v2/api/calendar/public/event |
| Requirements | See also | |
|---|---|---|
| ||
Returns the details of a public event for a Kakao Talk Channel.
You can only retrieve public events for a Kakao Talk Channel connected to the app.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}Service app admin key as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| channel_public_id | String | Kakao Talk Channel profile ID of your service. If your app is connected with only one Kakao Talk Channel, the value of channel_public_id will be automatically set to the connected Kakao Talk Channel's ID.In other cases, you must specify a Kakao Talk Channel profile ID. | X |
| event_id | String | ID of the public event to be retrieved. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| id | String | Event ID. | O |
| title | String | Event title. | O |
| type | String | Event type. Fixed to PUBLIC. | O |
| time | Time | Time information. | O |
| description | String | Event description. Up to 5,000 characters are allowed. | X |
| location | Location | Location information of where the event is held. | X |
| reminders | Integer[] | Time of reminders in minutes applied to an event. You can set a maximum of two reminders in multiples of five in the following ranges:
| X |
| color | String | Color of the event. Refer to Color. | X |
| notification_message | NotificationMessage | Settings for notification messages Include in response when using notification messages | X |
| Name | Type | Description | Required |
|---|---|---|---|
| before_event_reminder | EventReminder | Custom setting for the notification message before the event starts. | X |
| after_event_reminder | EventReminder | Custom setting for the notification message after the event starts. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| button | Button | Custom button information in the notification message. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| title | String | Custom button name in the notification message. | O |
| link | Link | Link information for the custom button in the notification message. Not included if the default custom button ( 공유하기) is used. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| web_url | String | URL of the service page used in a PC environment. | O |
| mobile_web_url | String | URL of the service page used in a mobile environment. | O |
Request
curl -v -G GET "https://kapi.kakao.com/v2/api/calendar/public/event" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "channel_public_id=_xnrxjem" \-d "event_id=638db6d5577cba184608ef58"
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"event": {"id": "638db6d5577cba184608ef58","title": "Public event title","type": "PUBLIC","time": {"start_at": "2022-12-10T03:00:00Z","end_at": "2022-12-10T06:00:00Z","time_zone": "Asia/Seoul","all_day": false,"lunar": false},"description": "Public event description","location": {"name": "카카오","location_id": 18577297,"address": "경기 성남시 분당구 판교역로 166","latitude": 37.39570088983171,"longitude": 127.1104335101161},"reminders": [15, 30],"color": "RED","notification_message": {"before_event_reminder": {"button": {"title": "예약하기","link": {"web_url": "https://pf.kakao.com/_ZRQBh/43170951","mobile_web_url": "https://pf.kakao.com/_ZRQBh/43170951"}}},"after_event_reminder": {"button": {"title": "참여하기","link": {"web_url": "https://pf.kakao.com/_ZRQBh/43170951","mobile_web_url": "https://pf.kakao.com/_ZRQBh/43170951"}}}}}}
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v2/api/calendar/public/update/event |
| Requirements | See also | |
|---|---|---|
| ||
Edits a particular public event.
- You can only edit public events for a Kakao Talk Channel connected to the app.
- To remove an existing value, refer to Request values by parameter type for removing existing values.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}Service app admin key as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| channel_public_id | String | Kakao Talk Channel profile ID of your service. If your app is connected with only one Kakao Talk Channel, the value of channel_public_id will be automatically set to the connected Kakao Talk Channel's ID.In other cases, you must specify a Kakao Talk Channel profile ID. | X |
| event_id | String | ID of the public event you want to change. | O |
| event | EventUpdatePublic | Public event information to update. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| title | String | Event title. Up to 50 characters are allowed. If omitted, the existing value is retained. | X |
| time | Time | Event time information, including start and end time, all-day, lunar or time zone information. If omitted, the existing value is retained. | X |
| description | String | Event description. Up to 5,000 characters are allowed. If omitted, the existing value is retained. | X |
| location | Location | Location information of where the event is held. If omitted, the existing value is retained. | X |
| reminders | Integer[] | Time of reminders in minutes applied to an event. You can set a maximum of two reminders in multiples of five in the following ranges:
| X |
| color | String | Color of the public event. One of the color names that are described in Color.If omitted, the existing value is retained. | X |
| notification_message | NotificationMessage | Used to update the customized button in a notification message that will be sent to the user who added the public event to their calendar. If omitted, the existing value is retained. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | Public event ID. | O |
Request
curl -v -X POST "https://kapi.kakao.com/v2/api/calendar/public/update/event" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "channel_public_id=_xnrxjem" \-d "event_id=638db6d5577cba184608ef58" \-d 'event={"title": "Edit public event title","time": {"start_at": "2022-12-10T03:00:00Z","end_at": "2022-12-10T06:00:00Z","time_zone": "Asia/Seoul","all_day": false,"lunar": false},"description": "Edit public event description","location": {"name": "Kakao","location_id": 18577297,"address": "235, Pangyoyeok-ro, Bundang-gu, Seongnam-si, Gyeonggi-do","latitude": 37.39570088983171,"longitude": 127.1104335101161},"reminders": [15,30],"color": "RED","notification_message": {"before_event_reminder": {"title": "예약하기","link": {"web_url": "https://pf.kakao.com/_ZRQBh/43170951","mobile_web_url": "https://pf.kakao.com/_ZRQBh/43170951"}},"after_event_reminder": {"title": "참여하기","link": {"web_url": "https://pf.kakao.com/_ZRQBh/43170951","mobile_web_url": "https://pf.kakao.com/_ZRQBh/43170951"}}}}'
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"event_id": "638db6d5577cba184608ef58"}
| Method | URL | Authorization |
|---|---|---|
DELETE | https://kapi.kakao.com/v2/api/calendar/public/delete/event |
| Requirements | See also | |
|---|---|---|
| ||
Deletes a particular public event.
You can only delete public events for a Kakao Talk Channel connected to the app.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}Service app admin key as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| channel_public_id | String | Kakao Talk Channel profile ID of your service. If your app is connected with only one Kakao Talk Channel, the value of channel_public_id will be automatically set to the connected Kakao Talk Channel's ID.In other cases, you must specify a Kakao Talk Channel profile ID. | X |
| event_id | String | ID of the public event to be deleted. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | ID of the deleted public event. | O |
Request
curl -v -G -X DELETE "https://kapi.kakao.com/v2/api/calendar/public/delete/event" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "channel_public_id=_xnrxjem" \-d "event_id=637b3bc671fdf754fbbf6f08"
Response: Success
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"event_id": "637b2d3471fdf754fbbf6e94"}
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v2/api/calendar/public/follow |
| Requirements | See also | |
|---|---|---|
| ||
Adds public events published by your service's Kakao Talk Channel to a user's calendar.
- Only public events for a Kakao Talk Channel connected to the app can be added.
- If the public event is edited or deleted, the copy added to the user's calendar can also be edited or deleted.
- If the public event has no
color, the default color of the target calendar is applied.
To remove a public event from a user's calendar, call the Delete event API in the same way as for a personal event.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | Public event ID. | O |
| calendar_id | String | ID of user's calendar that the public event will be added to.primary (My calendar, Default) | X |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | Public event ID. | O |
Request
curl -v -X POST "https://kapi.kakao.com/v2/api/calendar/public/follow" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "event_id=637b3d0471fdf754fbbf6f0e" \-d "calendar_id=user_6375c8e638e1f752188e114e"
Response: Success
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"event_id": "637b3d0471fdf754fbbf6f0e"}
This section introduces the APIs to manage Subscribed calendars. Users can see the Subscribed calendars that they are subscribing to under the Subscribed Calendars category. To see the calendar types, read Concepts > Calendar types.
| Method | URL | Authorization |
|---|---|---|
GET | https://kapi.kakao.com/v2/api/calendar/subscribable/calendars |
| Requirements | See also | |
|---|---|---|
| ||
Returns a list of calendars available for subscription.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}Service app admin key as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| category_name | String | Used to retrieve only the subscribed calendars included in a particular category. (Example: 스포츠(Sports), 카카오(Kakao))If not specified, all subscribed calendars are retrieved. Important: Required if you pass subcategory_name. | X |
| subcategory_name | String | Used to retrieve only the subscribed calendars included in a particular sub-category. (Example: Baseball) | X |
| Name | Type | Description | Required |
|---|---|---|---|
| categories | Category[] | List of subscribed calendars by category. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| category_name | String | Category name which the subscribed calendars are included in. | O |
| subcategories | Subcategory[] | List of subscribed calendars. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| subcategory_name | String | Sub-category name which the subscribed calendars are included in. Not returned if a sub-category name is not specified. | X |
| calendars | Calendar[] | List of subscribed calendar information. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| id | String | Subscribed calendar ID. | O |
| name | String | Subscribed calendar name. | O |
| profile_image_url | String | URL of the profile image of the subscribed calendar. Not returned if the calendar has no profile image. | X |
Request
curl -v -G GET "https://kapi.kakao.com/v2/api/calendar/subscribable/calendars" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}"
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"categories": [{"category_name": "대분류","subcategories": [{"subcategory_name": "소분류","calendars": [{"id": "subscribe_5efad4e3890efb10051630f2","name": "구독 가능 캘린더 1","profile_image_url": "https://t1.daumcdn.net/media/img-section/sports13/logo/team/6/K05_300300.png"},{"id": "subscribe_5efc1e655642c30ba8a6743b","name": "구독 가능 캘린더 2"}]}]}]}
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v2/api/calendar/subscribe |
| Requirements | See also | |
|---|---|---|
| ||
Subscribes to your service's calendar.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| calendar_id | String | Subscribed calendar ID that a user will subscribe to. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| calendar_id | String | Subscribed calendar ID. | O |
Request
curl -v -X POST "https://kapi.kakao.com/v2/api/calendar/subscribe" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "calendar_id=subscribe_5efad4e3890efb10051630f2"
Response: Succcess
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"calendar_id": "subscribe_5efad4e3890efb10051630f2"}
| Method | URL | Authorization |
|---|---|---|
DELETE | https://kapi.kakao.com/v2/api/calendar/unsubscribe |
| Requirements | See also | |
|---|---|---|
| ||
Unsubscribes from your service's calendar.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| calendar_id | String | Subscribed calendar ID to be removed from a user's calendar. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| calendar_id | String | Subscribed calendar ID. | O |
Request
curl -v -G -X DELETE "https://kapi.kakao.com/v2/api/calendar/unsubscribe" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "calendar_id=subscribe_5efad4e3890efb10051630f2"
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"calendar_id": "subscribe_5efad4e3890efb10051630f2"}
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v2/api/calendar/update/event/guest |
| Requirements | See also | |
|---|---|---|
| ||
Edits a particular public event or subscribed event added to a user's calendar.
- You can edit only the reminders, memo, color, or calendar ID. The changes do not affect the original event. To edit an event you created, use Edit event for host API.
- To remove an existing value, refer to Request values by parameter type for removing existing values.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | ID of the event you want to change. To obtain the desired event ID, call the Retrieve list of events API and get id. | O |
| calendar_id | String | Calendar ID. To obtain the desired calendar ID, call the Retrieve list of calendars API and get id. Used to change a calendar which the event is included in. | X |
| event | EventGuest | Event information to be changed. Important: If you pass event, at least one of the parameters must be specified. Otherwise, an error occurs.To delete the existing value, pass an empty value for a string type of the fields. For integer or long type of fields, pass null to delete the existing value. The fields that are not input remain the same as the initial value. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| reminders | Integer[] | Time of reminders in minutes applied to an event. You can set a maximum of two reminders in multiples of five in the following ranges:
| X |
| color | String | Color of the event. Use one of the values in the Color table.If omitted, the existing value is retained. | X |
| memo | String | Note that a user has input. Up to 5,000 characters are allowed. If omitted, the existing value is retained. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| event_id | String | Event ID. | O |
Request
curl -v -X POST "https://kapi.kakao.com/v2/api/calendar/update/event/guest" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "event_id=6351f57c7ec8e318d0b809a0" \-d 'event={"reminders": [30,45],"color": "RED","memo": "Edit memo"}'
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"event_id": "6351f57c7ec8e318d0b809a0"}
| Method | URL | Authorization |
|---|---|---|
GET | https://kapi.kakao.com/v2/api/calendar/holidays |
| Requirements | See also |
|---|---|
| - |
Returns a list of statutory holidays and selected observances designated by Talk Calendar.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}Service app admin key as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| from | String | Start time to retrieve events (in RFC3339 format based on UTC, Example: "2022-05-17T00:00:00Z").Important: Period between from and to must be within 31 days. | O |
| to | String | End time to retrieve events (in RFC3339 format based on UTC, Example: "2022-06-16T00:00:00Z").Important: Period between from and to must be within 31 days. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| events | EventSpecial[] | List of holidays and celebrations. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| id | String | Event ID. | O |
| title | String | Event title. | O |
| time | TimeDefault | Holiday time information. | O |
| holiday | Boolean | Whether the day is a public holiday. | O |
Request: Using admin key
curl -v -G GET "https://kapi.kakao.com/v2/api/calendar/holidays" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "from=2022-10-01T00:00:00Z" \-d "to=2022-10-20T00:00:00Z"
Response: Success
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"events": [{"id": "S5d5ba43907d5351aba275d72","title": "국군의날","time": {"start_at": "2022-10-01T00:00:00Z","end_at": "2022-10-02T00:00:00Z","all_day": true},"holiday": false},{"id": "S5d5ba43907d5351aba275d73","title": "개천절","time": {"start_at": "2022-10-03T00:00:00Z","end_at": "2022-10-04T00:00:00Z","all_day": true},"holiday": true},{"id": "S5d5ba43907d5351aba275d74","title": "한글날","time": {"start_at": "2022-10-09T00:00:00Z","end_at": "2022-10-10T00:00:00Z","all_day": true},"holiday": true}]}
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v1/api/calendar/create/task |
| Requirements | See also | |
|---|---|---|
Creates a task.
Recurring tasks are shown as a single task. If the current time passes the due date, the due date is automatically updated to the next occurrence.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| task | Task | Task information. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| content | String | Content. (Maximum: 1000) | O |
| due_info | DueInfo | Due date information. (Default: No due date) | X |
| Name | Type | Description | Required |
|---|---|---|---|
| due_date | String | Due date, yyyyMMdd format. (Maximum: 20501231)Important: Cannot be set to a point in the past. | O |
| time_zone | String | Time zone (in IANA Time Zone Database name, Default: Asia/Seoul). | X |
| alarm_time | String | Alarm time in HHmm format every 5 minutes. (Unit: Minutes, Default: No alarm) | X |
| recur | Recur | Recurring information. If included, creates a recurring task at regular intervals from the due date; if omitted, creates a one-time task. (Default: No recurring) | X |
| Name | Type | Description | Required |
|---|---|---|---|
| rrule | String | Recurring interval (in RFC5545 RRULE format, Example: "FREQ=DAILY;UNTIL=20221030T000000Z").UNTIL can only be specified after due_date in yyyyMMdd'T'000000Z format and must exist at least one day that satisfies the rrule condition. (Maximum: 20501231T000000Z) | O |
| record_on | Boolean | Whether to enable [My Challenge Record].
| X |
| Name | Type | Description | Required |
|---|---|---|---|
| task_id | String | Created task ID. | O |
Request
curl -v -X POST "https://kapi.kakao.com/v1/api/calendar/create/task" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d 'task={"content": "Today task","due_info": {"due_date": "${DUE_DATE}","time_zone": "Asia/Seoul","alarm_time": "0900","recur": {"rrule": "FREQ=DAILY;COUNT=3","record_on": true}}}'
Response
// HTTP/1.1 200 OK{"task_id": "${TASK_ID}"}
| Method | URL | Authorization |
|---|---|---|
GET | https://kapi.kakao.com/v1/api/calendar/tasks |
| Requirements | See also | |
|---|---|---|
Returns task information.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| task_id | String | Task ID. Important: If included, only the task corresponding to the ID will be retrieved, and all other request parameters will be ignored. | X |
| from | String | Start time to retrieve, yyyyMMdd format.Note: Required when task_id is not included. | X |
| to | String | End time to retrieve, yyyyMMdd format.Within 31 days of from.Note: Required when task_id is not included. | X |
| task_status | String | Task status, One of the followings:
| X |
| task_filter | String | Task condition to retrieve (Default: All conditions) Comma (",") as a separator to pass multiple values (Example: "authorized,bookmark") One of the followings:
| X |
| offset | Integer | Offset value that the list of tasks starts from. (Default: 0) | X |
| limit | Integer | Number of results per page. (Default: 100, Maximum: 1000) | X |
| time_zone | String | Time zone (in IANA Time Zone Database name, Default: Asia/Seoul).Note: Time calculation criteria of status response. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| tasks | Task[] | List of task information. Multiple tasks are sorted by most recent edit. Recurring tasks are shown as one task; if the current time passes the due date, the due date is automatically updated to the next occurrence. | O |
| count | Integer | The total number of tasks in the search period. Up to the number specified by limit, and the list of uncompleted tasks can be retrieved by after_url. | O |
| has_next | Boolean | Whether a next page exists. | O |
| after_url | String | URL used to request the next page. Only returned if has_next is true. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| task_id | String | Task ID. | O |
| content | String | Content. | O |
| status | String | Task status.SCHEDULED: Before the due date.COMPLETED: Completed.DELAYED: After the due date. | O |
| bookmark | Boolean | Whether the tasks that have been bookmarked. | O |
| authorized | Boolean | Whether the tasks that can be edited or deleted. | O |
| due_info | DueInfo | Due date information. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| due_date | String | Due date, yyyyMMdd format. | O |
| alarm_time | String | Alarm time in HHmm format every 5 minutes. (Unit: Minutes) | X |
| recur | Recur | Recurring information. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| rrule | String | Recurring interval (in RFC5545 RRULE format, Example: "FREQ=DAILY;UNTIL=20221030T000000Z"). | O |
| record_on | Boolean | Whether to enable [My Challenge Record].
| O |
| is_ended | Boolean | Whether the task has been completed, true if the last to-do has been completed. | O |
Request: Retrieve the single task
curl -v -G GET "https://kapi.kakao.com/v1/api/calendar/tasks" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "time_zone=Asia/Seoul" \-d "task_id=${TASK_ID}"
Request: Retrieve the list in the period
curl -v -G GET "https://kapi.kakao.com/v1/api/calendar/tasks" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "from=20231208" \-d "to=20231215" \-d "time_zone=Asia/Seoul" \-d "task_status=ALL" \-d "task_filter=authorized" \-d "offset=0" \-d "limit=4"
Response
// HTTP/1.1 200 OK{"tasks": [{"task_id": "${TASK_ID}","content": "Test task 1","status": "SCHEDULED","bookmark": false,"authorized": true},{"task_id": "${TASK_ID}","content": "Test task 2","status": "DELAYED","bookmark": true,"authorized": true,"due_info": {"due_date": "20231211","alarm_time": "0900"}},{"task_id": "${TASK_ID}","content": "Test task 3","status": "SCHEDULED","bookmark": false,"authorized": true,"due_info": {"due_date": "20231212","alarm_time": "0900","recur": {"rrule": "FREQ=DAILY;","record_on": false,"is_ended": false}}},{"task_id": "${TASK_ID}","content": "Test task 4","status": "SCHEDULED","bookmark": false,"authorized": true,"due_info": {"due_date": "20231212","alarm_time": "0900","recur": {"rrule": "FREQ=DAILY;","record_on": false,"is_ended": false}}}],"count": 22,"has_next": true,"after_url": "https://kapi.kakao.com/v1/api/calendar/tasks?task_status=ALL&target_id_type=user_id&limit=4&target_id=${TASK_ID}&from=20231208&to=20231215&task_filter=authorized&time_zone=Asia%2FSeoul&offset=4"}
| Method | URL | Authorization |
|---|---|---|
GET | https://kapi.kakao.com/v1/api/calendar/task/records |
| Requirements | See also | |
|---|---|---|
Returns the challenge history of a specific recurring task.
Only available for tasks that have [My Challenge Record] enabled.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| task_id | String | Task ID. | O |
| from | String | The beginning month and year of the retrieving period, yyyyMM format. | O |
| to | String | The ending month and year of the retrieving period, yyyyMM format. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| records | Record[] | List of challenge record information Respond with an empty array if there is no record of completion or failure, or if it is not recurring task. | X |
| start_at | String | The beginning month and year of the challenge, yyyyMM format.Note: Only include challenge record in the response if it exists. | X |
| end_at | String | The ending month and year of the challenge, yyyyMM format.Note: Only include challenge record in the response if it exists. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| date | String | Challenge date, yyyyMMdd format. | O |
| complete | Boolean | Whether the task was completed on that challenge date. | O |
Request
curl -v -G GET "https://kapi.kakao.com/v1/api/calendar/task/records" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "task_id=${TASK_ID}" \-d "from=202311" \-d "to=202312"
Response
// HTTP/1.1 200 OK{"records": [{"date": "20231211","complete": true}],"start_at": "202312","end_at": "202312"}
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v1/api/calendar/update/task |
| Requirements | See also | |
|---|---|---|
Edits a particular task.
You cannot edit the tasks registered on Kakao Talk profile sticker.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| task_id | String | Task ID. | O |
| task | Task | Task information. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| content | String | Content. (Maximum: 1000, Default: Not edited) | X |
| bookmark | Boolean | Whether the tasks that have been bookmarked. (Default: Not edited) | X |
| due_info | DueInfo | Due date information. (Default: Not edited) If set to null, also deletes recurring information and disables [My Challenge Record]. | X |
| Name | Type | Description | Required |
|---|---|---|---|
| due_date | String | Due date, yyyyMMdd format. (Default: Not edited, Maximum: 20501231)Important: Cannot be set to a point in the past. | X |
| time_zone | String | Time zone (in IANA Time Zone Database name, Default: Not edited). | X |
| alarm_time | String | Alarm time in HHmm format every 5 minutes. (Unit: Minutes, Default: Not edited) | X |
| recur | Recur | Recurring information. (Default: Not edited) | X |
| Name | Type | Description | Required |
|---|---|---|---|
| rrule | String | Recurring interval (in RFC5545 RRULE format, Example: "FREQ=DAILY;UNTIL=20221030T000000Z").UNTIL can only be specified after due_date in yyyyMMdd'T'000000Z format and must exist at least one day that satisfies the rrule condition. (Default: Not edited, Maximum: 20501231T000000Z) | X |
| record_on | Boolean | Whether to enable [My Challenge Record]. (Default: Not edited) | X |
| Name | Type | Description | Required |
|---|---|---|---|
| task_id | String | Edited task ID. | O |
Request
curl -v -X POST "https://kapi.kakao.com/v1/api/calendar/update/task" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d 'task={"content": "Edit test task","due_info": {"due_date": "${DUE_DATE}","time_zone": "Asia/Seoul","alarm_time": "0900","recur": {"rrule": "FREQ=DAILY;","record_on": false}},"bookmark": true}' \-d "task_id=${TASK_ID}"
Request: Delete due date information
curl -v -X POST "https://kapi.kakao.com/v1/api/calendar/update/task" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d 'task={"due_info": null}' \-d "task_id=${TASK_ID}"
Request: Delete recurring information
curl -v -X POST "https://kapi.kakao.com/v1/api/calendar/update/task" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d 'task={"due_info": {"due_date": "${DUE_DATE}","time_zone": "Asia/Seoul","alarm_time": "0900","recur": null}}' \-d "task_id=${TASK_ID}"
Response
// HTTP/1.1 200 OK{"task_id": "${TASK_ID}"}
| Method | URL | Authorization |
|---|---|---|
POST | https://kapi.kakao.com/v1/api/calendar/complete/task |
| Requirements | See also | |
|---|---|---|
Sets the completion status of task.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| task_id | String | Task ID. | O |
| complete | Boolean | Whether a task is complete.
| O |
| Name | Type | Description | Required |
|---|---|---|---|
| task_id | String | Completion status set task ID | O |
Request
curl -v -X POST "https://kapi.kakao.com/v1/api/calendar/complete/task" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "task_id=${TASK_ID}" \-d "complete=true"
Response
// HTTP/1.1 200 OK{"task_id": "${TASK_ID}"}
| Method | URL | Authorization |
|---|---|---|
DELETE | https://kapi.kakao.com/v1/api/calendar/delete/task |
| Requirements | See also | |
|---|---|---|
Deletes a particular task.
Cannot delete the tasks registered on Kakao Talk profile sticker.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}Access token as a type of user authentication. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| task_id | String | Task ID. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| task_id | String | Deleted task ID. | O |
Request
curl -v -G -X DELETE "https://kapi.kakao.com/v1/api/calendar/delete/task" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "task_id=${TASK_ID}"
Response
// HTTP/1.1 200 OK{"task_id": "${TASK_ID}"}
- Required parameters
- Default values
- User event > Create event
location_id,address,latitude,longitude: None
- User event > Edit event for host
name,location_id,address,latitude,longitude: Existing value
- User event > Create event
| Name | Type | Description | Required |
|---|---|---|---|
| name | String | Location name. Up to 100 characters are allowed. | X |
| location_id | Long | Location ID. | X |
| address | String | Address of the location. | X |
| latitude | Double | Latitude of the location. | X |
| longitude | Double | Longitude of the location. | X |
- Required parameters
- User event > Create event:
start_at,end_at
- User event > Create event:
- Default values
- User event > Create event
time_zone:Asia/Seoul
- User event > Edit event for host
start_at,end_at,time_zone,all_day,lunar: Existing value
- User event > Create event
| Name | Type | Description | Required |
|---|---|---|---|
| start_at | String | Time when the event starts (in RFC3339 format based on UTC, Maximum: 2050-12-31T14:50:00Z). | X |
| end_at | String | Time when the event ends (in RFC3339 format based on UTC, Maximum: 2050-12-31T14:55:00Z). | X |
| time_zone | String | Time zone (in IANA Time Zone Database name, Default: Asia/Seoul). | X |
| all_day | Boolean | Whether the event is all-day or timed event.
| X |
| lunar | Boolean | Whether the event is solar or lunar calendar.
| X |
| Name | Type | Description | Required |
|---|---|---|---|
| start_at | String | Time when the event starts (in RFC3339 format based on UTC, Maximum: 2050-12-31T14:50:00Z). | O |
| end_at | String | Time when the event ends. Same format as start_at.(Maximum: 2050-12-31T14:55:00Z) | O |
| all_day | Boolean | Whether the event is all-day or timed event.
| X |
For the color parameter, input a color name such as BLUE. Do not use the hexadecimal color code which is provided as a reference value.
| Name | Hexadecimal color code |
|---|---|
| BLUE | 2C88DE |
| ROYAL_BLUE | 2D69E0 |
| NAVY_BLUE | 223788 |
| RED | D42726 |
| PINK | ED5683 |
| ORANGE | FF9429 |
| GREEN | 149959 |
| LIME | 7CB343 |
| OLIVE | A4AD15 |
| MINT | 5CC5BE |
| MAGENTA | AB47BC |
| VIOLET | 8A4B9B |
| LAVENDER | 7986CB |
| BROWN | 945C1F |
| GRAY | 666666 |