ListenHubSDKs & CLI

SDK と CLI

ListenHub API の公式 JavaScript/TypeScript SDK とコマンドラインツール、および使い分けの指針。

ListenHub は OpenAPI の上に 2 つの公式クライアントライブラリを提供しています:JavaScript/TypeScript の SDKコマンドラインツールです。どちらも同じエンドポイントにアクセスし、標準の { code, message, data } エンベロープを自動で展開し、429 のリトライも自動で処理します — HTTP API を直接呼ぶより、書く配線コードが少なくて済みます。

ツールを選ぶ

インストール

npm i @marswave/listenhub-sdk

ESM のみ対応。Node.js >= 20 が必要です。

npm i -g @marswave/listenhub-cli

listenhub バイナリをグローバルにインストールします。Node.js >= 20 が必要です。

どちらを使うべきか?

やりたいこと選ぶもの
音声、画像、動画を生成するプロダクト機能を作るSDK(サーバーには OpenAPIClient、ユーザー向けアプリには ListenHubClient
単発のジョブ、バッチ生成、CI/CD ステップをスクリプト化するCLI--json 出力を jq に流す
エンドポイント、パラメータ、正確なレスポンス構造を調べるOpenAPI リファレンス
AI エージェントやアシスタントから ListenHub を動かすMCP server

SDK と CLI は利便性のためのレイヤーです。これらでできることはすべて、OpenAPI に対する生の HTTP 呼び出しでも実現できます — すべてのエンドポイント、パラメータ、列挙値はリファレンスが正となります。

2 つの認証方式

どちらのクライアントも同じ 2 つの認証方式に対応しています。コードが動作する場所に応じて選んでください。

  • API キー — サーバー、スクリプト、CI 向け。キーは Authorization: Bearer $LISTENHUB_API_KEY として渡します。キーは listenhub.ai/settings/api-keys で作成します。SDK では OpenAPIClient、CLI では listenhub openapi … コマンドグループが対応します。
  • OAuth ログイン — 対話的な用途やユーザー向けの用途で、ログイン中のアカウントとして処理を実行する場合に使います。SDK では ListenHubClient、CLI では listenhub auth login が対応し、ブラウザを開いてトークンを ~/.config/listenhub/ 配下に保存します。

API キーはシークレットとして扱ってください。サーバーサイドに留め、ブラウザやモバイルクライアントのコードに含めて配布しないでください。ユーザー向けアプリでは OAuth を使い、各リクエストがユーザー自身のアカウントで実行されるようにしてください。

// Server-side, API key
import { OpenAPIClient } from '@marswave/listenhub-sdk';

const client = new OpenAPIClient({ apiKey: process.env.LISTENHUB_API_KEY });
const { items: speakers } = await client.listSpeakers({ language: 'en' });
# Same thing from the terminal
export LISTENHUB_API_KEY="lh_sk_..."
listenhub openapi speakers list --language en --json

エラー処理の概要

すべてのレスポンスは { "code": 0, "message": "", "data": { … } } に包まれています。code が 0 以外の場合はエラーです。

  • SDKcode 0 のときは data を展開し、それ以外の場合は ListenHubErrorstatuscoderequestId を含む)をスローします。429 の場合は Retry-After を読み取り、maxRetries(デフォルト 2)まで再試行します。client.apiky のエスケープハッチで、SDK がまだラップしていないエンドポイントにアクセスできます。
  • CLI — エラーは stderr に出力し、終了コードを使います:0 成功、1 エラー、2 認証、3 タイムアウト。長時間かかる生成タスクは 10 秒ごとにポーリングします。--no-wait を渡すと ID をすぐに返し、--timeout <s> で待機時間の上限を指定できます。

さらに読む

このページの内容