---
sidebar:
  order: 2
title: "TypeScript SDK"
description: "リポジトリのSDKで型付きの読み取り、変更の確定、ローカルファイルのアップロードを行います。"
---

`@influence/app-sdk`は現在、リポジトリ内の非公開パッケージです。npmから公開インストールできるパッケージではありません。以下の例には、開発ワークスペース内でこのパッケージが利用できる必要があります。独立したクライアントには[HTTP API](/ja/developers/http-api)を使ってください。

信頼できるオリジンを明示し、プロセスのシークレット環境からキーを読み込みます：

```ts
import { InfluenceClient } from "@influence/app-sdk/client";

const accessToken = process.env.PUBLISH_API_TOKEN;
if (!accessToken) throw new Error("PUBLISH_API_TOKEN");

const client = new InfluenceClient({
  baseUrl: "https://influence.so",
  accessToken,
});

const catalog = await client.listTools();
const accounts = await client.callTool("accountList", {});
console.log(catalog.tools, accounts.output);
```

`listTools()`でツールを検出し、`callTool(name, input)`で読み取ります。変更には`prepareTool(name, input)`、続いて`confirmTool(name, input, confirmationCapability, { idempotencyKey })`を使います。結果が不明な場合は同じ値を保持してください。SDKはリクエストとレスポンスを検証し、HTTPやツールの失敗時に`InfluenceSdkError`をスローします。

`uploadMedia(file, { clientKey, name, contentType, sizeBytes })`は`Blob`を受け取り、確認を伴う分割転送を処理します。再試行には同じファイルと`clientKey`を使います。アセットの準備が整うまで`mediaUploadGet`で状態を確認してください。処理中のアップロードは公開できる状態ではありません。[レビューと再試行のルール](/ja/developers/http-api)に従ってください。
