---
title: SDKs and CLI
description: Official clients for TypeScript, Python, Go and Rust, and a command line.
url: https://anyrow.ai/docs/sdks
canonical_url: https://anyrow.ai/docs/sdks
last_updated: '2026-10-11'
---

# SDKs and CLI

Every client is generated from the same [OpenAPI document](/docs/openapi.json), so its methods
follow the reference: an operation's id names its method (`table.create`, `row.list`,
`extract.table.once`). Give each one your key as the `Authorization: ApiKey <key>` header.

## TypeScript

Runs anywhere `fetch` does: Node, Bun, Deno, Cloudflare Workers and browsers.

```bash title="npm"
npm install @anyrow/sdk
```

```bash title="Bun"
bun add @anyrow/sdk
```

```bash title="Deno"
deno add jsr:@anyrow/sdk
```

```ts
import { AnyrowSDK } from "@anyrow/sdk"

const anyrow = new AnyrowSDK({
  baseURL: "https://api.anyrow.ai",
  headers: { Authorization: `ApiKey ${process.env.ANYROW_API_KEY}` },
})

const { data, error, status } = await anyrow.row.list({
  params: { project_id: "proj_...", table_id: "tbl_..." },
  search: { limit: 50 },
})
```

Calls return `{ data, error, status, response }`: `data` on success, `error` (the
[error body](/docs/errors)) otherwise. Path parameters go in `params`, query parameters in
`search`, JSON bodies in `json` and files in `form`.

## Python

```bash
pip install anyrow
```

```python
from anyrow import AnyrowSDK

client = AnyrowSDK(
    base_url="https://api.anyrow.ai",
    headers={"Authorization": f"ApiKey {os.environ['ANYROW_API_KEY']}"},
)
```

## Go

```bash
go get github.com/anyrow/sdk-go
```

## Rust

```bash
cargo add anyrow
```

## CLI

```bash
go install github.com/anyrow/cli@latest
```

The CLI reads the key from `--api-key`, then `ANYROW_API_KEY`, then
`~/.config/anyrow/config.toml`.

## Without an SDK

The API is plain HTTPS and JSON: every page of the [API reference](/docs/api) has cURL,
JavaScript and Python samples you can copy.
