Getting started
Integration overview
One backend, every platform — embed once, and it stays up to date.
AskAIs Customer Service is one backend with many client SDKs. You set up your workspace once, then embed chat anywhere — a website, a mobile app, or any backend service. Every client talks to the same inbox, AI agent, and knowledge base.
One backend, every platform
Whatever platform you use, the install is short and the conversation, contact, AI replies, and settings are shared. Here is how each platform installs and — importantly — how it gets future updates:
Platforms at a glance
| Platform | Install | How it updates |
|---|---|---|
| Website | <script src="…/widget.js"> | Automatic — every page load fetches the latest |
| iOS (Swift) | Swift Package / CocoaPods | Bump the SDK version, ship a new app build |
| Android (Kotlin) | Gradle | Bump the SDK version, ship a new app build |
| Flutter | pub | Bump the SDK version, ship a new app build |
| React Native | npm | Bump the SDK version, ship a new app build |
| Any backend | REST API / OpenAPI | Your own service — whenever you deploy |
Are all the SDKs compatible?
Yes. They are different front doors to the same AskAIs Customer Service workspace, so they are fully interoperable:
- Same backend, same app-id: every client connects to the same inbox in your workspace.
- One visitor across devices: identify them with the same externalId and a chat started on the web continues in your app.
- Shared configuration: your AI agent, knowledge base, business hours, keyword replies and FAQs are configured once and apply to every channel.
Web — the official embed (recommended)
Drop this one line before </body>. That is the whole installation. The app-id is public and safe to ship; copy it from Settings → Inboxes.
<script src="https://cs.askais.com/widget.js"
data-app-id="YOUR_APP_ID"
data-base-url="https://cs.askais.com"
async></script>⚠️ Do not download or self-host widget.js
Always load the widget from https://cs.askais.com/widget.js. If you download the file and host it yourself, or compile it into your own bundle, you freeze it at one version — our future style updates, bug fixes and new features will never reach you. Loaded from cs.askais.com, the widget updates itself automatically; you change nothing.
Control it from your page (optional)
After the script loads, a global window.SingChat is available:
// Open / close the widget
window.SingChat.open();
window.SingChat.close();
// Identify a logged-in user (so chats follow them across devices)
window.SingChat.identify({ externalId: "user_123", name: "Ada", email: "ada@acme.com" });Mobile apps (iOS / Android / Flutter / React Native)
Native SDKs are compiled into your app, so they do not auto-update like the web widget. To get a new version, bump the SDK version in your package manager and ship a new app build. The init is the same idea everywhere — point at https://cs.askais.com and identify with your app-id:
// Swift Package Manager
.package(url: "https://github.com/singlink/singlink-ios", from: "0.1.0")
let client = SingChatClient(baseURL: "https://cs.askais.com")
try await client.identify(.deviceAnonymous(appId: "YOUR_APP_ID"))Any backend or language
No SDK required — call the REST API directly to identify a contact and send/receive messages. We also publish generated SDKs from our OpenAPI spec for 30+ languages.
# Any backend / language — talk to the REST API directly
curl -X POST https://cs.askais.com/api/v1/auth/identify \
-H 'Content-Type: application/json' \
-d '{"appId":"YOUR_APP_ID","externalId":"user_123"}'