Wherever your
customers hang out, we're there.

Web widget, Telegram bot, native iOS/Android SDKs, REST API, webhooks. Five channels, one inbox, one AI.

Turn on only what you need. Add more when you're ready.

Five ways in, one conversation out.

Every channel shares the same inbox, the same AI, the same knowledge base. Switch on whichever ones your users actually live in.

Web Widget

Two lines of JavaScript. Works on any site — React, WordPress, a raw HTML page, whatever.

How it works

  1. 1Copy your site's embed snippet from Settings → Channels → Web.
  2. 2Drop it right before </body>. Two lines.
  3. 3Refresh. The chat bubble shows up bottom-right.
  4. 4Optionally pass user info so the AI knows who's chatting.
Best for: SaaS apps, e-commerce, marketing sites — anywhere users are already on your page.
HTML
<script>
  window.LaneChat = { site_id: "sc_8a2f...1b" };
</script>
<script async src="https://lane.chat/w.js"></script>
With user info (optional)
window.LaneChat = {
  site_id: "sc_8a2f...1b",
  user: { id: "u_123", name: "Alex", email: "[email protected]" },
  locale: "en"
};

TelegramFIRST CLASS

Both sides of Telegram — a customer-facing bot and group-mirror for communities you already run.

How it works

  1. 1Grab a bot token from @BotFather.
  2. 2Paste it in Settings → Channels → Telegram.
  3. 3Users DM your bot — or add it to a group and we mirror the thread into your inbox.
  4. 4Reply from the Lane.Chat web app; the user sees it in Telegram.
Best for: Crypto, gaming, and creator communities where Telegram is already home base — plus group-mirror for team support.
Setup
BotFather → /newbot
→ LaneChat_Demo_Bot
→ 7123456789:AAH...z8

Paste token in
Settings → Channels → Telegram
Send from backend
POST /api/v1/telegram/send
{
  "chat_id": 6012345678,
  "text": "Your order just shipped."
}

iOS / Android SDK

Native iOS and Android SDKs with push, offline queue, and the same look and feel as your app.

How it works

  1. 1Add LaneChatKit via SPM or Gradle.
  2. 2Call configure() on launch with your app ID and user info.
  3. 3Show the chat anywhere — fullscreen, modal, or embedded.
  4. 4Register APNs/FCM tokens so replies push even when the app is closed.
  5. 5Send attachments, voice notes, and read receipts natively.
Best for: Mobile apps where you want a real in-app help experience, not a hidden webview.
Swift
import LaneChatKit

LaneChat.configure(
  appId: "app_1f9c...",
  user: .init(id: "u_123", name: "Alex")
)

// Call this from your "Help" button
LaneChat.present(from: self)
Kotlin
LaneChat.configure(
  context = applicationContext,
  appId = "app_1f9c...",
  user = User("u_123", "Alex")
)

LaneChat.present(activity)

REST API

A clean REST API for anything we haven't built a channel for yet.

How it works

  1. 1Create an API key in Settings → Developer.
  2. 2Install the SDK (Node, Python, Go) or hit the REST endpoint directly.
  3. 3Send a message, stream the AI reply back with SSE.
  4. 4Log tool calls, handovers, and token usage on the dashboard.
Best for: Back-office bots, voice agents, and anywhere you need programmatic access without a UI.
curl
curl https://api.lane.chat/v1/messages \
  -H "Authorization: Bearer lc_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "conversation_id": "cv_8a2f",
    "role": "user",
    "content": "Where is my order?",
    "stream": true
  }'
Node SDK
import LaneChat from 'lane-chat';

const lane = new LaneChat({ apiKey: process.env.LANE_KEY });

const reply = await lane.messages.create({
  conversation_id: 'cv_8a2f',
  content: 'What\'s my order status?'
});

Webhook

We hit your endpoint the moment things happen. Perfect for piping into your own stack.

How it works

  1. 1Add your endpoint URL in Settings → Developer → Webhooks.
  2. 2We POST events (message.created, conversation.closed, handover, etc.) as JSON.
  3. 3Verify the X-Lane-Signature header with your webhook secret.
  4. 4Return 2xx within 10s. We retry with backoff if you don't.
Best for: Piping conversations into your CRM, analytics warehouse, or an internal Slack channel.
What we POST to you
POST https://your-app.com/webhooks/lane
X-Lane-Signature: t=1713340800,v1=3f7d...

{
  "event": "message.created",
  "conversation_id": "cv_8a2f",
  "channel": "telegram",
  "message": {
    "role": "user",
    "content": "Hey, my payment didn't go through.",
    "created_at": 1713340800
  }
}
Verify the signature
import crypto from "node:crypto";

const sig = req.headers["x-lane-signature"];
const [, ts, v1] = sig.match(/t=(\d+),v1=(\w+)/);
const mac = crypto.createHmac("sha256", SECRET)
  .update(`${ts}.${rawBody}`).digest("hex");

if (mac !== v1) return res.status(401).end();

Which channel fits your use case?

Not sure which to start with? Here's the honest rundown of what each channel does well.

Capability Web Telegram App API Webhook
Two-way text Receive only
Images, files, voice URL push
Rich cards & buttons Raw JSON
Push notifications Only when tab is open APNs/FCM
Broadcast / campaigns Batch API
AI → human handover Event callback
Setup time 5 min 2 min Half day 1 hour 10 min
Cost Free Free Free Metered Free

Pick one channel.
Or wire up all of them.

Free tier, no credit card. Add your first channel in under five minutes.

Start free See pricing