Three entrypoints, two languages. Both API clients are generated from the same OpenAPI document and expose the same operations under the same names, so an example in one translates to the other by mechanical substitution — talqing.agents.versions.rollback is that call in both. Only the argument style differs, and it differs uniformly. The browser entrypoint ships inside the npm package. There is no second install and no livekit-client for you to add.

Install and make a call

Node 20 or newer; Python 3.10 or newer. The TypeScript package ships both ESM and CommonJS builds, so import and require both work. The Python package ships a py.typed marker, so your type checker sees every shape it declares.
Python also reads the environment for you: Talqing.from_env() takes TALQING_API_KEY and TALQING_BASE_URL, and anything you pass wins over both.

What both clients agree on

The base URL is required and has no default

Neither client will start without one. That is deliberate: a bundler inlines NEXT_PUBLIC_* at build time, so a client that quietly fell back to localhost would ship a production bundle calling a server that is not there — and it would fail as a connection error three layers down, at runtime, on a customer’s machine. A client that refuses to start says what is actually wrong, at the line that is wrong. The base URL is also how you choose a region: one token reaches every region, so working in a second one is the same token and a different base URL. See regions.

One error type

Every non-2xx raises one exception carrying the API’s one error envelope. There is nothing to branch on. Full detail on errors.

One paging helper

All twenty-five list endpoints return the same envelope, so each SDK ships one paginate rather than a listAll per resource. See pagination.

Typed streams

The six server-sent-events endpoints come back as typed frames discriminated on event — an async iterable in TypeScript, a context manager in Python. See streaming.

Types named as the API names them

Every request and response shape is exported under the API’s own name: AgentConfig, AgentResponse, CallOutcome, OperationRequest. In TypeScript they are TypeScript types; in Python they are TypedDicts, which describe a plain dict at runtime and cost nothing when you run.

Where each resource lives

The namespace path is identical in both languages. TypeScript spells it in camel case, Python in snake case; only the four names below actually differ.

What the SDKs do not cover

Sign-in, workspaces, members, roles, personal access tokens and payments live on a separate control host and are outside this surface — see what is not here. Create a token in the dashboard and everything above is reachable.

TypeScript

Client options, the call shape, errors, pagination and streams.

Browser

Every hook and component in the web-call layer, with signatures.

Python

Sync and async clients, the omit rule, streams and typing.

MCP server

The same surface, for a coding agent in your terminal.