TypeScript SDK

Install, authenticate, and send your first message with the typed SDK.

@kortix/sdk is the typed client for the Kortix platform. It wraps the Kortix REST API and the agent runtime in one interface. React sessions can use the server-selected OpenCode REST or ACP transport. Your app never calls either runtime transport directly. The core client is fetch-based and runs in Node, Bun, and browsers.

Install

npm install @kortix/sdk

react (18+) and @tanstack/react-query (5.75+) are optional peers, needed only for React hooks.

Create a client

Call createKortix once, with your API base URL and a function that returns your token.

import { createKortix } from '@kortix/sdk';

export const kortix = createKortix({
  backendUrl: 'https://api.kortix.com/v1',
  getToken: async () => process.env.KORTIX_API_KEY!,
});

backendUrl and getToken are the only required fields. The SDK calls getToken on every request and caches nothing — your host owns token storage and refresh.

Create an API key at User settings → API keys. The key starts with kortix_pat_ and shows only once. Store it as a secret and return it from getToken. See Auth for token types and scopes.

Start your first session

  1. Create a session in your project.

    const created = await kortix.project(projectId).sessions.create();
    const session = kortix.session(projectId, created.session_id);
  2. Wait for the sandbox to accept work.

    await session.ensureReady();

    ensureReady() starts or resumes the session sandbox. It polls the session's /start endpoint — each call long-polls up to 30 s — until the runtime is ready, hits a terminal stage, or its deadline elapses (default ~3 min, configurable via { readyTimeoutMs }). On a cold boot it keeps polling while the sandbox reports retriable: true; it only throws an ApiError with code: 'RUNTIME_UNAVAILABLE' if the runtime is still not ready when the deadline expires. See Sessions.

  3. Send a message to the agent.

    await session.send('Add a README');

    send() calls ensureReady() for you, then sends the message.

createKortix gives you an imperative client: call methods for every action, like projects, sessions, secrets, and triggers. @kortix/sdk/react gives you hooks for live UI data — useSession runs a whole session in one hook.

TypeScript SDK – Kortix Docs