---
sidebar:
  order: 2
title: TypeScript SDK
description: 使用儲存庫內的 SDK，進行型別化讀取、經確認的寫入與本機媒體上傳。
---

`@influence/sdk` 目前是私有儲存庫套件，尚未發布至 npm。這些範例適用於可使用該工作區套件的專案。若要建立獨立用戶端，請使用 [HTTP API](/zh-Hant-TW/developers/http-api)。

明確提供可信任的來源網址，並從程序存放機密值的環境變數載入金鑰：

```ts
import { InfluenceClient } from "@influence/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`，直到最終素材就緒；仍在處理中的上傳檔案不能用於發布。請遵守另外適用的[發布審核與重試規則](/zh-Hant-TW/developers/http-api)。
