---
sidebar:
  order: 2
title: SDK TypeScript
description: >-
  Dùng SDK trong kho mã cho thao tác đọc có kiểu dữ liệu, thao tác ghi có xác nhận và tải tệp đa phương tiện cục bộ lên.
---

`@influence/sdk` hiện là gói riêng trong kho mã, chưa phải gói cài đặt được công bố trên npm. Các ví dụ này áp dụng cho dự án có sẵn gói đó từ kho mã. Với ứng dụng khách độc lập, dùng [API HTTP](/vi/developers/http-api).

Cung cấp rõ địa chỉ gốc đáng tin cậy và nạp khóa từ môi trường lưu bí mật của tiến trình:

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

Dùng `listTools()` để khám phá và `callTool(name, input)` cho công cụ được danh mục ghi nhận là không cần xác nhận, bao gồm tiếp tục lần tải lên đã được cấp quyền. Hành động cần xác nhận dùng `prepareTool(name, input)`, sau đó là `confirmTool(name, input, confirmationCapability, { idempotencyKey })`. Giữ nguyên đầu vào, giá trị confirmationCapability và khóa sau phản hồi chưa rõ kết quả. SDK kiểm tra yêu cầu và phản hồi, rồi ném `InfluenceSdkError` khi có lỗi HTTP hoặc lỗi công cụ.

`uploadMedia(file, { clientKey, name, contentType, sizeBytes })` nhận `Blob` và xử lý việc chuyển multipart có xác nhận. Thử lại cùng tệp với cùng `clientKey`. Đọc `mediaUploadGet` đến khi tài nguyên cuối cùng sẵn sàng; tệp đang xử lý chưa sẵn sàng để đăng. Tuân theo [quy tắc riêng về xem lại để đăng và thử lại](/vi/developers/http-api).
