> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corti.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# SDKs & Tools

> Official SDKs, web components, and developer tools for the Corti API

The fastest way to integrate the Corti API is through our official SDKs. They handle authentication, token refresh, WebSocket connections, pagination, retries, and error handling -- so you can focus on building your healthcare application.

## Official SDKs

<CardGroup cols={2}>
  <Card title="JavaScript SDK" icon="js" href="/sdk/js/overview">
    Full-featured SDK for Node.js and browser environments. Supports all REST endpoints, real-time WebSocket streaming, and every authentication flow.

    ```bash theme={null}
    npm install @corti/sdk
    ```
  </Card>

  <Card title="C# .NET SDK" icon="microsoft" href="/sdk/dotnet/overview">
    Production-ready SDK for .NET 8+, .NET Framework 4.6.2+, and .NET Standard 2.0. Full API coverage with async/await and WebSocket support.

    ```bash theme={null}
    dotnet add package Corti.Sdk
    ```
  </Card>
</CardGroup>

## Web Components

<Card title="Dictation Web Component" icon="microphone" href="/sdk/dictation/overview" horizontal>
  Drop-in `<corti-dictation>` element with built-in UI for real-time speech-to-text. Handles microphone management, audio streaming, and transcript display. Works with any frontend framework or vanilla HTML.
</Card>

## Adapters

<Card title="AI SDK Adapter" icon="plug" href="/sdk/ai-sdk-adapter/overview" horizontal>
  Adapter for integrating Corti A2A agents with the [Vercel AI SDK](https://sdk.vercel.ai/docs). Build chat interfaces powered by Corti agents using familiar patterns like `useChat`.
</Card>

## Developer Tools

<CardGroup cols={2}>
  <Card title="Postman Collection" icon="circle-play" href="/sdk/postman">
    Pre-built API requests for testing every Corti endpoint. Import into Postman and start exploring immediately.
  </Card>

  <Card title="Examples Repository" icon="github" href="https://github.com/corticph/corti-examples">
    Working examples for JavaScript, C# .NET, React, and more -- covering authentication flows, WebSocket streaming, dictation, proxy setups, and embedded assistant integration.
  </Card>
</CardGroup>

## Why use an SDK?

|                      | Raw API calls                                            | With an SDK                              |
| :------------------- | :------------------------------------------------------- | :--------------------------------------- |
| **Authentication**   | Manual OAuth token exchange and refresh logic            | Automatic -- just provide credentials    |
| **Token management** | Track expiry, handle refresh races, store tokens         | Built-in with thread-safe refresh        |
| **WebSockets**       | Raw connection management, reconnection, message parsing | Managed connections with typed events    |
| **Type safety**      | Manual request/response validation                       | Full JavaScript / C# type definitions    |
| **Error handling**   | Parse HTTP status codes and error bodies                 | Typed exceptions with structured details |
| **Pagination**       | Manual cursor/offset tracking                            | `for await` / `await foreach` iteration  |
| **Retries**          | Implement backoff for 429/5xx                            | Configurable automatic retries           |

## Quickstart

Pick your language and follow the guide:

<Steps>
  <Step title="Get API credentials">
    Sign up at the [Corti Console](https://console.corti.app/) and create an API client. See [Getting Access](/get_started/getaccess) for details.
  </Step>

  <Step title="Install the SDK">
    <CodeGroup>
      ```bash title="JavaScript" theme={null}
      npm install @corti/sdk
      # or
      yarn add @corti/sdk
      # or
      pnpm add @corti/sdk
      ```

      ```bash title="C# .NET" theme={null}
      dotnet add package Corti.Sdk

      # Alternatively, in your .csproj:
      # <PackageReference Include="Corti.Sdk" Version="*" />
      ```
    </CodeGroup>
  </Step>

  <Step title="Create a client">
    <CodeGroup>
      ```ts title="JavaScript" theme={null}
      import { CortiClient } from "@corti/sdk";

      // Replace these with your values
      const CLIENT_ID = "<your-client-id>";
      const CLIENT_SECRET = "<your-client-secret>";
      const ENVIRONMENT = "<eu-or-us>";
      const TENANT = "<your-tenant-name>";

      const client = new CortiClient({
          environment: ENVIRONMENT,
          tenantName: TENANT,
          auth: {
              clientId: CLIENT_ID,
              clientSecret: CLIENT_SECRET,
          },
      });
      ```

      ```csharp title="C# .NET" theme={null}
      using Corti;

      // Replace these with your values
      const string CLIENT_ID = "<your-client-id>";
      const string CLIENT_SECRET = "<your-client-secret>";
      const string ENVIRONMENT = "<eu-or-us>";
      const string TENANT = "<your-tenant-name>";

      var client = new CortiClient(
          tenantName: TENANT,
          environment: ENVIRONMENT,
          auth: CortiClientAuth.ClientCredentials(
              clientId: CLIENT_ID,
              clientSecret: CLIENT_SECRET)
      );
      ```
    </CodeGroup>
  </Step>

  <Step title="Make your first API call">
    <CodeGroup>
      ```ts title="JavaScript" theme={null}
      // Token acquisition and refresh happen automatically
      const interactions = await client.interactions.list();
      ```

      {/* List interactions with async foreach pagination */}

      ```csharp title="C# .NET" theme={null}
      var pager = await client.Interactions.ListAsync(new InteractionsListRequest());
      ```

      ```python title="Python" theme={null}
      import requests

      # Replace these with your values
      ENVIRONMENT = "<eu-or-us>"
      TENANT = "<your-tenant-name>"
      TOKEN = "<your-access-token>"

      response = requests.get(
          f"https://api.{ENVIRONMENT}.corti.app/v2/interactions",
          headers={
              "Authorization": f"Bearer {TOKEN}",
              "Tenant-Name": TENANT,
          },
      )
      response.raise_for_status()
      interactions = response.json()["interactions"]
      ```

      ```bash title="cURL" theme={null}
      # Replace these with your values
      ENVIRONMENT="<eu-or-us>"
      TENANT="<your-tenant-name>"
      TOKEN="<your-access-token>"

      curl "https://api.${ENVIRONMENT}.corti.app/v2/interactions" \
        -H "Authorization: Bearer ${TOKEN}" \
        -H "Tenant-Name: ${TENANT}"
      ```
    </CodeGroup>
  </Step>
</Steps>

***

<Note>For support or questions, reach out through [help.corti.app](https://help.corti.app)</Note>
