SDK reference
Every Keyda SDK — Android, iOS, React Native, Flutter, Ionic — implements the same small contract. If you have used one, you have used all of them.
The API
| Call | What it does |
|---|---|
init / initialize | Stores your client id. Validates it and fails loudly if it is malformed. |
show | Presents the chat over your app. |
dismiss | Closes it. |
isShowing | Whether it is presented right now. |
There is deliberately nothing else. No message-sending API, no unread count, no user identity call — because none of those work end to end yet, and a method that does not work is worse than a missing one.
The URL every SDK opens
{baseUrl}/chat/{clientId}baseUrl defaults to https://keyda.in/business and is overridable on every platform, for staging or a self-hosted install.
Why a web view, and what it costs you
There is one chat interface, served by the platform, and every surface loads it.
What you get: a change an owner makes in the dashboard — accent colour, welcome message, bot name, going live — reaches every app immediately, with no release. A fix lands everywhere at once. The chat is identical across platforms.
What it costs: the chat needs a connection. There is no offline mode, and there are no push notifications yet.
We would rather you know this before you ship than discover it afterwards.
Guarantees each SDK makes
- Navigation escapes. A link to any other origin opens in the system browser instead of replacing the chat. Without this, one tap on a footer link ends a customer's conversation with no way back.
- Conversation continuity. DOM storage is on, so a customer who closes the app and comes back finds their thread where they left it (for 24 hours).
- The keyboard never covers the input.
- Safe areas are respected — no chat drawn under a notch or a home indicator.
- No crash reaches your app. A failed load shows a retry.
- No analytics, no device identifiers, no third-party dependencies. Adding a Keyda SDK does not add a tracker to your app.
Client id format
kb_live_ followed by 8-48 hexadecimal charactersAnything else is rejected at init rather than opening a 404 in front of a customer. The client id is public by design — it is visible in any website that embeds the widget — and carries no ability to read or change your account. See limits and security.
Source
Public, MIT-licensed: github.com/KeydaAI/keyda-business-sdks. The shared contract every package is held to is in CONTRACT.md at the top of that repo.