---
title: "SDKs"
description: "The official Arbol SDKs for TypeScript and Rust, what they share and when to use each."
---

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

# SDKs

Arbol's SDKs are generated from the API's public OpenAPI document, `https://api.getarbol.com/openapi.json`, so every operation of every service is a typed method named after it: `raiz.agents.create` is `arbol.raiz.agents.create()` in TypeScript and `arbol.raiz().agents().create(&input)` in Rust.

- **TypeScript** — `@arbol-ai/sdk` on npm, for Node.js, Bun and browsers.
- **Rust** — The `arbol-sdk` crate, for async Rust services.

## What they share

- **One credential.** An Arbol API key (`arb_live_…`) or a person's access token for the audience `https://api.getarbol.com`, sent as `Authorization: Bearer`. See [Authentication](/en/developers/authentication/).
- **Every service in one client.** Products and integrations alike, as the API serves them.
- **No retries.** Each call sends one request. A write that fails without an answer may still have happened, so check before you repeat it. See [Retries](/en/developers/concepts/retries/).
- **The server decides.** A method in the client is not a permission: the API checks the credential's organization and scopes on every call.

## How they differ

| | TypeScript | Rust |
|---|---|---|
| Package | [`@arbol-ai/sdk`](https://www.npmjs.com/package/@arbol-ai/sdk) on npm | `arbol-sdk`, a git dependency, not on crates.io yet |
| Runs on | Node.js 26, Bun 1.4 or a current browser | Rust 1.85 or newer, on any Tokio runtime |
| A call returns | The whole response envelope: `success`, `data`, `error`, `metadata` | The envelope's `data` |
| A failure is | An `ApiError` with the HTTP status and the error body | An `arbol_sdk::Error` with `code`, `request_id` and an `outcome` that says whether a write may have happened |
| Updated | A new version for each API release that changes the API | Regenerated by hand; `arbol_sdk::RELEASE` names the API release it was generated from |

## Which to use

| You are building | Use |
|---|---|
| A Node.js or Bun service, a script, or a web app | The [TypeScript SDK](/en/developers/sdks/typescript/). In a browser, use a person's access token, never an API key. |
| A Rust service | The [Rust SDK](/en/developers/sdks/rust/). |
| Commands in a terminal, shell scripts or CI | The [CLI](/en/developers/cli/), which is built on the TypeScript SDK. |
| An AI assistant that acts on Arbol | Arbol's [MCP server](/en/developers/mcp/). |
| Anything in another language | The REST API directly, from each service's OpenAPI document: `https://api.getarbol.com/v1/<service>/openapi.json`. |

Source: https://docs.getarbol.com/en/developers/sdks/index.mdx
