---
sidebar:
  order: 2
title: TypeScript SDK
description: >-
  Используйте SDK из репозитория для типизированного чтения, подтверждённых изменений и загрузки локальных медиа.
---

`@influence/sdk` пока является закрытым пакетом в репозитории и не опубликован в npm. Эти примеры предназначены для проектов, которым доступен этот пакет из репозитория. Для независимого клиента используйте [HTTP API](/ru/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 проверяет запросы и ответы и выбрасывает `InfluenceSdkError` при ошибках HTTP и инструментов.

`uploadMedia(file, { clientKey, name, contentType, sizeBytes })` принимает `Blob` и выполняет подтверждённую multipart-передачу. Повторяйте попытку с тем же файлом и `clientKey`. Читайте `mediaUploadGet`, пока итоговый медиафайл не будет готов; обрабатываемая загрузка ещё не готова к публикации. Соблюдайте отдельные [правила проверки перед публикацией и повторных попыток](/ru/developers/http-api).
