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

# Installation

> Install, authenticate, and configure the official VZaps Python SDK

The official VZaps Python SDK wraps authentication, HTTP calls, required headers, realtime events, and the main public API resources.

Use it in Python backends, CLIs, jobs, notebooks, and server-to-server automations.

## Requirements

| Resource | Version        |
| -------- | -------------- |
| Python   | 3.10 or higher |

## Install

```bash theme={null}
pip install vzaps
```

## Create the client

```python theme={null}
from vzaps import VZapsClient

client = VZapsClient(
    client_token="your-client-token",
    client_secret="your-client-secret",
)
```

Async applications can use `AsyncVZapsClient`:

```python theme={null}
from vzaps import AsyncVZapsClient

async with AsyncVZapsClient(
    client_token="your-client-token",
    client_secret="your-client-secret",
) as client:
    instances = await client.instances.list()
```

## Credentials

| Credential       | Where to use       | Description                                          |
| ---------------- | ------------------ | ---------------------------------------------------- |
| `client_token`   | Client constructor | Account client token, also sent as `X-Client-Token`. |
| `client_secret`  | Client constructor | Secret used by the SDK to obtain and refresh JWTs.   |
| `instance_token` | Each instance call | Instance token, sent as `X-Instance-Token`.          |

Do not expose `client_secret` or `instance_token` in public front ends.

## Automatic authentication

The SDK obtains a JWT with `client_token` and `client_secret`, caches it in memory, and refreshes it before expiry.

```python theme={null}
access_token = client.auth.get_access_token()
```

## Client options

| Option               | Default     | Use                                         |
| -------------------- | ----------- | ------------------------------------------- |
| `timeout`            | `30.0`      | HTTP timeout in seconds or `httpx.Timeout`. |
| `limits`             | `None`      | Optional `httpx.Limits`.                    |
| `token_skew_seconds` | `60.0`      | Refresh JWT before actual expiry.           |
| `user_agent`         | SDK default | HTTP `User-Agent` header.                   |

## Environment variables

```bash theme={null}
VZAPS_CLIENT_TOKEN=your-client-token
VZAPS_CLIENT_SECRET=your-client-secret
VZAPS_INSTANCE_ID=VZ...
VZAPS_INSTANCE_TOKEN=your-instance-token
```

## Next steps

* Follow the [Starter Guide](/en/sdk/python/starter-guide).
* See [Messages](/en/sdk/python/messages) for send methods.
* See [Realtime](/en/sdk/python/realtime) for WebSocket subscriptions.
