# Client libraries

| Library | Install | Runtime | Status | Reference |
|---|---|---|---|---|
| Python | `pip install scispace` | 3.9+ | GA (1.0) | python |
| TypeScript | `npm install scispace` | Node 18+ | GA (1.0) | typescript |
| REST | — | — | GA | rest |

## What the SDKs do for you

- Retry with exponential backoff and jitter on `429`/`5xx`, honouring `Retry-After`
- An `Idempotency-Key` generated per POST, reused across retries
- `.wait()` on async resources, so you never write a poll loop
- Cursor pagination as a plain iterator
- Streaming as a native iterator
- Typed enums for `depth`, `status`, and `error.type`
- A pinned `SciSpace-Version`, recorded in each release's notes

## Choosing

If your language is Python or TypeScript, use the SDK — the retry, idempotency, and wait logic is the
part most hand-rolled clients get wrong. Otherwise follow rest, which lists exactly what you have
to implement yourself.

## Related

sdks-overview · quickstart · versioning
