---
title: SDK
description: Core API のための TypeScript と Python の client — それぞれが何をカバーし、動かすのに何が要るか。
sidebar:
  order: 3
---

このドキュメントに出てくる `curl` 呼び出しはすべて、あなた自身が投げられる HTTP リクエストです。そのまま自分で書くことを妨げるものは、ここには何もありません。SDK は同じ Core API の、面倒な部分がすでに書かれたものです — 最後に見たシーケンス番号から再開する stream、agent があなたのコードにルーティングした call に応答する tool client、そして返ってくる event の型。

SDK は 2 つあり、どちらも同じ API に到達します。

**[TypeScript](https://typescript-sdk-docs.subako.ai/)**

`@subako-ai/sdk`。加えて React バインディングと、agent
が操作するページ向けの既製 tool。

**[Python](https://pypi.org/project/subako/)**

`subako` — バックエンド、ジョブ、ワーカーのための非同期 client。

## TypeScript

```bash
pnpm add @subako-ai/sdk
```

サーバー側は Node 22 以降が必要です。同じパッケージはブラウザでも動きます。ESM のみで、ランタイム依存はありません。

この SDK は credential を境に API を 2 つに分けます。ひとつはバックエンド用の client で、API key を保持し session を作成します。もうひとつはブラウザ用で、[session token](/ja/quickstart) を保持し session の中の作業をすべて行います。どちらがどのルートに到達できるかは型が示すため、API key が誤ってページのコードに紛れ込むことはありません。

Session connection はログを読み、stream を開き、その両方を保ち続けます。接続が切れても自動で復帰し、中断したところから再開します — [Event のストリーミング](/ja/guides/streaming-events) にある再接続のロジックは、すでに組み込まれています。レンダラーに渡されるのは、ひとつのイミュータブルなスナップショットです — event、トランスクリプト、そして誰かの応答を待っている approval。

[Client tool](/ja/guides/client-tools) は、引数を zod あるいは Standard Schema に準拠した任意のライブラリで記述します。

### パッケージ

`@subako-ai/sdk` だけで API 全体をカバーします。残りは、agent が操作するページを作るためのものです。

| パッケージ | 内容 |
| --- | --- |
| `@subako-ai/sdk` | Client 本体。Session、ストリーミング、tool、エラー、ページネーション。 |
| `@subako-ai/react` | Session connection の上に載る provider と 4 つの hook。 |
| `@subako-ai/tools` | ページを操作する既製の tool — フォームの入力、送信、画面遷移。 |
| `@subako-ai/assistant-ui` | Session 上で動くチャット、あるいは自前のスレッドのためのランタイム。 |
| `@subako-ai/react-hook-form` | react-hook-form を form tool の仕様として扱うもの。 |
| `@subako-ai/react-router` | React Router を navigate tool の仕様として扱うもの。 |
| `@subako-ai/tanstack-router` | TanStack Router を navigate tool の仕様として扱うもの。 |

すべてのパッケージは Apache-2.0 で、version は揃えて付けられます。アップグレードはひとまとまりで行ってください。

[TypeScript SDK のドキュメント](https://typescript-sdk-docs.subako.ai/) に、クイックスタート、リファレンス、そしてバックエンドがブラウザ向けに token を発行する実例があります。

## Python

**uv**

```bash
uv add subako
```

**pip**

```bash
pip install subako
```

Python 3.12 以降が必要です。Client は非同期専用で、同期 API はありません。そのためバックエンド、ジョブ、ワーカーに置くものであり、上から下へ読み下すようなスクリプトのためのものではありません。

カバーする範囲は同じです — リソースごとの名前空間、型付きのエラー、list 呼び出しに対するカーソルページネーション、自動で再接続する session connection、そしてあなたのプロセスの関数を session に提供する tool client。二度実行したくない呼び出しには、冪等性キーとレシートが用意されています。

[PyPI の `subako`](https://pypi.org/project/subako/) に、インストール手順、必要要件、そしてバックエンドとフロントエンドを通した実例があります。

## どちらも使わない

SDK は便利さのためのものであって、必須の依存ではありません。API は素の HTTP と SSE であり、オペレーターの作業はどちらの SDK もなしに CLI だけで行えます。

**[API リファレンス](/ja/api)**

全エンドポイントと、稼働中のサーバーを呼び出す playground。

**[CLI リファレンス](/ja/cli)**

対象ごとにまとめた全コマンド。
