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

# SDKs

> Choose how to integrate with Upside — a typed language SDK, or the REST and WebSocket APIs directly. Every path uses EIP-712 wallet signing, no API keys.

Pick the integration path that fits your stack. SDKs wrap the REST and WebSocket
API behind a typed client so you don't hand-build EIP-712 signatures or
envelopes; the raw APIs work from any language.

## Choose your integration path

<CardGroup cols={3}>
  <Card title="Python SDK" icon="python" href="/sdk/python/overview">
    Typed client for reads, signed writes, and streams. `pip install upside-python-sdk`.
  </Card>

  <Card title="REST API" icon="code" href="/exchange/overview">
    Call `POST /exchange` and `POST /info` directly from any language.
  </Card>

  <Card title="WebSocket API" icon="bolt" href="/websocket/overview">
    Realtime order book, trades, candles, and per-address account streams.
  </Card>
</CardGroup>

More language SDKs are on the way.

## What every SDK handles

* **EIP-712 signing, no API keys.** Writes are authorized by a wallet signature
  over a fixed domain; the SDK picks the Agent or Typed path and manages nonces.
  See [Authentication](/guide/authentication).
* **Raw integer prices and sizes.** The wire protocol is integer-only — convert
  display values with each contract's `priceScale` / `qtyScale` from
  [`configs`](/info/configs); never hardcode a scale.
* **Asynchronous order placement.** A submitted order returns `status: "accepted"`
  with a count, not the resting order id — read the result from the Info API or
  the `orderUpdates` / `userFills` WebSocket channels.

<Note>
  SDKs default to the **QA testnet** (`https://dev.upsidemax.xyz`). For UAT or
  production access, contact the Upside team.
</Note>
