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

# SDKs overview

> The public TypeScript SDKs for Voyant, Connect, and Data, and the conventions they share.

Voyant publishes a family of public TypeScript SDKs, one per product area. They are independent packages you can install in any TypeScript project, and they share a common transport, auth model, and error type so they feel the same to use.

## The SDKs

<CardGroup cols={2}>
  <Card title="Cloud SDK" icon="cloud" href="/docs/services/overview">
    `@voyant-travel/cloud-sdk` for vault, messaging, browser, video, realtime, and search.
  </Card>

  <Card title="Connect SDK" icon="plug" href="/docs/connect/connect-sdk">
    `@voyant-travel/connect-sdk` for the operator and connection control plane and the normalized data plane.
  </Card>

  <Card title="Data SDK" icon="database" href="/docs/data/overview">
    `@voyant-travel/data-sdk` for geography, aviation, FX, SEO, and business data.
  </Card>

  <Card title="Connect family" icon="boxes-stacked" href="/docs/connect/overview">
    `connect-adapter`, `connect-provider-sdk`, and `connect-cruises` for building on Connect.
  </Card>
</CardGroup>

## Shared design

All three primary clients follow the same pattern:

* A factory function, for example `createVoyantCloudClient`, `createVoyantConnectClient`, or `createVoyantDataClient`, plus an equivalent class constructor.
* An `apiKey` option, and transport options such as `baseUrl`, `headers`, and a custom `fetch`.
* Methods grouped into namespaces by domain.
* A shared internal transport (`@voyant-sdk/sdk-core`) so behavior is consistent. That package is private; you only ever import the public SDK.

```ts theme={null}
import { createVoyantCloudClient } from "@voyant-travel/cloud-sdk";
import { createVoyantConnectClient } from "@voyant-travel/connect-sdk";
import { createVoyantDataClient } from "@voyant-travel/data-sdk";

const cloud = createVoyantCloudClient({ apiKey: process.env.VOYANT_API_KEY! });
const connect = createVoyantConnectClient({ apiKey: process.env.VOYANT_API_KEY!, operatorId: "op_123" });
const data = createVoyantDataClient({ apiKey: process.env.VOYANT_API_KEY! });
```

## One token, scoped per action

Every SDK authenticates with a Voyant API token. The same token works across products; what it can do is determined by its scopes. See [Authentication](/docs/sdks/authentication) for how tokens and scopes work, and the per-service pages for the exact scope each method needs.

## Consistent transport and errors

The SDKs JSON-encode request bodies, skip null and undefined query params, parse JSON responses, and unwrap `{ data }` envelopes by default. Failures throw a single `VoyantApiError` carrying `status`, `requestId`, and `body`. See [Errors and transport](/docs/sdks/errors-and-transport).

## Installing

```bash theme={null}
pnpm add @voyant-travel/cloud-sdk
pnpm add @voyant-travel/connect-sdk
pnpm add @voyant-travel/data-sdk
```

The packages are published under the `@voyant-travel` npm scope and released with changesets.
