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

> ## Agent Instructions
> These docs cover learner integrations through Hosted Lab Pages, the SDK, and the REST API. Content management is outside this integration scope.
> Read the setup page for the chosen approach before implementing it. Keep organization API keys and hosted mint secrets on the server.
> The public SDK is coming soon. Check the SDK quickstart for current availability. Do not invent installation commands or direct readers to a private package.
> Cybr provides completion tracking and CTF verification. The integrating platform decides whether to award points.

# Client configuration

> Create the server SDK client and understand its retry rules.

The public SDK package is coming soon. The [quickstart](/getting-started/quickstart#install-the-sdk) will provide installation instructions when it is available.

## Create a client

```ts theme={null}
import { CybrLabs } from '@cybr/labs-sdk'

const cybr = CybrLabs.init({ key: apiKey })
```

`apiKey` is a value from secure server configuration. An empty key throws `TypeError`.

## Configuration

| Field | Default | Purpose |
| - | - | - |
| `key` | Required | Organization API key |
| `baseUrl` | `https://api.cybr.com` | API base URL |
| `timeoutMs` | `30000` | Timeout for each HTTP attempt |
| `maxRetries` | `2` | Retries after the first attempt |
| `fetch` | `globalThis.fetch` | HTTP implementation |

The package supports ESM, CommonJS, and TypeScript types. The server runtime requires `fetch` or a supplied implementation.

## Resources

The client exposes `labs` and `deployments`. Their [reference](/reference/labs-and-deployments) maps each method to its REST operation.

The `http` member provides lower-level requests. Named methods cover the documented integration features, including terminal sessions.

The separate [browser terminal helper](/reference/terminal) does not import the server client or require an organization key.

## Headers

The client sends `X-API-KEY` and an `X-Cybr-SDK` version header. The client disables HTTP caching for API requests.

## Retry behavior

GET and PUT requests retry timeouts, network errors, and server errors. POST and DELETE requests do not retry those errors automatically.

Rate-limit responses can retry within the configured retry count. A requested wait above five seconds returns `rate_limited` to the caller.

Backoff starts at 500 milliseconds and doubles, with jitter. A single wait has a five-second ceiling.

A timeout after a write does not prove that the write failed. The [error guide](/guides/error-handling) describes recovery.

Terminal startup has a separate bounded retry for `CONTAINER_STARTING`. The [terminal reference](/reference/terminal) describes its deadline and cancellation.

## Package version

```ts theme={null}
import { SDK_VERSION } from '@cybr/labs-sdk'

console.log(SDK_VERSION)
```

`SDK_VERSION` reports the version of the SDK in use. Public package installation instructions will appear in the [quickstart](/getting-started/quickstart#install-the-sdk).
