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

# Licensing

> One key. No backend, nothing to operate.

```bash theme={"dark"}
export SORY_LICENCE_KEY="..."
```

```python theme={"dark"}
async with SoryClient(config=config) as sory:
    ...
```

Or pass it directly: `SoryClient(config=config, licence_key="...")`.

The key is checked when the client is **constructed**, so there is no way to skip the gate by using the object without the context manager.

## How it works

A key is a signed payload holding your name and an expiry. SORY verifies the signature locally against a public key embedded in the package.

**No server, no network call, no downtime risk.** Validated keys are cached for 24 hours, keyed by digest — the key itself is never written to disk.

## Errors

```text theme={"dark"}
LicenceError: No licence key provided. Set SORY_LICENCE_KEY or pass SoryClient(licence_key=...).
LicenceError: Licence expired on 2027-01-01T00:00:00+00:00
LicenceError: Invalid licence signature
```

## Getting a key

<Card title="Request a licence" icon="mail" horizontal href="mailto:manu.de.cara@gmail.com">
  Tell us the venues and symbols you plan to trade.
</Card>

Keys are issued with an expiry and re-issued on renewal.
