사이드 메뉴
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 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
Reference
This document guides the specification of the REST API provided by the Kakao Developers.
The request format for Kakao APIs consists of the elements below.
| Element | Description |
|---|---|
| Method | An HTTP request method is required to be specified for a Kakao API request. (Example: GET, POST, PUT, DELETE) |
| Host | The domain that receives requests for Kakao APIs. (Example: kapi.kakao.com) |
| URL | The 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) |
| Header | The 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 variable | The 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}) |
| Parameter | The 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.
Set a list of Allowed IP address, or use a client secret code to enhance security.
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
codeas an integer andmsgas 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 UnauthorizedWWW-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 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.
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 code | Status | Description |
|---|---|---|
| 200 OK | Success | Indicates 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 | Fail | General error Indicates the state in which the server has detected a client error related to required parameters and cannot process the request. |
| 401 Unauthorized | Failure | Authentication 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.
|
| 403 Forbidden | Fail | Permission Error Indicates that the server has received the client's request but rejected it because the client has no permission. |
| 429 Too Many Request | Fail | Quota 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 | Fail | System 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 | Fail | System 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 | Fail | Undergoing maintenance Indicates that the server is not ready to process the request. |
See Error code.
Here are the lists of URLs, hosts, and methods required when making a request to use each function that the REST API supports.
| API | Method | URL |
|---|---|---|
| Get authorization code | GET | https://kauth.kakao.com/oauth/authorize |
| Get token | POST | https://kauth.kakao.com/oauth/token |
| Logout | POST | https://kapi.kakao.com/v1/user/logout |
| Logout of service and Kakao Account | GET | https://kauth.kakao.com/oauth/logout |
| Unlink | POST | https://kapi.kakao.com/v1/user/unlink |
| Retrieve access token information | GET | https://kapi.kakao.com/v1/user/access_token_info |
| Refresh token | POST | https://kauth.kakao.com/oauth/token |
| Retrieve user information | GET/POST | https://kapi.kakao.com/v2/user/me |
| Retrieve multiple user information | GET | https://kapi.kakao.com/v2/app/users |
| Retrieve user list | GET | https://kapi.kakao.com/v1/user/ids |
| Store user property | POST | https://kapi.kakao.com/v1/user/update_profile |
| Retrieve shipping address | GET | https://kapi.kakao.com/v1/user/shipping_address |
| Retrieve consent details | GET | https://kapi.kakao.com/v2/user/scopes |
| Revoke consent | POST | https://kapi.kakao.com/v2/user/revoke/scopes |
| Retrieve consent details for service terms | GET | https://kapi.kakao.com/v2/user/service_terms |
| Revoke consent for service terms | POST | https://kapi.kakao.com/v2/user/revoke/service_terms |
| Advanced: Set consent to service terms | POST | https://kapi.kakao.com/v2/user/upgrade/service_terms |
| OIDC: Get Discovery document | GET | https://kauth.kakao.com/.well-known/openid-configuration |
| OIDC: Get public key | GET | https://kauth.kakao.com/.well-known/jwks.json |
| OIDC: Get ID token information | POST | https://kauth.kakao.com/oauth/tokeninfo |
| OIDC: Get user information | GET | https://kapi.kakao.com/v1/oidc/userinfo |
| Advanced: Manual signup | POST | https://kapi.kakao.com/v1/user/signup |
| API | Method | URL |
|---|---|---|
| Retrieve Kakao Talk profile | GET | https://kapi.kakao.com/v1/api/talk/profile |
| Retrieve list of friends | GET | https://kapi.kakao.com/v1/api/talk/friends |
| Retrieve Kakao Talk profiles by user list | GET/POST | https://kapi.kakao.com/v2/api/talk/profiles |
| API | Method | URL |
|---|---|---|
| Send me message with default template | POST | https://kapi.kakao.com/v2/api/talk/memo/default/send |
| Send me message with custom template | POST | https://kapi.kakao.com/v2/api/talk/memo/send |
| Send me scrape message | POST | https://kapi.kakao.com/v2/api/talk/memo/scrap/send |
| Send message with default template | POST | https://kapi.kakao.com/v1/api/talk/friends/message/default/send |
| Send message with custom template | POST | https://kapi.kakao.com/v1/api/talk/friends/message/send |
| Send scrap message | POST | https://kapi.kakao.com/v1/api/talk/friends/message/scrap/send |
| API | Method | URL |
|---|---|---|
| Check Kakao Talk Channel relationship | GET | https://kapi.kakao.com/v2/api/talk/channels |
| Check multiple users' Kakao Talk Channel relationship | GET | https://kapi.kakao.com/v2/api/talk/channels/multi |
| Customer management: Register customer file | POST | https://kapi.kakao.com/v1/talkchannel/create/target_user_file |
| Customer management: View customer file | GET | https://kapi.kakao.com/v1/talkchannel/target_user_file |
| Customer management: Add user | POST | https://kapi.kakao.com/v1/talkchannel/update/target_users |
| Customer management: Delete user | POST | https://kapi.kakao.com/v1/talkchannel/delete/target_users |
- Refer to Kakao Moment API reference.
- Refer to Kakao Keyword Ad API reference. This document is available in Korean only.
| API | Method | URL |
|---|---|---|
| Register push token | POST | https://kapi.kakao.com/v2/push/register |
| Retrieve push token | GET/POST | https://kapi.kakao.com/v2/push/tokens |
| Delete push token | POST | https://kapi.kakao.com/v2/push/deregister |
| Send push notifications | POST | https://kapi.kakao.com/v2/push/send |
| API | Method | URL |
|---|---|---|
| Retrieve list of calendars | GET | https://kapi.kakao.com/v2/api/calendar/calendars |
| Create sub-calendar | POST | https://kapi.kakao.com/v2/api/calendar/create/calendar |
| Edit sub-calendar | POST | https://kapi.kakao.com/v2/api/calendar/update/calendar |
| Delete sub-calendar | DELETE | https://kapi.kakao.com/v2/api/calendar/delete/calendar |
| Create event | POST | https://kapi.kakao.com/v2/api/calendar/create/event |
| Retrieve list of events | GET | https://kapi.kakao.com/v2/api/calendar/events |
| Retrieve details of event | GET | https://kapi.kakao.com/v2/api/calendar/event |
| Edit event for host | POST | https://kapi.kakao.com/v2/api/calendar/update/event/host |
| Delete event | DELETE | https://kapi.kakao.com/v2/api/calendar/delete/event |
| Create public event | POST | https://kapi.kakao.com/v2/api/calendar/public/create/event |
| Retrieve list of public events | GET | https://kapi.kakao.com/v2/api/calendar/public/events |
| Retrieve details of public event | GET | https://kapi.kakao.com/v2/api/calendar/public/event |
| Edit public event | POST | https://kapi.kakao.com/v2/api/calendar/public/update/event |
| Delete public event | DELETE | https://kapi.kakao.com/v2/api/calendar/public/delete/event |
| Add public event to user calendar | POST | https://kapi.kakao.com/v2/api/calendar/public/follow |
| Retrieve list of subscribable calendars | GET | https://kapi.kakao.com/v2/api/calendar/subscribable/calendars |
| Subscribe | POST | https://kapi.kakao.com/v2/api/calendar/subscribe |
| Unsubscribe | DELETE | https://kapi.kakao.com/v2/api/calendar/unsubscribe |
| Edit guest event | POST | https://kapi.kakao.com/v2/api/calendar/update/event/guest |
| Retrieve holidays and celebrations | GET | https://kapi.kakao.com/v2/api/calendar/holidays |
| Create task | POST | https://kapi.kakao.com/v1/api/calendar/create/task |
| Retrieve task | GET | https://kapi.kakao.com/v1/api/calendar/tasks |
| Check challenge record | GET | https://kapi.kakao.com/v1/api/calendar/task/records |
| Edit task | POST | https://kapi.kakao.com/v1/api/calendar/update/task |
| Set completion status | POST | https://kapi.kakao.com/v1/api/calendar/complete/task |
| Delete task | DELETE | https://kapi.kakao.com/v1/api/calendar/delete/task |
| API | Method | URL |
|---|---|---|
| Convert address to coordinates | GET | https://dapi.kakao.com/v2/local/search/address.${FORMAT} |
| Convert coordinates to region code | GET | https://dapi.kakao.com/v2/local/geo/coord2regioncode.${FORMAT} |
| Convert coordinates to address | GET | https://dapi.kakao.com/v2/local/geo/coord2address.${FORMAT} |
| Transform coordinates | GET | https://dapi.kakao.com/v2/local/geo/transcoord.${FORMAT} |
| Search place by keyword | GET | https://dapi.kakao.com/v2/local/search/keyword.${FORMAT} |
| Search place by category | GET | https://dapi.kakao.com/v2/local/search/category.${FORMAT} |
| API | Method | URL |
|---|---|---|
| Search web document | GET | https://dapi.kakao.com/v2/search/web |
| Serch video | GET | https://dapi.kakao.com/v2/search/vclip |
| Search image | GET | https://dapi.kakao.com/v2/search/image |
| Search blog | GET | https://dapi.kakao.com/v2/search/blog |
| Search book | GET | https://dapi.kakao.com/v3/search/book |
| Search cafe | GET | https://dapi.kakao.com/v2/search/cafe |
| API | Method | URL |
|---|---|---|
| Retrieve Kakao IP list | GET | https://kapi.kakao.com/v1/system/ips |
| Check current status | GET | https://api-status.kakao.com/api/health/current |
| Check history | GET | https://api-status.kakao.com/api/health/history |