콘텐츠로 이동

TypeScript SDK

@anote-ai/sdk는 Anote REST API를 위한 타입이 지정된 TypeScript/JavaScript 클라이언트입니다. CLI나 웹 앱을 통해서가 아니라 스크립트, 백엔드 서비스 또는 자신의 앱에서 Anote를 프로그래밍적으로 호출하고 싶을 때 사용하세요.

로컬 백엔드와의 통신

기본적으로 클라이언트는 https://api.anote.ai를 가리킵니다. 이 리포지토리에서 백엔드를 로컬로 실행하는 경우(docker compose up 또는 make dev-backend), baseUrl: "http://localhost:5050" (포트 오버라이드를 사용하지 않는 경우 :5000)을 전달하세요 — 시작하기 → 구성을 참조하세요.

필요한 사항

  • Node.js 18+
  • Anote 계정 ( POST /auth/register 또는 웹 앱의 등록 페이지를 통해 등록)
  • API 키 (아래 2단계)

1. 설치

bash npm install @anote-ai/sdk

2. API 키 받기

API 키에 대한 설정 UI는 아직 없으므로, 백엔드에 직접 요청하여 생성하세요. 먼저 로그인하여 JWT를 얻고, 이를 사용하여 키를 생성합니다:

```bash

JWT를 얻기 위해 로그인

curl -X POST http://localhost:5050/auth/login \ -H "Content-Type: application/json" \ -d '{"email": "you@example.com", "password": "..."}'

→ { "access_token": "eyJ..." }

JWT를 사용하여 API 키 생성

curl -X POST http://localhost:5050/api/user/api-keys \ -H "Authorization: Bearer eyJ..."

→ { "key": "ak-..." }

```

ak-... 값을 저장하세요 — 생성 시에만 한 번 반환됩니다.

3. 클라이언트 초기화

```ts import { AnoteClient } from "@anote-ai/sdk";

const client = new AnoteClient({ apiKey: "ak-...", baseUrl: "http://localhost:5050", // https://api.anote.ai를 사용하려면 생략 }); ```

apiKey는 유일한 필수 옵션입니다. 프로덕션 API를 가리킬 때는 baseUrl을 생략하세요.

4. 첫 번째 메시지 보내기

```ts const { result, usage } = await client.chat("이 코드베이스를 설명해 주세요");

console.log(result); console.log(사용된 ${usage.inputTokens} 입력 / ${usage.outputTokens} 출력 토큰); ```

chat()은 비스트리밍 호출입니다 — 전체 응답을 기다리며, 이는 스크립팅 및 자동화에 적합합니다. 두 번째 인수로 cwd, model 또는 tools를 전달하여 작업 디렉토리, 모델 선택 또는 AI가 사용할 수 있는 도구를 제한할 수 있습니다:

ts await client.chat("이 파일의 TODO 목록 나열", { cwd: "/path/to/project", model: "claude-sonnet-4-6", tools: ["Read", "Grep"], });

일반 작업

과거 세션 나열 및 검사

ts const sessions = await client.listSessions(); const { history } = await client.getSessionMessages(sessions[0].sessionId);

세션 기록 검색

ts const { results } = await client.search("인증 로직");

사용량 및 쿼타 확인

ts const usage = await client.getUsage(); console.log(`${usage.remaining.requests} 요청이 남았습니다.`);

세션을 읽기 전용 링크로 공유

ts const { shareUrl } = await client.shareSession(sessions[0].sessionId);

오류 처리

모든 비 2xx 응답은 AnoteError를 발생시키며, 이는 HTTP 상태 및 파싱된 응답 본문을 포함합니다:

```ts import { AnoteClient, AnoteError } from "@anote-ai/sdk";

try { await client.chat("..."); } catch (err) { if (err instanceof AnoteError) { console.error(err.status, err.message); // 예: 429, "월간 쿼타 초과" } } ```

서버 상태 확인 (인증 필요 없음)

ts const health = await client.health();

API 참조

new AnoteClient(options)

옵션 유형 필수 설명
apiKey string 2단계에서 받은 API 키, ak-로 시작
baseUrl string 서버 URL (기본값: https://api.anote.ai)

메서드

메서드 설명
chat(message, options?) 메시지를 보내고, AI의 완전한 응답을 받습니다
listSessions() 모든 채팅 세션을 나열합니다
getSessionMessages(id) 세션의 메시지 기록을 가져옵니다
deleteSession(id) 세션을 삭제합니다
shareSession(id) 공유 가능한 읽기 전용 링크를 생성합니다
search(query, limit?) 세션 간의 전체 텍스트 검색
getUsage() 현재 월 사용량 + 쿼타
health() 서버 상태 확인 (인증 필요 없음)

다음 단계