---
sidebar:
  order: 2
title: "SDK TypeScript"
description: "Gunakan SDK repositori untuk bacaan berjenis, perubahan disahkan dan muat naik setempat."
---

`@influence/app-sdk` kini ialah pakej persendirian repositori, bukan pakej yang diterbitkan untuk pemasangan npm. Contoh ini memerlukan pakej tersebut dalam ruang kerja pembangunan. Untuk klien berasingan, gunakan [API HTTP](/ms/developers/http-api).

Nyatakan origin yang dipercayai secara jelas dan muatkan kunci daripada persekitaran rahsia proses:

```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);
```

Gunakan `listTools()` untuk penemuan dan `callTool(name, input)` untuk bacaan. Perubahan menggunakan `prepareTool(name, input)`, kemudian `confirmTool(name, input, confirmationCapability, { idempotencyKey })`. Kekalkan nilai yang sama selepas respons yang tidak pasti. SDK mengesahkan permintaan dan respons serta melontarkan `InfluenceSdkError` apabila HTTP atau alat gagal.

`uploadMedia(file, { clientKey, name, contentType, sizeBytes })` menerima `Blob` dan mengurus pemindahan berbilang bahagian yang disahkan. Cuba semula dengan fail dan `clientKey` yang sama. Baca `mediaUploadGet` sehingga aset sedia; muat naik yang sedang diproses belum sedia untuk diterbitkan. Ikut [peraturan semakan dan cubaan semula](/ms/developers/http-api).
