---
sidebar:
  order: 2
title: TypeScript SDK
description: 저장소 SDK로 타입이 지정된 조회, 확인 후 변경 적용 및 로컬 미디어 업로드를 처리하세요.
---

`@influence/sdk`는 현재 비공개 저장소 패키지이며 npm으로 설치하도록 배포되지 않았습니다. 이 예시는 해당 워크스페이스 패키지를 사용할 수 있는 프로젝트에 적용됩니다. 독립적인 클라이언트에서는 [HTTP API](/ko/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`으로 조회하세요. 처리 중인 업로드는 아직 게시할 수 없습니다. 별도로 적용되는 [게시 검토 및 재시도 규칙](/ko/developers/http-api)을 따르세요.
