본문 바로가기메인 메뉴 바로가기사이드 메뉴 바로가기

kakao developers

Related sites
  • Docs
  • Talk Calendar
  • REST API

사이드 메뉴

Search

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 typeHow to check the ID
My CalendarFixed as primary
Sub-calendar
  1. Request User calendar > Retrieve list of calendars to check the list of sub-calendars
  2. Check the sub-calendar ID from the calendar information in the list (for the calendars that your service has not created, only the ID is available)
Subscribed calendar
  1. Request Subscribed calendar > Retrieve list of subscribable calendars to check the list of subscribable calendars
  2. Check the subscribed calendar ID from the calendar information in the list
Event typeHow to check the ID
Personal / Guest event
  1. Check the ID of the calendar that the event belongs to in Check calendar ID
  2. Request User event > Retrieve list of events with the calendar ID
  3. Check the event ID from the event information in the list
Public event
  1. Request Public event > Retrieve list of public events
  2. Check the event ID from the event information in the list

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.

MethodURLAuthorization
GEThttps://kapi.kakao.com/v2/api/calendar/calendars

Returns a list of user calendars.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
filterStringType of calendar to be retrieved.
One of the followings:
  • ALL: All calendars are retrieved. (Default)
  • USER: My Calendar and sub-calendars are retrieved.
  • SUBSCRIBE: Subscribed calendars added to user's calendar are retrieved.
If not specified, all events are retrieved.
For multiple values, use a comma(,) to separate each value. (Example: USER,SUBSCRIBE)
X
NameTypeDescriptionRequired
calendarsCalendar[]List of My Calendar and sub-calendars.X
subscribe_calendarsSubscribe[]List of subscribed calendars.X
NameTypeDescriptionRequired
idStringCalendar ID.
In the case of My Calendar, primary is returned.
O
nameStringCalendar name.X
reminderIntegerDefault reminder time for non-all-day events.X
reminder_all_dayIntegerDefault reminder time for all-day events.X
colorStringCalendar color.
Refer to Color.
X
NameTypeDescriptionRequired
idStringSubscribed calendar ID.O
nameStringSubscribed calendar name.X
colorStringSubscribed calendar color.
Refer to Color.
X
reminderIntegerDefault reminder time for non-all-day events.X
reminder_all_dayIntegerDefault reminder time for all-day events.X
descriptionStringDescription of the subscribed calendar.
This field is set by a service channel.
X
profile_image_urlStringURL of the profile image of the subscribed calendar.
This field is set by a service channel.
X
thumbnail_urlStringURL of the thumbnail image displayed in a chat bubble of the subscribed calendar.
This field is set by a service channel.
X
curl -v -G GET "https://kapi.kakao.com/v2/api/calendar/calendars" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d "filter=USER"
// 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"
}
// ...
]
}
MethodURLAuthorization
POSThttps://kapi.kakao.com/v2/api/calendar/create/calendar

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.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
nameStringCalendar name.
Up to 50 characters are allowed.
O
colorStringCalendar color.
Use one of the values in the Color table. (Default: BLUE)
X
reminderIntegerDefault reminder for non-all-day events.
Can be set in 5-minute intervals.
X
reminder_all_dayIntegerDefault reminder for all-day events.
Can be set in 5-minute intervals.
X
NameTypeDescriptionRequired
calendar_idStringID of the created sub-calendar.O
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"
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"calendar_id": "user_6359e5226b03401878f0f2fe"
}
MethodURLAuthorization
POSThttps://kapi.kakao.com/v2/api/calendar/update/calendar

Edits a particular sub-calendar.

You can edit only the sub-calendar that your service has created.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
Content-TypeContent-Type: application/x-www-form-urlencoded;charset=utf-8
The data type of the request.
O
NameTypeDescriptionRequired
calendar_idStringCalendar ID.O
nameStringCalendar name.
Up to 50 characters are allowed.
X*
colorStringCalendar color.
Use one of the values in the Color table.
X*
reminderIntegerDefault reminder for non-all-day events.
Can be set in 5-minute intervals, and passing null resets the value.
X*
reminder_all_dayIntegerDefault reminder for all-day events.
Can be set in 5-minute intervals, and passing null resets the value.
X*
* At least one of name, color, reminder, or reminder_all_day is required.
NameTypeDescriptionRequired
calendar_idStringID of the requested sub-calendar.O
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"
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"calendar_id": "user_6359e5226b03401878f0f2fe"
}
MethodURLAuthorization
DELETEhttps://kapi.kakao.com/v2/api/calendar/delete/calendar

Deletes a particular sub-calendar.

You can delete only the sub-calendar that your service has created.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
calendar_idStringCalendar 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
NameTypeDescriptionRequired
calendar_idStringID of the deleted sub-calendar.O
curl -v -G -X DELETE "https://kapi.kakao.com/v2/api/calendar/delete/calendar" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d "calendar_id=user_6359e5226b03401878f0f2fe"
// 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.

MethodURLAuthorization
POSThttps://kapi.kakao.com/v2/api/calendar/create/event

Creates an event on a user's calendar.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
calendar_idStringCalendar 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
eventEventCreateEvent information that you want to create.O
NameTypeDescriptionRequired
titleStringEvent title.
Up to 50 characters are allowed.
O
timeTimeEvent time information, including start and end time, all-day, lunar or time zone information.O
rruleStringInterval 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
descriptionStringEvent description.
Up to 5,000 characters are allowed.
X
locationLocationLocation information of where the event is held.X
remindersInteger[]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:
  • All-day event: -1440 (before the end of the event day) < reminder value ≤ 43200 (30 days before the event starts)
  • Non-all-day event: 0 (start time of the event) < reminder value ≤ 43200 (30 days before the event starts)
If omitted or passed as an empty array, uses the calendar's reminder_all_day for all-day events and reminder for non-all-day events.
X
colorStringColor 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
NameTypeDescriptionRequired
event_idStringID 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
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"
}'
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"event_id": "63630868d89d8b4150bbb712"
}
MethodURLAuthorization
GEThttps://kapi.kakao.com/v2/api/calendar/events

Returns a list of events registered in a specific calendar.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
calender_idStringCalendar ID that you want to retrieve.
(Default: Retrieves all calendars.)
X
presetStringRetrieval period preset.
One of the followings:
  • TODAY: The day of the retrieval.
  • THIS_WEEK: A week with retrieval days starting on Sunday.
  • THIS_MONTH: A month with retrieval days starting on the 1st.

Important: Required if from and to are not set.

Important: Ignored if next_page_token is set.
X
time_zoneStringTime zone of the retrieval period (in IANA Time Zone Database name, Default: Asia/Seoul).X
fromStringStart 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
toStringEnd 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
limitIntegerMaximum 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_tokenStringToken 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
NameTypeDescriptionRequired
eventsEventBrief[]List of events.
If there is no event, an empty array is returned.
O
has_nextBooleanWhether a next page exists.O
after_urlStringURL used to request the next page.
Only returned if has_next is true.
X
  • For schedules that are not created by your service, only time field is included in the response.
NameTypeDescriptionRequired
idStringEvent 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
titleStringEvent title.X
typeStringEvent type.
One of the followings:
  • USER: Event that a user added.
  • PUBLIC: Public event.
  • SUBSCRIBE: Subscribed event.
X
calendar_idStringCalendar ID.
  • primary: My Calendar that is automatically created by default for each user.
X
is_hostBooleanWhether the user is a host of the event.
  • true: Personal event that the user has created.
  • false: Personal event that the user has not created, public event, or subscribed event.
X
timeTimeEvent time information, including start and end time, all-day, lunar or time zone information.O
is_recur_eventBooleanWhether the event is recurring.
  • true: Recurring event.
  • false: One-time event.
Only returned if type is USER.
X
colorStringColor of the event.
Refer to Color.
Not returned if not specified when creating or editing an event.
X
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"
curl -v -G GET "${AFTER_URL}" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"
// 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"
}
MethodURLAuthorization
GEThttps://kapi.kakao.com/v2/api/calendar/event

Returns the details of a user's personal event.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
event_idStringEvent 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
NameTypeDescriptionRequired
eventEventDetailDetailed information of the requested event.O
NameTypeDescriptionRequired
idStringEvent 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
titleStringEvent title.O
typeStringEvent type.
One of the followings:
  • USER: Event that a user added.
  • PUBLIC: Public event.
  • SUBSCRIBE: Subscribed event.
O
calendar_idStringCalendar ID.
In the case of My Calendar, primary is returned.
O
timeTimeEvent time information, including start and end time, all-day, lunar or time zone information.O
is_hostBooleanWhether the user is a host of the event.
  • true: Personal event that the user has created.
  • false: Personal event that the user has not created, public event, or subscribed event.
O
is_recur_eventBooleanWhether the event is recurring.
  • true: Recurring event.
  • false: One-time event.
Only returned if type is USER.
X
rruleStringOnly 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_startStringTime 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
descriptionStringEvent description.
Up to 5,000 characters are allowed.
X
locationLocationLocation information of where the event is held.X
remindersInteger[]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:
  • All-day event: -1440 (before the end of the event day) < reminder value ≤ 43200 (30 days before the event starts)
  • Non-all-day event: 0 (start time of the event) < reminder value ≤ 43200 (30 days before the event starts)
X
colorStringColor of the event.
Refer to Color.
Not returned if not specified when creating or editing an event.
X
memoStringNote that a user has input.
Up to 5,000 characters are allowed.
Not returned if user has not input any note.
X
bannerBannerBanner information used to promote a subscribed event.
Not retured if banner information is not specified when creating a subscribed event.
X
NameTypeDescriptionRequired
pc_image_urlStringURL of the banner image to be used on a web.X
mobile_image_urlStringURL of the banner image to be used on mobile.X
bg_colorStringBackground color displayed in the margin of the banner image. (Example: F3F3F3)
  • null: Transparent background.
X
linkLinkLink informaiton applied to the image banner.X
NameTypeDescriptionRequired
web_urlStringURL that is directed to when the button is invoked in a PC environment.X
mobile_web_urlStringURL that is directed to when the button is invoked in a mobile environment.X
curl -v -G GET "https://kapi.kakao.com/v2/api/calendar/event" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d "event_id=6554545a5df8367886f9d2c5"
// 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"
}
}
MethodURLAuthorization
POSThttps://kapi.kakao.com/v2/api/calendar/update/event/host

Edits a particular personal event that a user has created.

  • Primitive types (Integer, Boolean, Double, String, etc.): null.
  • Other types: null or {}.
NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
event_idStringEvent 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_idStringCalendar 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_typeStringScope of recurring events to which the changes are applied.
One of the followings:
  • ALL: Update all recurring events associated with the specified event_id.
  • THIS: Update this event only.
  • THIS_AND_FOLLOWING: Update this and following events.

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
eventEventUpdateEvent information to update.

Important: Required if calendar_id is omitted. If included, specify at least one field. Omitted fields retain their existing values.
X
NameTypeDescriptionRequired
titleStringEvent title.
Up to 50 characters are allowed.
If omitted, the existing value is retained.
X
timeTimeEvent 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
rruleStringInterval 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
descriptionStringEvent description.
Up to 5,000 characters are allowed.
If omitted, the existing value is retained.
X
locationLocationLocation information of where the event is held.
If omitted, the existing value is retained.
X
remindersInteger[]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:
  • All-day event: -1440 (before the end of the event day) < reminder value ≤ 43200 (30 days before the event starts)
  • Non-all-day event: 0 (start time of the event) < reminder value ≤ 43200 (30 days before the event starts)
If omitted, the existing value is retained.
X
colorStringColor of the event.
One of the color names that are described in Color.
If omitted, the existing value is retained.
X
NameTypeDescriptionRequired
event_idStringEvent 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
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"
}'
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"event_id": "6375b0e938e1f752188e0fba"
}
MethodURLAuthorization
DELETEhttps://kapi.kakao.com/v2/api/calendar/delete/event

Deletes the user's personal event or public event added on a user's calendar.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
event_idStringEvent 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_typeStringScope of recurring events to which the changes are applied.
One of the followings:
  • ALL: Delete all recurring events associated with the specified event_id.
  • THIS: Delete this event only.
  • THIS_AND_FOLLOWING: Delete this and following events.

Important: Required in case of recurring events.
X
NameTypeDescriptionRequired
event_idStringID of the deleted personal event.
Not returned if you request to change a recurring event even if the request is successful.
X
curl -v -G -X DELETE "https://kapi.kakao.com/v2/api/calendar/delete/event" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d "event_id=63630c44d89d8b4150bbb716"
// 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.

MethodURLAuthorization
POSThttps://kapi.kakao.com/v2/api/calendar/public/create/event

Creates a public event.

You can only create public events for a Kakao Talk Channel connected to the app.

NameDescriptionRequired
AuthorizationAuthorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}
Service app admin key as a type of user authentication.
O
NameTypeDescriptionRequired
channel_public_idStringKakao 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
eventEventPublicInformation of public event to be created.O
NameTypeDescriptionRequired
titleStringEvent title.
Up to 50 characters are allowed.
O
timeTimeEvent time information, including start and end time, all-day, lunar or time zone information.O
descriptionStringEvent description.
Up to 5,000 characters are allowed.
X
locationLocationLocation information of where the event is held.X
remindersInteger[]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:
  • All-day event: -1440 (before the end of the event day) < reminder value ≤ 43200 (30 days before the event starts)
  • Non-all-day event: 0 (start time of the event) < reminder value ≤ 43200 (30 days before the event starts)
If omitted or passed as an empty array, uses the calendar's reminder_all_day for all-day events and reminder for non-all-day events.
X
colorStringColor of the event.
Use one of the values in the Color table.
X
notification_messageNotificationMessageInformation 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
NameTypeDescriptionRequired
display_custom_buttonBooleanWhether to enable custom buttons
  • true: Enable a custom button (Default)
  • false: Disable
X
before_event_reminderEventReminderCustom setting for the notification message before the event starts.X
after_event_reminderEventReminderCustom setting for the notification message after the event starts.X
NameTypeDescriptionRequired
buttonButtonCustom button information in notification messages, apply default custom button (공유하기) if not includedX
NameTypeDescriptionRequired
titleStringButton name.
Used to customize a button in the notification message.
Use one of the followings:
  • 시청하기 meaning 'Watch'.
  • 예매하기 meaning 'Ticketing'.
  • 예약하기 meaning 'Reserve'.
  • 참여하기 meaning 'Join'.
  • 상세보기 meaning 'Details'.

Important: Only Korean is supported for this button name.
O
linkLinkLink information for the custom button in the notification message.O
NameTypeDescriptionRequired
web_urlStringURL 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_urlStringURL 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*
* Either web_url or mobile_web_url is required.
NameTypeDescriptionRequired
event_idStringID of the created public event.O
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"
}
}
}
}
}'
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"event_id": "6377474a71fdf754fbbf6465"
}
MethodURLAuthorization
GEThttps://kapi.kakao.com/v2/api/calendar/public/events

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.

NameDescriptionRequired
AuthorizationAuthorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}
Service app admin key as a type of user authentication.
O
NameTypeDescriptionRequired
channel_public_idStringKakao 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
fromStringStart 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
toStringEnd 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
limitIntegerMaximum number of events to be retrieved per page.
(Default: 10, Maximum: 30)
X
offsetIntegerOrder 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
NameTypeDescriptionRequired
eventsEventPublicBrief[]List of public event information.O
has_nextBooleanWhether a next page exists.O
after_urlStringURL used to request the next page.
Only returned if has_next is true.
X
NameTypeDescriptionRequired
idStringEvent ID.O
titleStringEvent title.O
typeStringEvent type.
Fixed to PUBLIC.
O
timeTimeDefaultTime information.O
colorStringColor of the event.
Refer to Color.
X
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"
curl -v GET "${AFTER_URL}" \
-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}"
// 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"
}
MethodURLAuthorization
GEThttps://kapi.kakao.com/v2/api/calendar/public/event

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.

NameDescriptionRequired
AuthorizationAuthorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}
Service app admin key as a type of user authentication.
O
NameTypeDescriptionRequired
channel_public_idStringKakao 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_idStringID of the public event to be retrieved.O
NameTypeDescriptionRequired
idStringEvent ID.O
titleStringEvent title.O
typeStringEvent type.
Fixed to PUBLIC.
O
timeTimeTime information.O
descriptionStringEvent description.
Up to 5,000 characters are allowed.
X
locationLocationLocation information of where the event is held.X
remindersInteger[]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:
  • All-day event: -1440 (before the end of the event day) < reminder value ≤ 43200 (30 days before the event starts)
  • Non-all-day event: 0 (start time of the event) < reminder value ≤ 43200 (30 days before the event starts)
X
colorStringColor of the event.
Refer to Color.
X
notification_messageNotificationMessageSettings for notification messages
Include in response when using notification messages
X
NameTypeDescriptionRequired
before_event_reminderEventReminderCustom setting for the notification message before the event starts.X
after_event_reminderEventReminderCustom setting for the notification message after the event starts.X
NameTypeDescriptionRequired
buttonButtonCustom button information in the notification message.X
NameTypeDescriptionRequired
titleStringCustom button name in the notification message.O
linkLinkLink information for the custom button in the notification message.
Not included if the default custom button (공유하기) is used.
X
NameTypeDescriptionRequired
web_urlStringURL of the service page used in a PC environment.O
mobile_web_urlStringURL of the service page used in a mobile environment.O
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"
// 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"
}
}
}
}
}
}
MethodURLAuthorization
POSThttps://kapi.kakao.com/v2/api/calendar/public/update/event

Edits a particular public event.

NameDescriptionRequired
AuthorizationAuthorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}
Service app admin key as a type of user authentication.
O
NameTypeDescriptionRequired
channel_public_idStringKakao 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_idStringID of the public event you want to change.O
eventEventUpdatePublicPublic event information to update.O
NameTypeDescriptionRequired
titleStringEvent title.
Up to 50 characters are allowed.
If omitted, the existing value is retained.
X
timeTimeEvent time information, including start and end time, all-day, lunar or time zone information.
If omitted, the existing value is retained.
X
descriptionStringEvent description.
Up to 5,000 characters are allowed.
If omitted, the existing value is retained.
X
locationLocationLocation information of where the event is held.
If omitted, the existing value is retained.
X
remindersInteger[]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:
  • All-day event: -1440 (before the end of the event day) < reminder value ≤ 43200 (30 days before the event starts)
  • Non-all-day event: 0 (start time of the event) < reminder value ≤ 43200 (30 days before the event starts)
If omitted, the existing value is retained.
X
colorStringColor of the public event.
One of the color names that are described in Color.
If omitted, the existing value is retained.
X
notification_messageNotificationMessageUsed 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
NameTypeDescriptionRequired
event_idStringPublic event ID.O
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"
}
}
}
}'
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"event_id": "638db6d5577cba184608ef58"
}
MethodURLAuthorization
DELETEhttps://kapi.kakao.com/v2/api/calendar/public/delete/event

Deletes a particular public event.

You can only delete public events for a Kakao Talk Channel connected to the app.

NameDescriptionRequired
AuthorizationAuthorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}
Service app admin key as a type of user authentication.
O
NameTypeDescriptionRequired
channel_public_idStringKakao 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_idStringID of the public event to be deleted.O
NameTypeDescriptionRequired
event_idStringID of the deleted public event.O
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"
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"event_id": "637b2d3471fdf754fbbf6e94"
}
MethodURLAuthorization
POSThttps://kapi.kakao.com/v2/api/calendar/public/follow

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.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
event_idStringPublic event ID.O
calendar_idStringID of user's calendar that the public event will be added to.
primary (My calendar, Default)
X
NameTypeDescriptionRequired
event_idStringPublic event ID.O
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"
// 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.

MethodURLAuthorization
GEThttps://kapi.kakao.com/v2/api/calendar/subscribable/calendars

Returns a list of calendars available for subscription.

NameDescriptionRequired
AuthorizationAuthorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}
Service app admin key as a type of user authentication.
O
NameTypeDescriptionRequired
category_nameStringUsed 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_nameStringUsed to retrieve only the subscribed calendars included in a particular sub-category. (Example: Baseball)X
NameTypeDescriptionRequired
categoriesCategory[]List of subscribed calendars by category.O
NameTypeDescriptionRequired
category_nameStringCategory name which the subscribed calendars are included in.O
subcategoriesSubcategory[]List of subscribed calendars.O
NameTypeDescriptionRequired
subcategory_nameStringSub-category name which the subscribed calendars are included in.
Not returned if a sub-category name is not specified.
X
calendarsCalendar[]List of subscribed calendar information.O
NameTypeDescriptionRequired
idStringSubscribed calendar ID.O
nameStringSubscribed calendar name.O
profile_image_urlStringURL of the profile image of the subscribed calendar.
Not returned if the calendar has no profile image.
X
curl -v -G GET "https://kapi.kakao.com/v2/api/calendar/subscribable/calendars" \
-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}"
// 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"
}
]
}
]
}
]
}
MethodURLAuthorization
POSThttps://kapi.kakao.com/v2/api/calendar/subscribe

Subscribes to your service's calendar.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
calendar_idStringSubscribed calendar ID that a user will subscribe to.O
NameTypeDescriptionRequired
calendar_idStringSubscribed calendar ID.O
curl -v -X POST "https://kapi.kakao.com/v2/api/calendar/subscribe" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d "calendar_id=subscribe_5efad4e3890efb10051630f2"
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"calendar_id": "subscribe_5efad4e3890efb10051630f2"
}
MethodURLAuthorization
DELETEhttps://kapi.kakao.com/v2/api/calendar/unsubscribe

Unsubscribes from your service's calendar.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
calendar_idStringSubscribed calendar ID to be removed from a user's calendar.O
NameTypeDescriptionRequired
calendar_idStringSubscribed calendar ID.O
curl -v -G -X DELETE "https://kapi.kakao.com/v2/api/calendar/unsubscribe" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d "calendar_id=subscribe_5efad4e3890efb10051630f2"
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"calendar_id": "subscribe_5efad4e3890efb10051630f2"
}
MethodURLAuthorization
POSThttps://kapi.kakao.com/v2/api/calendar/update/event/guest

Edits a particular public event or subscribed event added to a user's calendar.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
event_idStringID 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_idStringCalendar 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
eventEventGuestEvent 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
NameTypeDescriptionRequired
remindersInteger[]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:
  • All-day event: -1440 (before the end of the event day) < reminder value ≤ 43200 (30 days before the event starts)
  • Non-all-day event: 0 (start time of the event) < reminder value ≤ 43200 (30 days before the event starts)
If omitted, the existing value is retained.
X
colorStringColor of the event.
Use one of the values in the Color table.
If omitted, the existing value is retained.
X
memoStringNote that a user has input.
Up to 5,000 characters are allowed.
If omitted, the existing value is retained.
X
NameTypeDescriptionRequired
event_idStringEvent ID.O
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"
}'
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"event_id": "6351f57c7ec8e318d0b809a0"
}
MethodURLAuthorization
GEThttps://kapi.kakao.com/v2/api/calendar/holidays
RequirementsSee also
-

Returns a list of statutory holidays and selected observances designated by Talk Calendar.

NameDescriptionRequired
AuthorizationAuthorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}
Service app admin key as a type of user authentication.
O
NameTypeDescriptionRequired
fromStringStart 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
toStringEnd 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
NameTypeDescriptionRequired
eventsEventSpecial[]List of holidays and celebrations.O
NameTypeDescriptionRequired
idStringEvent ID.O
titleStringEvent title.O
timeTimeDefaultHoliday time information.O
holidayBooleanWhether the day is a public holiday.O
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"
// 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
}
]
}
MethodURLAuthorization
POSThttps://kapi.kakao.com/v1/api/calendar/create/task

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.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
taskTaskTask information.O
NameTypeDescriptionRequired
contentStringContent. (Maximum: 1000)O
due_infoDueInfoDue date information. (Default: No due date)X
NameTypeDescriptionRequired
due_dateStringDue date, yyyyMMdd format. (Maximum: 20501231)

Important: Cannot be set to a point in the past.
O
time_zoneStringTime zone (in IANA Time Zone Database name, Default: Asia/Seoul).X
alarm_timeStringAlarm time in HHmm format every 5 minutes. (Unit: Minutes, Default: No alarm)X
recurRecurRecurring 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
NameTypeDescriptionRequired
rruleStringRecurring 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_onBooleanWhether to enable [My Challenge Record].
  • true: Enable
  • false: Disable(Default)
X
NameTypeDescriptionRequired
task_idStringCreated task ID.O
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
}
}
}'
// HTTP/1.1 200 OK
{
"task_id": "${TASK_ID}"
}
MethodURLAuthorization
GEThttps://kapi.kakao.com/v1/api/calendar/tasks

Returns task information.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
task_idStringTask ID.

Important: If included, only the task corresponding to the ID will be retrieved, and all other request parameters will be ignored.
X
fromStringStart time to retrieve, yyyyMMdd format.

Note: Required when task_id is not included.
X
toStringEnd time to retrieve, yyyyMMdd format.
Within 31 days of from.

Note: Required when task_id is not included.
X
task_statusStringTask status, One of the followings:
  • COMPLETED: Completed
  • TODO: Not completed (Default)
  • ALL: All status (Displays TODO status first)
X
task_filterStringTask condition to retrieve (Default: All conditions)
Comma (",") as a separator to pass multiple values (Example: "authorized,bookmark")
One of the followings:
  • authorized: Tasks that can be edited or deleted.
  • bookmark: Tasks that have been bookmarked.
X
offsetIntegerOffset value that the list of tasks starts from. (Default: 0)X
limitIntegerNumber of results per page. (Default: 100, Maximum: 1000)X
time_zoneStringTime zone (in IANA Time Zone Database name, Default: Asia/Seoul).

Note: Time calculation criteria of status response.
X
NameTypeDescriptionRequired
tasksTask[]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
countIntegerThe 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_nextBooleanWhether a next page exists.O
after_urlStringURL used to request the next page.
Only returned if has_next is true.
X
NameTypeDescriptionRequired
task_idStringTask ID.O
contentStringContent.O
statusStringTask status.
SCHEDULED: Before the due date.
COMPLETED: Completed.
DELAYED: After the due date.
O
bookmarkBooleanWhether the tasks that have been bookmarked.O
authorizedBooleanWhether the tasks that can be edited or deleted.O
due_infoDueInfoDue date information.X
NameTypeDescriptionRequired
due_dateStringDue date, yyyyMMdd format.O
alarm_timeStringAlarm time in HHmm format every 5 minutes. (Unit: Minutes)X
recurRecurRecurring information.X
NameTypeDescriptionRequired
rruleStringRecurring interval (in RFC5545 RRULE format, Example: "FREQ=DAILY;UNTIL=20221030T000000Z").O
record_onBooleanWhether to enable [My Challenge Record].
  • true: Enable
  • false: Disable
O
is_endedBooleanWhether the task has been completed, true if the last to-do has been completed.O
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}"
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"
// 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"
}
MethodURLAuthorization
GEThttps://kapi.kakao.com/v1/api/calendar/task/records

Returns the challenge history of a specific recurring task.

Only available for tasks that have [My Challenge Record] enabled.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
task_idStringTask ID.O
fromStringThe beginning month and year of the retrieving period, yyyyMM format.O
toStringThe ending month and year of the retrieving period, yyyyMM format.O
NameTypeDescriptionRequired
recordsRecord[]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_atStringThe beginning month and year of the challenge, yyyyMM format.

Note: Only include challenge record in the response if it exists.
X
end_atStringThe ending month and year of the challenge, yyyyMM format.

Note: Only include challenge record in the response if it exists.
X
NameTypeDescriptionRequired
dateStringChallenge date, yyyyMMdd format.O
completeBooleanWhether the task was completed on that challenge date.O
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"
// HTTP/1.1 200 OK
{
"records": [
{
"date": "20231211",
"complete": true
}
],
"start_at": "202312",
"end_at": "202312"
}
MethodURLAuthorization
POSThttps://kapi.kakao.com/v1/api/calendar/update/task

Edits a particular task.

You cannot edit the tasks registered on Kakao Talk profile sticker.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
task_idStringTask ID.O
taskTaskTask information.O
NameTypeDescriptionRequired
contentStringContent. (Maximum: 1000, Default: Not edited)X
bookmarkBooleanWhether the tasks that have been bookmarked. (Default: Not edited)X
due_infoDueInfoDue date information. (Default: Not edited)
If set to null, also deletes recurring information and disables [My Challenge Record].
X
NameTypeDescriptionRequired
due_dateStringDue date, yyyyMMdd format. (Default: Not edited, Maximum: 20501231)

Important: Cannot be set to a point in the past.
X
time_zoneStringTime zone (in IANA Time Zone Database name, Default: Not edited).X
alarm_timeStringAlarm time in HHmm format every 5 minutes. (Unit: Minutes, Default: Not edited)X
recurRecurRecurring information. (Default: Not edited)X
NameTypeDescriptionRequired
rruleStringRecurring 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_onBooleanWhether to enable [My Challenge Record]. (Default: Not edited)X
NameTypeDescriptionRequired
task_idStringEdited task ID.O
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}"
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}"
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}"
// HTTP/1.1 200 OK
{
"task_id": "${TASK_ID}"
}
MethodURLAuthorization
POSThttps://kapi.kakao.com/v1/api/calendar/complete/task

Sets the completion status of task.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
task_idStringTask ID.O
completeBooleanWhether a task is complete.
  • true: Complete
  • false: Incomplete
O
NameTypeDescriptionRequired
task_idStringCompletion status set task IDO
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"
// HTTP/1.1 200 OK
{
"task_id": "${TASK_ID}"
}
MethodURLAuthorization
DELETEhttps://kapi.kakao.com/v1/api/calendar/delete/task

Deletes a particular task.

Cannot delete the tasks registered on Kakao Talk profile sticker.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${ACCESS_TOKEN}
Access token as a type of user authentication.
O
NameTypeDescriptionRequired
task_idStringTask ID.O
NameTypeDescriptionRequired
task_idStringDeleted task ID.O
curl -v -G -X DELETE "https://kapi.kakao.com/v1/api/calendar/delete/task" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d "task_id=${TASK_ID}"
// HTTP/1.1 200 OK
{
"task_id": "${TASK_ID}"
}
NameTypeDescriptionRequired
nameStringLocation name.
Up to 100 characters are allowed.
X
location_idLongLocation ID.X
addressStringAddress of the location.X
latitudeDoubleLatitude of the location.X
longitudeDoubleLongitude of the location.X
NameTypeDescriptionRequired
start_atStringTime when the event starts (in RFC3339 format based on UTC, Maximum: 2050-12-31T14:50:00Z).X
end_atStringTime when the event ends (in RFC3339 format based on UTC, Maximum: 2050-12-31T14:55:00Z).X
time_zoneStringTime zone (in IANA Time Zone Database name, Default: Asia/Seoul).X
all_dayBooleanWhether the event is all-day or timed event.
  • true: All-day event.
  • false: Timed event.
X
lunarBooleanWhether the event is solar or lunar calendar.
  • true: Lunar calendar.
  • false: Solar calendar.
X
NameTypeDescriptionRequired
start_atStringTime when the event starts (in RFC3339 format based on UTC, Maximum: 2050-12-31T14:50:00Z).O
end_atStringTime when the event ends.
Same format as start_at.
(Maximum: 2050-12-31T14:55:00Z)
O
all_dayBooleanWhether the event is all-day or timed event.
  • true: All-day event.
  • false: 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.

NameHexadecimal color code
BLUE2C88DE
ROYAL_BLUE2D69E0
NAVY_BLUE223788
REDD42726
PINKED5683
ORANGEFF9429
GREEN149959
LIME7CB343
OLIVEA4AD15
MINT5CC5BE
MAGENTAAB47BC
VIOLET8A4B9B
LAVENDER7986CB
BROWN945C1F
GRAY666666

Was this helpful?

    Talk Calendar > REST API - Kakao Developers | Docs