Docs
open_in_new Sign in Get API key
Getting started

Build with Klang in under 10 minutes.

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 = new Klang({ apiKey: process.env.KLANG_API_KEY, }); // Verify the key is bound to the right workspace const me = await klang.identity.retrieve(); console.log(me.workspace.name);
curl https://app.klang.ai/api/v1/me \ -H "Authorization: Bearer $KLANG_API_KEY"
3

Make your first call

The list endpoint returns the newest conversations first, paginated. A good first call to confirm your key is wired up correctly.

list-conversations.ts
// Auto-paginates across all pages — no cursor handling needed for await (const conv of klang.conversations.list({ limit: 50 })) { console.log(`${conv.title} · ${conv.digest}`); }
curl "https://app.klang.ai/api/v1/conversations?limit=50" \ -H "Authorization: Bearer $KLANG_API_KEY"

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 prompt console.log(conv.summary); // transcript arrives as a flat, speaker-labeled string const transcript = conv.sources?.find( (s) => s.type === "transcript" ); console.log(transcript?.content);
curl "https://app.klang.ai/api/v1/conversations/$ID" \ -H "Authorization: Bearer $KLANG_API_KEY"
5

Listen for events

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 helper const 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.
Full API reference
Every endpoint, parameter, and response field.