Skip to main content
RapidDev - Software Development Agency
flutterflow-integrationsCustom Action (Dart)

KakaoTalk API

Connect FlutterFlow to KakaoTalk using a Dart Custom Action wrapping the `kakao_flutter_sdk_user` package for Kakao Login, combined with a FlutterFlow API Call group for Kakao REST API messaging. Kakao Login requires registering your Android key hash and iOS bundle ID in the Kakao Developers console — FlutterFlow has no built-in Kakao social auth. The Admin Key for server operations must never ship in the app; proxy those calls through a Firebase Cloud Function.

What you'll learn

  • How to register a KakaoTalk app in the Kakao Developers console with Android key hash and iOS bundle ID
  • How to add the `kakao_flutter_sdk_user` dependency through FlutterFlow's Custom Code panel
  • How to write a Dart Custom Action for Kakao Login that returns a user access token
  • How to configure a FlutterFlow API Call group for the Kakao REST API with Bearer token authentication
  • How to add Kakao 'send message to me' and sharing calls as API Calls bound to FlutterFlow widgets
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Advanced18 min read60 minutesCommunicationLast updated July 2026RapidDev Engineering Team
TL;DR

Connect FlutterFlow to KakaoTalk using a Dart Custom Action wrapping the `kakao_flutter_sdk_user` package for Kakao Login, combined with a FlutterFlow API Call group for Kakao REST API messaging. Kakao Login requires registering your Android key hash and iOS bundle ID in the Kakao Developers console — FlutterFlow has no built-in Kakao social auth. The Admin Key for server operations must never ship in the app; proxy those calls through a Firebase Cloud Function.

Quick facts about this guide
FactValue
ToolKakaoTalk API
CategoryCommunication
MethodCustom Action (Dart)
DifficultyAdvanced
Time required60 minutes
Last updatedJuly 2026

Adding Kakao Login and KakaoTalk Messaging to a FlutterFlow App

KakaoTalk is not just a messaging app — it's Korea's digital identity layer. With over 47 million monthly active users in South Korea, Kakao Login is as ubiquitous there as 'Sign in with Google' or 'Sign in with Apple' elsewhere. For FlutterFlow apps targeting the Korean market, adding Kakao Login is often the top priority, and it unlocks a chain of capabilities: once a user authenticates, your app can use the Kakao REST API to send messages, access their Kakao profile, retrieve their friend list (with user permission), and initiate KakaoTalk sharing.

The critical thing to understand about Kakao in FlutterFlow is that the SDK-based login flow is not available through FlutterFlow's built-in social auth or through the standard API Calls panel. Kakao Login requires the `kakao_flutter_sdk` native SDK running on the device, which coordinates with the KakaoTalk app (if installed) or opens a web login view. This means a Dart Custom Action is mandatory for the auth step. The good news is that once you have a user access token in App State, all subsequent Kakao REST API calls are straightforward API Calls with a `Authorization: Bearer [token]` header.

On the security side, Kakao has two credential types: the **Native App Key** (used in the SDK, safe to embed in the client app) and the **REST Admin Key** (full server-side access, must never ship in the Flutter binary). Most user-facing operations — login, 'send to me', profile read, sharing — use the user access token obtained after OAuth login. Server-side operations like looking up users by phone number or sending Alimtalk business notifications require the Admin Key and must go through a Firebase Cloud Function. The Kakao Developers console is at developers.kakao.com and the documentation is available in Korean and English.

Integration method

Custom Action (Dart)

Kakao Login requires the official `kakao_flutter_sdk_user` pub.dev package because FlutterFlow has no built-in Kakao social auth. A Dart Custom Action wraps the SDK login flow, returns the user access token to FlutterFlow App State, and from that point onwards FlutterFlow's standard API Calls panel can call the Kakao REST API (`kapi.kakao.com`) with a Bearer token. The Kakao Admin Key — used for server-side operations like bulk messaging — must never appear in FlutterFlow; those calls go through a Firebase Cloud Function proxy. The login custom action requires platform-specific setup in the Kakao Developers console (Android key hash, iOS bundle ID) and does not run in FlutterFlow web preview.

Prerequisites

  • A Kakao developer account at developers.kakao.com (free registration)
  • A Kakao application created in the Developers console with Android and iOS platforms added
  • Your app's Android SHA-1 key hash (extracted from your keystore or debug keystore) and iOS bundle identifier
  • A FlutterFlow project on a paid plan (Custom Actions require a paid plan)
  • Access to a physical Android or iOS device for testing (Kakao Login does not run in FlutterFlow web preview)

Step-by-step guide

1

Register your app in the Kakao Developers console

Every KakaoTalk integration starts at developers.kakao.com — this is where Kakao validates your app before allowing any API access. Sign in with your Kakao account and click 'My Application' in the top navigation, then 'Create Application'. Enter your app name, company name (can be your own), and upload an icon (required). Click Save. You'll land on the app's Overview page. Note the four keys shown: **Native App Key** (used in the Flutter SDK — safe to include in the app), **REST API Key** (used for server-side REST calls without user auth), **JavaScript Key** (for web), and **Admin Key** (full power — server-only, never in the app). Copy the Native App Key and REST API Key for later. Now add platform credentials. Click 'Platform' in the left sidebar. Under Android, click 'Register'. Enter your app's package name (the same one in your FlutterFlow project settings under App Details → Package Name, typically `com.yourcompany.yourapp`). You also need the **key hash** — this is an SHA-1 fingerprint of your signing keystore encoded in base64. For the debug keystore (used during FlutterFlow test builds), run this once in Terminal: `keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64` and paste the result. Add both your debug hash and release hash. Under iOS, click 'Register', enter your iOS bundle identifier (from FlutterFlow → App Details → iOS Bundle ID), and save. Without these exact values registered, Kakao Login rejects every attempt with a `KOE101` or `KOE102` error. Finally, in the left sidebar go to 'Kakao Login' under the Products section and toggle 'Activate Kakao Login' to On. Accept the consent terms. Check the 'Required Consent Items' — at minimum enable profile nickname and profile image so you can display the user's name after login.

Pro tip: The Android key hash is the most common failure point — generate it from your actual keystore, not from the package name. The debug hash and release hash are different; add both in the Kakao console.

Expected result: Your Kakao application shows both Android and iOS platforms registered with their respective key hashes and bundle IDs. Kakao Login is activated. You have the Native App Key copied.

2

Add the Kakao SDK dependency in FlutterFlow Custom Code

In the FlutterFlow editor, click the Custom Code icon in the left navigation (angle-brackets `</>`). At the top of the Custom Code panel, click the Dependencies button. Click '+ Add Dependency' and search for `kakao_flutter_sdk_user`. This is the lightweight user/auth package from the official Kakao Flutter SDK — choose it over `kakao_flutter_sdk` (the full SDK) to keep your app binary smaller if you only need login and user profile. Enter the latest stable version from pub.dev/packages/kakao_flutter_sdk_user. As of mid-2026 it is in the 1.9.x range — always check pub.dev for the current version. Click Add. Wait for FlutterFlow to resolve the dependency (green checkmark). If you also need the Kakao Link (sharing) feature, add `kakao_flutter_sdk_share` as a second dependency. For Kakao Talk channel messages, add `kakao_flutter_sdk_talk`. Adding all three is fine; they share core SDK code. Next, you need to add the Kakao Native App Key to your app's platform configuration. In FlutterFlow, go to Settings & Integrations → App Settings. Under iOS, find the 'Custom Info.plist Entries' field and add: ``` <key>KAKAO_APP_KEY</key> <string>YOUR_NATIVE_APP_KEY</string> <key>LSApplicationQueriesSchemes</key> <array><string>kakaokompassauth</string><string>storykompassauth</string><string>kakaolink</string><string>kakaotalk</string></array> ``` For Android, FlutterFlow allows custom AndroidManifest entries under Settings & Integrations → App Settings → Android — add the `KAKAO_APP_KEY` meta-data element and the KakaoTalk scheme in a `<queries>` block. This platform configuration is required for the SDK to function — without it, the login flow fails before the Dart code even runs.

typescript
1<!-- Android AndroidManifest.xml additions (enter in FlutterFlow Android manifest settings) -->
2<meta-data
3 android:name="com.kakao.sdk.AppKey"
4 android:value="YOUR_NATIVE_APP_KEY" />
5
6<queries>
7 <package android:name="com.kakao.talk" />
8</queries>

Pro tip: Use the Native App Key (not the REST API Key or Admin Key) in the SDK configuration — the Native App Key is designed to be embedded in client apps.

Expected result: The `kakao_flutter_sdk_user` package appears in FlutterFlow's dependency list with a green checkmark. The platform configuration entries are saved in your iOS and Android app settings.

3

Write the Kakao Login Custom Action

In the Custom Code panel, click + Add → Action. Name it `kakaoLogin`. Set the Return Type to JSON — you'll return a structured object with the access token and basic user profile. Add no required parameters (credentials come from the Kakao console via the SDK, not from FlutterFlow parameters). The Kakao Flutter SDK offers two login methods: `UserApi.instance.loginWithKakaoTalk()` (opens the KakaoTalk app for auth — faster, preferred on devices with KakaoTalk installed) and `UserApi.instance.loginWithKakaoAccount()` (opens a WebView for browser-based login — used as fallback). The standard pattern is to try KakaoTalk first and fall back to the account web login. After successful login, call `UserApi.instance.me()` to retrieve the user's profile (Kakao ID, nickname, profile image URL). Return these along with the access token as a JSON map. Store the access token in a FlutterFlow App State String variable named `kakaoAccessToken`. This is the credential you'll pass to the Kakao REST API Calls as a Bearer token header. The access token is a short-lived credential (typically valid for hours) — refresh handling is managed by the Kakao SDK automatically on subsequent SDK calls. Important: this custom action will not run in FlutterFlow's web preview (Run mode). You must test on a physical Android or iOS device. When you click Run Mode in the FlutterFlow editor, the Kakao Login button will appear but nothing will happen — that's expected behavior for native SDK custom actions.

custom_action.dart
1// FlutterFlow Custom Action: kakaoLogin
2// Return type: JSON
3// No parameters needed — SDK uses platform config
4
5import 'package:kakao_flutter_sdk_user/kakao_flutter_sdk_user.dart';
6
7Future<dynamic> kakaoLogin() async {
8 // Initialize the SDK with your Native App Key
9 // (best done in main.dart via Custom Function, or here if not already done)
10 KakaoSdk.init(nativeAppKey: 'YOUR_NATIVE_APP_KEY');
11
12 try {
13 OAuthToken token;
14
15 // Try KakaoTalk app login first (fastest UX)
16 if (await isKakaoTalkInstalled()) {
17 token = await UserApi.instance.loginWithKakaoTalk();
18 } else {
19 // Fall back to web (Kakao Account) login
20 token = await UserApi.instance.loginWithKakaoAccount();
21 }
22
23 // Fetch user profile after login
24 final user = await UserApi.instance.me();
25 final profile = user.kakaoAccount?.profile;
26
27 return {
28 'success': true,
29 'accessToken': token.accessToken,
30 'userId': user.id.toString(),
31 'nickname': profile?.nickname ?? '',
32 'profileImageUrl': profile?.profileImageUrl ?? '',
33 'thumbnailImageUrl': profile?.thumbnailImageUrl ?? '',
34 };
35 } catch (e) {
36 return {
37 'success': false,
38 'error': e.toString(),
39 'accessToken': '',
40 'userId': '',
41 'nickname': '',
42 'profileImageUrl': '',
43 'thumbnailImageUrl': '',
44 };
45 }
46}

Pro tip: Call `KakaoSdk.init(nativeAppKey: '...')` once at app startup via a Custom Function (not on every login button tap). Add it to FlutterFlow's Custom Code as a Function and call it in the On App Start action flow.

Expected result: The `kakaoLogin` custom action compiles without errors in FlutterFlow's Custom Code panel. On a real device, tapping the Login with Kakao button launches the KakaoTalk app (or a web view) and returns a JSON object with a valid access token and user profile after the user approves.

4

Set up the Kakao REST API Call group in FlutterFlow

With the user access token stored in App State after login, you can now make Kakao REST API calls directly from FlutterFlow's API Calls panel — no more custom actions needed for most features. In the FlutterFlow editor, click API Calls in the left nav. Click + Add → Create API Group. Name it `KakaoApi`. Set the Base URL to `https://kapi.kakao.com`. In the Headers section of the API group, add a shared header: `Authorization` with value `Bearer [kakaoToken]`. Click the Variables tab and create a group-level variable named `kakaoToken` (String type). This shared header means every API Call you add to this group will automatically include the Bearer token — you only need to bind `kakaoToken` to the App State `kakaoAccessToken` variable once per action flow. Now add the first API Call inside the group. Click + Add → Create API Call. Name it `GetProfile`. Set Method to GET and Path to `/v2/user/me`. In the Response & Test tab, click 'Test API Call' — you'll need to manually enter a real access token from a previous login test to make this work. After a successful response, click 'Generate JSON Paths' to create shortcut paths: `$.id` (Kakao user ID), `$.kakao_account.profile.nickname`, and `$.kakao_account.profile.profile_image_url`. Add a second API Call named `SendMeMessage`. Set Method to POST and Path to `/v1/api/talk/memo/default/send`. Set Body Type to form fields (URL-encoded). Add a form field: `template_object` with value `[messageTemplate]`. Add a String variable `messageTemplate` to the Variables tab. The Kakao 'send to me' API accepts a JSON template object serialized as a string in the form body — a quirk of the Kakao API design. A minimal template looks like: `{"object_type":"text","text":"[your message]","link":{"web_url":"https://yourapp.com"}}`. Bind this API group in Action Flows: after the `kakaoLogin` custom action succeeds, store the `accessToken` JSON path result to App State `kakaoAccessToken`, then you can call `GetProfile` with `kakaoToken` bound to `kakaoAccessToken`.

typescript
1// Kakao API Call config reference
2{
3 "Group": "KakaoApi",
4 "Base URL": "https://kapi.kakao.com",
5 "Shared Headers": {
6 "Authorization": "Bearer [kakaoToken]"
7 },
8 "Group Variables": [
9 { "name": "kakaoToken", "type": "String" }
10 ],
11 "Calls": [
12 {
13 "name": "GetProfile",
14 "method": "GET",
15 "path": "/v2/user/me",
16 "json_paths": [
17 { "name": "userId", "path": "$.id" },
18 { "name": "nickname", "path": "$.kakao_account.profile.nickname" },
19 { "name": "imageUrl", "path": "$.kakao_account.profile.profile_image_url" }
20 ]
21 },
22 {
23 "name": "SendMeMessage",
24 "method": "POST",
25 "path": "/v1/api/talk/memo/default/send",
26 "body_type": "Form URL Encoded",
27 "body_fields": {
28 "template_object": "[messageTemplate]"
29 },
30 "variables": [
31 { "name": "messageTemplate", "type": "String" }
32 ]
33 }
34 ]
35}

Pro tip: The Kakao 'send to me' API endpoint `/v1/api/talk/memo/default/send` requires a form URL-encoded body, not JSON — set Body Type to 'Form URL Encoded' in FlutterFlow's API Call settings, not 'JSON'.

Expected result: The KakaoApi group is visible in FlutterFlow's API Calls panel with the shared Authorization header, the GetProfile GET call with JSON paths, and the SendMeMessage POST call with form-encoded body. Testing GetProfile with a real access token returns a 200 with the user's Kakao ID and profile nickname.

5

Build the login UI and test on a real device

Create a Login screen in FlutterFlow with a Column containing a logo/title, a 'Login with KakaoTalk' Button (use Kakao's brand yellow #FEE500 with black text — Kakao branding guidelines require this), and optionally a skip or email login option. Select the Kakao Login button, open the Actions panel, and click + Add Action. Under Custom Actions, select `kakaoLogin`. Chain actions after `kakaoLogin` completes. First, add a Conditional action checking the JSON response path `$.success` (Boolean). If true: use a Set App State action to store `$.accessToken` into `kakaoAccessToken`, `$.nickname` into `kakaoNickname`, and `$.profileImageUrl` into `kakaoProfileImage`. Then navigate to your Home screen. If false: show a SnackBar with `$.error` from the response to help debug. On the Home screen, bind widgets to the App State: show the user's Kakao nickname in a Text widget and their profile image in a NetworkImage widget using the `kakaoProfileImage` URL. Add a 'Send Me a Test Message' button that calls the `SendMeMessage` API Call with a `template_object` value like `{"object_type":"text","text":"Hello from my FlutterFlow app!","link":{"web_url":"https://yourapp.com"}}` — a JSON string serialized as a form field value. To test: use FlutterFlow's Test Mode to install the app on a physical Android or iOS device. The device must have the KakaoTalk app installed for the SDK login to open it. If KakaoTalk isn't installed, the SDK falls back to the web-based Kakao Account login view. After login, verify the access token is populated in App State by checking the FlutterFlow Debug Panel. Send the test message and check your KakaoTalk 'My Inbox' (나와의 채팅) — it should appear within seconds.

Pro tip: If you get a `KOE101` error ('App is not registered') on login, go back to the Kakao Developers console and confirm the Android key hash and iOS bundle ID match exactly what's in your FlutterFlow project settings. This is the most common error in first-time Kakao integrations.

Expected result: On a physical device, tapping 'Login with KakaoTalk' opens the KakaoTalk app for consent or a web login view, completes auth, and navigates to the Home screen showing the user's Kakao nickname and profile image. The test KakaoTalk message appears in 'My Inbox' within the KakaoTalk app.

Common use cases

Korean market app with Kakao social login and profile display

A FlutterFlow lifestyle app targeting Korean users lets them sign in with their KakaoTalk account in one tap. After the Kakao Login custom action completes, the app reads the user's Kakao profile (nickname, profile image) via the Kakao REST API and displays it on a profile screen, then stores the user ID in Firestore alongside an auth record.

FlutterFlow Prompt

Add a 'Login with Kakao' button to my FlutterFlow app's login screen that calls the kakaoLogin custom action, stores the access token in App State, then calls the Kakao profile API to get the user's nickname and profile image URL for the home screen.

Copy this prompt to try it in FlutterFlow

E-commerce app that sends KakaoTalk order confirmations to the buyer

After a purchase, a FlutterFlow shopping app uses the Kakao 'send message to me' API to push an order confirmation message directly to the buyer's KakaoTalk app. The message includes the order ID, total, and a deep-link back to the order detail screen in the app.

FlutterFlow Prompt

When a user completes checkout in my FlutterFlow shop, call the Kakao sendMeMessage API with an order summary template and a button linking back to the order screen — the message should appear in the user's KakaoTalk 'My Inbox'.

Copy this prompt to try it in FlutterFlow

Community app with KakaoTalk content sharing

A FlutterFlow community app lets users share articles, products, or events directly to their KakaoTalk chats using the Kakao Link (sharing) API. Tapping 'Share to KakaoTalk' from any content page opens the Kakao share sheet with a pre-filled template showing the content title, image, and a deep link.

FlutterFlow Prompt

Add a 'Share via KakaoTalk' button to each article page in my FlutterFlow app that calls the Kakao Link API with the article title, thumbnail URL, and a custom scheme deep link back to the article.

Copy this prompt to try it in FlutterFlow

Troubleshooting

`KOE101`: ClientFailed or 'App is not registered' error on Kakao Login

Cause: The Android SHA-1 key hash or iOS bundle identifier registered in the Kakao Developers console doesn't match the actual app package name and signing key. This is the most common first-time setup error.

Solution: In the Kakao Developers console, go to your app → Platform → Android and verify the key hash. Regenerate it from your exact keystore using: `keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64`. For iOS, verify the bundle ID in FlutterFlow (App Details → iOS Bundle ID) exactly matches the one in the Kakao console (including case).

Kakao Login custom action does nothing in FlutterFlow editor — button tap has no effect

Cause: Custom Actions using native SDKs do not run in FlutterFlow's browser-based Run Mode (web preview). The action is effectively skipped when running in the browser.

Solution: Install the app on a physical Android or iOS device using FlutterFlow's Test Mode APK or TestFlight build. Do not expect to see Kakao Login working in the FlutterFlow editor's Run Mode tab — this is expected platform behavior for all native SDK custom actions.

Kakao REST API returns 401 Unauthorized on `GetProfile` or `SendMeMessage`

Cause: The access token in App State has expired (Kakao access tokens are short-lived) or was not stored correctly after the login action completed.

Solution: Call the `kakaoLogin` custom action again to refresh the session — the Kakao SDK handles token refresh internally when you call `loginWithKakaoTalk()` or `loginWithKakaoAccount()` on a previously logged-in session. Also verify the App State variable `kakaoAccessToken` is populated after login by checking the FlutterFlow Debug Panel in Test Mode. Ensure the `Authorization` header in your API group uses `Bearer [kakaoToken]` with the exact variable name bound in the action.

SendMeMessage API returns `{ "code": -2 }` — no result or invalid scope error

Cause: The user did not consent to the 'KakaoTalk message' permission during login, or the app hasn't enabled the 'Talk Message' product in the Kakao Developers console.

Solution: In the Kakao Developers console, go to your app → Product Settings → Talk Message and activate it. Then re-run the Kakao Login flow — the consent screen should now include a permission for sending messages. If the user previously declined, they need to revoke the app's consent in their Kakao Account settings and re-authorize.

Best practices

  • Never put the Kakao Admin Key in FlutterFlow — it grants full account access and must only be used in Firebase Cloud Functions or a Supabase Edge Function for server-side operations like looking up users by phone number.
  • Call `KakaoSdk.init(nativeAppKey: '...')` once at app startup (via an On App Start Custom Function) rather than inside the login action — re-initializing on every login call can cause unexpected behavior with the SDK's internal state.
  • Always handle the KakaoTalk-not-installed case by falling back to `loginWithKakaoAccount()` — some users (especially on iOS) don't have KakaoTalk installed and would see a silent failure without the fallback.
  • Store the Kakao access token in Secure App State (backed by flutter_secure_storage) rather than a regular App State variable — access tokens are short-lived credentials that shouldn't persist in plain app memory.
  • Enable only the permission scopes your app actually needs in the Kakao Developers console — Kakao users see a consent screen listing exactly which permissions the app is requesting, and a long list reduces login conversion.
  • Test Kakao Login on both an Android device with KakaoTalk installed and an iOS device without KakaoTalk to verify both paths (SDK app login and web fallback) work correctly before releasing.
  • For business messaging features like Alimtalk or FriendTalk (paid bulk notifications), keep all Admin Key calls in a Firebase Cloud Function — these are server-side operations that FlutterFlow's client-side API Calls panel cannot safely handle.

Alternatives

Frequently asked questions

Does FlutterFlow have built-in Kakao Login like it does for Google or Apple?

No — FlutterFlow's built-in social auth supports Google, Apple, Facebook, GitHub, and Twitter but not Kakao. Kakao Login requires a Dart Custom Action wrapping the `kakao_flutter_sdk_user` package along with platform configuration in the Kakao Developers console for both Android key hashes and iOS bundle IDs. There is no shortcut.

Can I send KakaoTalk messages to any user, or only to the logged-in user?

The 'send message to me' endpoint (`/v1/api/talk/memo/default/send`) only sends to the currently logged-in user's 'My Inbox' — it's useful for personal notifications or receipts. To send messages to a user's Kakao friends, you need the Friends API, which requires additional permissions and friend list consent from both the sender and recipient. Bulk business notifications (Alimtalk) are a separate paid service requiring a Business channel and are sent server-side via the Admin Key.

Will Kakao Login work on a web build of my FlutterFlow app?

Partially — the `kakao_flutter_sdk_user` package has web support, but the 'login with KakaoTalk app' path only works on mobile where the KakaoTalk app is installed. On web, the SDK always falls back to browser-based Kakao Account login. Also note that Flutter web builds in FlutterFlow may have different behavior with the Custom Code system — test thoroughly on web if web support is a requirement.

What is the difference between the Native App Key, REST API Key, and Admin Key?

The **Native App Key** is embedded in the client app (Flutter SDK config) and identifies your application to Kakao — it's safe to include in the binary. The **REST API Key** is used for server-side REST calls that don't require a user access token (like Kakao Social data lookups) — keep it in your Cloud Function. The **Admin Key** has full account access including user management and bulk messaging — never put this anywhere near the client app or FlutterFlow.

How do I log out of Kakao and clear the session in FlutterFlow?

Add a second Custom Action named `kakaoLogout` that calls `UserApi.instance.logout()` (invalidates the token on Kakao's server) followed by clearing your App State `kakaoAccessToken` to an empty string. Wire this action to a logout button's Action Flow. Optionally call `UserApi.instance.unlink()` instead if you want to fully disconnect the app from the user's Kakao account (not just log out).

Do I need to pay to use the KakaoTalk API?

Kakao Login and the basic user profile API are free with no message volume limits for standard use. The 'send to me' messaging feature is also free. Alimtalk (business notification messaging to arbitrary users) and other bulk messaging features are paid services that require a separate Kakao Business account and are billed per message — check the current pricing at the Kakao Business site since rates are set by approved partners called BSPs.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Integrations are where projects stall

We wire FlutterFlow integrations like this one every week — auth, webhooks, edge cases included. Fixed-price builds from $13K, delivered in 6–10 weeks.

Talk to an integration engineer

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.