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

kakao developers

Related sites
  • Docs
  • REST API
  • Reference

사이드 메뉴

Kakao Map

Search

REST API

Reference

This document guides the specification of the REST API provided by the Kakao Developers.

Request

The request format for Kakao APIs consists of the elements below.

ElementDescription
MethodAn HTTP request method is required to be specified for a Kakao API request.
(Example: GET, POST, PUT, DELETE)
HostThe domain that receives requests for Kakao APIs.
(Example: kapi.kakao.com)
URLThe URL indicates the path to request each resource provided by Kakao APIs.
The endpoint of each Kakao API consists of the URL and the host.
(Example: /v2/user/me)
HeaderThe header is used to pass data for authorization or additional data.
An access token or an Platform key is used as the authorization information.
Some Kakao APIs require additional information in the header, such as ad account ID.
(Example: Authorization: Bearer ${ACCESS_TOKEN})
Path variableThe path variable is used to specify the URL, including the custom value.
Some Kakao APIs include path variables in the URL.
(Example: /openapi/v4/campaigns/${id})
ParameterThe parameter is used to pass data for the request.
The parameter can be passed through a query string or in the body.
The parameter consists of a key and a value.
The data type and whether it is required for the request are specified for each parameter.

The specification for each Kakao API is indicated in each product's documentation.

Security settings

Set a list of Allowed IP address, or use a client secret code to enhance security.

Response

Response format

The Kakao API server returns the response in the following format for each request:

  • On success: HTTP status code, a JSON including response fields
  • On failure: HTTP status code, a JSON including an error code including code as an integer and msg as a string

Here are some sample responses below.

Example: Fail, When calling an API that is not allowed in [App] > [Admin key] > [Available APIs].
HTTP/1.1 403 Forbidden
{
"msg": "This api is not allowed by using app_key(${APP_KEY}).",
"code": -3
}
Example: Fail, Invalid token
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer error=invalid_token
{
"code":-401,
"msg":"InvalidTokenException"
}
Example: Fail, Exceeding API quota limit
HTTP/1.1 400 Forbidden
{
"code":-10,
"msg":"API limit has been exceeded."
}
Example: Fail, No permission to send Kakao Talk message
HTTP/1.1 403 Forbidden
{
"msg": "insufficient scopes.",
"code": -402,
"api_type": "TALK_MEMO_DEFAULT_SEND",
"required_scopes": [
"talk_message"
],
"allowed_scopes": [
"profile",
"account_email"
]
}

The code passed in the error response message body is a negative integer without any specific rule. The msg, passed along with the code, indicates the cause of request failure and may be different depending on the requested APIs. For example, in the case of code is -401, different msg can be passed according to the APIs as follows:

If requesting with invalid app key or access token
"this access token does not exist", "this access token is already expired", "appKey(xxxxxxxx) is already deactivated"
If requesting API from domain not registered in [JavaScript SDK domain]
"domain mismatched! caller=xxxxxxxx. check out registered web domains."
If client information does not match the one registered in [App] > [Platform key] > [Native app key]
"android keyhash mismatched! caller=xxxxxxxx. check out registered keyhash."
"ios bundle id mismatched! caller=xxxxxxxx. check out registered bundle id."
If requesting with IP address not registered in [Allowed IP Address]
"ip mismatched! callerIp=xxxxxxxx. check out registered ips."

Response code

Response codes include an HTTP status code indicating the status of the request and an error code about the error information. If the request is successful, the response body is returned with a status code of 200. If failed, an error code with the code and msg is returned.

HTTP status code

The HTTP status code is a 3-digit integer in the first line of a response message, indicating the request result (success or failure). The status codes are classified into five, and the first digit of the status code defines the types of response. Refer to RFC 2616 to see more about HTTP status code.

Here is the list of HTTP status codes that the Kakao platform transmits.

Status codeStatusDescription
200
OK
SuccessIndicates that the server has received and processed the client's request successfully.
The format of the response body may differ depending on APIs. Refer to the detailed description of each API.
400
Bad Request
FailGeneral error
Indicates the state in which the server has detected a client error related to required parameters and cannot process the request.
401
Unauthorized
FailureAuthentication error (mainly token-related).
This request failed because there are no valid authentication credentials for the target resource.
The response includes error information in the header according to the OAuth 2.0 RFC6750 standard specification.
  • When using a token: WWW-Authenticate: Bearer error=invalid_token.
  • When using the Admin key of the service app: WWW-Authenticate: KakaoAK error=invalid_token.
Detailed error information is available in the response body.
403
Forbidden
FailPermission Error
Indicates that the server has received the client's request but rejected it because the client has no permission.
429
Too Many Request
FailQuota exceeded (Only for Daum Search, Local, Moment, and Keyword Ad APIs)
Indicates that the quota limit or the limit per second for the API has been exceeded.
500
Internal Server Error
FailSystem error
500 refers to the class of server errors, indicating that the server is in an unexpected situation while processing the request.
502
Bad Gateway
FailSystem error
Indicates that communication is not working properly because a gateway converts to another wrong protocol or has something wrong with the converting protocol.
503
Service Unavailable
FailUndergoing maintenance
Indicates that the server is not ready to process the request.
Error code

See Error code.

API list

Here are the lists of URLs, hosts, and methods required when making a request to use each function that the REST API supports.

Kakao Login

APIMethodURL
Get authorization codeGEThttps://kauth.kakao.com/oauth/authorize
Get tokenPOSThttps://kauth.kakao.com/oauth/token
LogoutPOSThttps://kapi.kakao.com/v1/user/logout
Logout of service and Kakao AccountGEThttps://kauth.kakao.com/oauth/logout
UnlinkPOSThttps://kapi.kakao.com/v1/user/unlink
Retrieve access token informationGEThttps://kapi.kakao.com/v1/user/access_token_info
Refresh tokenPOSThttps://kauth.kakao.com/oauth/token
Retrieve user informationGET/POSThttps://kapi.kakao.com/v2/user/me
Retrieve multiple user informationGEThttps://kapi.kakao.com/v2/app/users
Retrieve user listGEThttps://kapi.kakao.com/v1/user/ids
Store user propertyPOSThttps://kapi.kakao.com/v1/user/update_profile
Retrieve shipping addressGEThttps://kapi.kakao.com/v1/user/shipping_address
Retrieve consent detailsGEThttps://kapi.kakao.com/v2/user/scopes
Revoke consentPOSThttps://kapi.kakao.com/v2/user/revoke/scopes
Retrieve consent details for service termsGEThttps://kapi.kakao.com/v2/user/service_terms
Revoke consent for service termsPOSThttps://kapi.kakao.com/v2/user/revoke/service_terms
Advanced: Set consent to service termsPOSThttps://kapi.kakao.com/v2/user/upgrade/service_terms
OIDC: Get Discovery documentGEThttps://kauth.kakao.com/.well-known/openid-configuration
OIDC: Get public keyGEThttps://kauth.kakao.com/.well-known/jwks.json
OIDC: Get ID token informationPOSThttps://kauth.kakao.com/oauth/tokeninfo
OIDC: Get user informationGEThttps://kapi.kakao.com/v1/oidc/userinfo
Advanced: Manual signupPOSThttps://kapi.kakao.com/v1/user/signup

Kakao Talk Social

APIMethodURL
Retrieve Kakao Talk profileGEThttps://kapi.kakao.com/v1/api/talk/profile
Retrieve list of friendsGEThttps://kapi.kakao.com/v1/api/talk/friends
Retrieve Kakao Talk profiles by user listGET/POSThttps://kapi.kakao.com/v2/api/talk/profiles

Kakao Talk Message

APIMethodURL
Send me message with default templatePOSThttps://kapi.kakao.com/v2/api/talk/memo/default/send
Send me message with custom templatePOSThttps://kapi.kakao.com/v2/api/talk/memo/send
Send me scrape messagePOSThttps://kapi.kakao.com/v2/api/talk/memo/scrap/send
Send message with default templatePOSThttps://kapi.kakao.com/v1/api/talk/friends/message/default/send
Send message with custom templatePOSThttps://kapi.kakao.com/v1/api/talk/friends/message/send
Send scrap messagePOSThttps://kapi.kakao.com/v1/api/talk/friends/message/scrap/send

Kakao Talk Channel

APIMethodURL
Check Kakao Talk Channel relationshipGEThttps://kapi.kakao.com/v2/api/talk/channels
Check multiple users' Kakao Talk Channel relationshipGEThttps://kapi.kakao.com/v2/api/talk/channels/multi
Customer management: Register customer filePOSThttps://kapi.kakao.com/v1/talkchannel/create/target_user_file
Customer management: View customer fileGEThttps://kapi.kakao.com/v1/talkchannel/target_user_file
Customer management: Add userPOSThttps://kapi.kakao.com/v1/talkchannel/update/target_users
Customer management: Delete userPOSThttps://kapi.kakao.com/v1/talkchannel/delete/target_users

Kakao Moment

Kakao Keyword Ad

Push Notification

APIMethodURL
Register push tokenPOSThttps://kapi.kakao.com/v2/push/register
Retrieve push tokenGET/POSThttps://kapi.kakao.com/v2/push/tokens
Delete push tokenPOSThttps://kapi.kakao.com/v2/push/deregister
Send push notificationsPOSThttps://kapi.kakao.com/v2/push/send

Talk Calendar

APIMethodURL
Retrieve list of calendarsGEThttps://kapi.kakao.com/v2/api/calendar/calendars
Create sub-calendarPOSThttps://kapi.kakao.com/v2/api/calendar/create/calendar
Edit sub-calendarPOSThttps://kapi.kakao.com/v2/api/calendar/update/calendar
Delete sub-calendarDELETEhttps://kapi.kakao.com/v2/api/calendar/delete/calendar
Create eventPOSThttps://kapi.kakao.com/v2/api/calendar/create/event
Retrieve list of eventsGEThttps://kapi.kakao.com/v2/api/calendar/events
Retrieve details of eventGEThttps://kapi.kakao.com/v2/api/calendar/event
Edit event for hostPOSThttps://kapi.kakao.com/v2/api/calendar/update/event/host
Delete eventDELETEhttps://kapi.kakao.com/v2/api/calendar/delete/event
Create public eventPOSThttps://kapi.kakao.com/v2/api/calendar/public/create/event
Retrieve list of public eventsGEThttps://kapi.kakao.com/v2/api/calendar/public/events
Retrieve details of public eventGEThttps://kapi.kakao.com/v2/api/calendar/public/event
Edit public eventPOSThttps://kapi.kakao.com/v2/api/calendar/public/update/event
Delete public eventDELETEhttps://kapi.kakao.com/v2/api/calendar/public/delete/event
Add public event to user calendarPOSThttps://kapi.kakao.com/v2/api/calendar/public/follow
Retrieve list of subscribable calendarsGEThttps://kapi.kakao.com/v2/api/calendar/subscribable/calendars
SubscribePOSThttps://kapi.kakao.com/v2/api/calendar/subscribe
UnsubscribeDELETEhttps://kapi.kakao.com/v2/api/calendar/unsubscribe
Edit guest eventPOSThttps://kapi.kakao.com/v2/api/calendar/update/event/guest
Retrieve holidays and celebrationsGEThttps://kapi.kakao.com/v2/api/calendar/holidays
Create taskPOSThttps://kapi.kakao.com/v1/api/calendar/create/task
Retrieve taskGEThttps://kapi.kakao.com/v1/api/calendar/tasks
Check challenge recordGEThttps://kapi.kakao.com/v1/api/calendar/task/records
Edit taskPOSThttps://kapi.kakao.com/v1/api/calendar/update/task
Set completion statusPOSThttps://kapi.kakao.com/v1/api/calendar/complete/task
Delete taskDELETEhttps://kapi.kakao.com/v1/api/calendar/delete/task

Local

APIMethodURL
Convert address to coordinatesGEThttps://dapi.kakao.com/v2/local/search/address.${FORMAT}
Convert coordinates to region codeGEThttps://dapi.kakao.com/v2/local/geo/coord2regioncode.${FORMAT}
Convert coordinates to addressGEThttps://dapi.kakao.com/v2/local/geo/coord2address.${FORMAT}
Transform coordinatesGEThttps://dapi.kakao.com/v2/local/geo/transcoord.${FORMAT}
Search place by keywordGEThttps://dapi.kakao.com/v2/local/search/keyword.${FORMAT}
Search place by categoryGEThttps://dapi.kakao.com/v2/local/search/category.${FORMAT}

Daum Search

APIMethodURL
Search web documentGEThttps://dapi.kakao.com/v2/search/web
Serch videoGEThttps://dapi.kakao.com/v2/search/vclip
Search imageGEThttps://dapi.kakao.com/v2/search/image
Search blogGEThttps://dapi.kakao.com/v2/search/blog
Search bookGEThttps://dapi.kakao.com/v3/search/book
Search cafeGEThttps://dapi.kakao.com/v2/search/cafe

Utility API

APIMethodURL
Retrieve Kakao IP listGEThttps://kapi.kakao.com/v1/system/ips
Check current statusGEThttps://api-status.kakao.com/api/health/current
Check historyGEThttps://api-status.kakao.com/api/health/history

Was this helpful?