Read your conversations in Klang (transcripts, summaries, agendas, notes) from anywhere. Your CRM, your dashboards, your custom workflows, your AI agents. This guide takes you from zero to a working integration.
1
Install the SDK
Pick your stack. The SDKs give you typed responses, automatic retries on rate-limit headers, and auto-paginating iterators on every list endpoint. Prefer cURL? Skip this step.
terminal
npm install @klang-ai/sdk-ts
2
Authenticate
Grab a key from Settings → API keys in your Klang workspace. Pass it on every request as Authorization: Bearer <key>. Hit GET /api/v1/me to confirm which workspace the key is bound to.
The key acts on behalf of your Klang user. Anything you can see in the app, the API can see; anything you create through the API shows up in the app.
lock
Use environment variables. Never check API keys into git. Revoke any leaked key from Settings immediately.
klang.ts
import Klang from"@klang-ai/sdk-ts";
const klang = newKlang({
apiKey: process.env.KLANG_API_KEY,
});
// Verify the key is bound to the right workspaceconst me = await klang.identity.retrieve();
console.log(me.workspace.name);
You should see something like this in your terminal:
Q2 roadmap planning · Q2 roadmap shipping May 28; Ada owns checklist
Eng all-hands #14 · Eng team unblocking build pipeline regression
Customer interview · Linear · Onboarding friction in workspace setup
Pricing committee · Approve enterprise tier launch for Q3
4
Fetch a conversation
Retrieve a single conversation. One call returns the summary, the transcript, and every supporting source. No follow-ups required.
get-conversation.ts
const conv = await klang.conversations.retrieve(conversationId);
// summary is a markdown string — drop straight into a promptconsole.log(conv.summary);
// transcript arrives as a flat, speaker-labeled stringconst transcript = conv.sources?.find(
(s) => s.type === "transcript"
);
console.log(transcript?.content);
Polling is fine for development, but in production you'll want webhooks. Klang fires conversation.ready when a transcript and summary land, conversation.failed if processing breaks, and conversation.deleted when something gets removed. Webhooks are managed in the dashboard at Settings → Developers → Webhooks. Copy the signing secret into your environment as KLANG_WEBHOOK_SECRET.
webhook.ts
import express from"express";
import crypto from"node:crypto";
const app = express();
app.post("/klang", express.raw({ type: "*/*" }), (req, res) => {
// Verify HMAC-SHA256 — see /webhooks for the full helperconst event = verify(req.body, req.headers["x-klang-signature"], process.env.KLANG_WEBHOOK_SECRET);
if (event.type === "conversation.ready") {
enqueue(event.data.id);
}
res.status(200).end();
});
See the full webhooks reference for every event type and the payload shape.
6
Go live
A few things worth knowing before traffic gets real:
Keys are scoped to a single user inside a workspace. Rotate them from Settings → API keys.
Mind the rate limits; the SDKs honour Retry-After automatically.
All data stays in the EU.
Need a higher rate limit, on-prem, or a Data Processing Agreement? Talk to us.