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

# Environments

> Production hosts, WebSocket URL, and signing scope.

## Production

| Surface   | URL                                           |
| --------- | --------------------------------------------- |
| REST      | `https://api.omnibook.xyz`                    |
| WebSocket | `wss://api.omnibook.xyz/v1/ws`                |
| Docs      | `https://docs.omnibook.xyz`                   |
| Status    | `https://api.omnibook.xyz/v1/exchange/status` |

Every REST endpoint lives under `/v1/`. There is no anonymous access — even
market data requires a signed request.

## Sandbox

Omnibook does not publish a separate sandbox environment. Integrate against
production with small sizes, or run the local dev stack from the exchange repo
if you need an isolated venue.

## Signing is host-independent

The HMAC canonical string covers `timestamp`, `METHOD`, `request-target`, and
`body` — not the hostname. The same signing code works against any deployment
as long as you point `BASE` at the correct host. Query strings are part of the
request target: sign `/v1/rounds?limit=5`, not `/v1/rounds`.

WebSocket handshake signing is fixed:

```
<timestamp>\nGET\n/v1/ws\n
```

See [Authentication](/quickstart/authentication) for the full signing contract.

## Machine-readable specs

Download the generated contracts (also linked from the [landing page](/)):

* [OpenAPI (REST)](/api-spec/venue-openapi.yaml)
* [AsyncAPI (WebSocket)](/api-spec/venue-asyncapi.yaml)

Run `python3 scripts/sync-specs.py` in the docs repo to regenerate from the
exchange source of truth.
