Nodaro ドキュメント
ドキュメントノードリファレンスモデルAI エージェント(MCP)開発者向けセルフホスティングリサーチ
TypeScript SDK

モデルとクレジット

client.models で Nodaro インスタンスが提供する AI モデルを一覧表示し、client.credits でクレジット残高を確認して、実行前にモデルの料金を調べます。

client.models は、Nodaro インスタンスが提供する AI モデルのカタログを返し、client.credits はクレジット残高と、任意のモデルの料金を返します。この 2 つを組み合わせて使うと、ユーザーが選べるモデルと各実行の料金をあわせて表示できます。これらのメソッドは、クレジット REST API と同じエンドポイントを呼び出します。料金と残高があるのは Nodaro Cloud だけで、セルフホスティングの Community エディションと Business エディションにはクレジットの仕組みがありません。クレジットを参照してください。

メソッド

メソッド内容
models.list(opts?)モデルを、種類と開発元ごとにグループ化して一覧表示します
credits.balance()クレジット残高とティアを読み取ります
credits.modelCosts(ids)最大 50 件のモデルまたはバリアントのクレジット料金を調べます

client.models

models.list(opts?)

モデルのカタログを返します(GET /v1/models)。種類(画像、動画、オーディオ)と開発元ごとにグループ化されています。各モデルには、その機能、Nodaro Cloud でのクレジット料金、短いプロンプトのコツが含まれます。このエンドポイントは公開されており、サーバーはレスポンスを 5 分間キャッシュします。MCP の list_models ツールも、同じデータを返します。

list(opts?: {
  kind?: "image" | "video" | "audio"
  mode?: string
  family?: string
  featuredOnly?: boolean
}): Promise<ModelsListResult>

Prop

Type

const catalog = await client.models.list({ kind: "video", mode: "i2v" })

for (const section of catalog.sections) {
  for (const family of section.families) {
    for (const model of family.models) {
      console.log(family.family, model.id, model.durations, model.pricing?.[0]?.credits)
    }
  }
}

結果には、種類ごとの sections(それぞれにモデルの families を持ちます)、よくある用途向けのモデル ID のリストである recommendations、totalModels が含まれます。各モデルには、次のフィールドがあります。

フィールド型説明
idstringモデル ID です。ノード実行の provider パラメーターに使います。
label、descriptionstring表示名と短い説明です。
modesstring[]モデルが何をするかを示します。t2i、i2i、t2v、i2v などです。
useCasesstring[]そのモデルに向いている用途です。
aspectRatios、resolutions、qualities、durations配列モデルが受け付ける値です。該当する場合のみ。
featuresstring[]追加の機能です。
pricing{ identifier, credits, note? }[]各バリアントのクレジット料金です。Nodaro Cloud のみ。
featuredbooleanおすすめのモデルかどうかです。
promptTipsstring[]そのモデル向けの短いプロンプトのコツです。
doctrineCoveredbooleanNodaro が、そのモデルのファミリーについて出典のあるプロンプトのガイダンスを用意している場合にのみ true です。「開発元のガイダンス」バッジは、これが true の場合にのみ表示してください。

同じカタログは、モデルのページにもあります。どのモデルを使うかについては、モデルの選び方を参照してください。

client.credits

credits.balance()

クレジット残高とティアを返します(GET /v1/user/credits)。ログインしているユーザーがいない場合は、UnauthorizedError をスローします。

balance(): Promise<UserBalance>
const balance = await client.credits.balance()
console.log(`${balance.total} credits (${balance.effectiveTier})`)
フィールド型説明
totalnumber今すぐ使えるクレジットです。
subscriptionnumber現在のサブスクリプション期間分のクレジットです。
topupnumber個別に購入してチャージしたクレジットです。
dailySpentnumber本日使用したクレジットです。
dailyLimitnumber | null1 日の利用上限です。上限がない場合は null です。
monthlyAllocationnumber請求期間ごとに付与されるクレジットです。
tierstring保存されているサブスクリプションのティアです。"free" や "pro" などです。
effectiveTierstring実際に適用されているティアです。"payg" は従量課金を意味し、サブスクリプションはなくても購入したクレジットがあり、すべてのモデルを使え、透かしも 1 日の上限もありません。
featuresRecord<string, unknown>そのティアの機能です。
periodEndstring | null請求期間の終了日で、ISO 8601 形式の日付です。
appCreditsAllowancenumber無料ティアで、アプリの実行によって得られるクレジットです。
externalWallet{ available: number | null }デプロイ環境が共有の外部ウォレットを使っている場合にのみ含まれます。null は金額が取得できないことを意味します。この場合、代わりに total を表示しないでください。外部ウォレットを参照してください。

何を表示するか決める際は、tier より effectiveTier を優先してください。

credits.modelCosts(ids)

モデルとそのバリアントのクレジット料金を、1 回の呼び出しでまとめて調べます(POST /v1/credits/model-costs)。確認されるのは、最初の 50 件までの識別子です。

modelCosts(ids: string[]): Promise<{
  data: Record<string, number>
  missing: string[]
  errors: string[]
}>

Prop

Type

const { data, missing } = await client.credits.modelCosts([
  "nano-banana-pro",
  "nano-banana-pro:4K",
  "seedance-2-fast:8s:720p",
])
console.log(data["nano-banana-pro:4K"])
if (missing.length) console.warn("No price for:", missing)
  • data には、料金が付いている各識別子と、そのクレジット料金の対応が入ります。
  • missing には、料金がない識別子が列挙されます。これらにはダッシュを表示してください。
  • errors には、調べるのに失敗した識別子が列挙されます。それ以外の料金は、そのまま返されます。

各モデルの識別子は、models.list() の pricing フィールドと、各モデルのページにあります。品質、解像度、長さなどの設定によって料金が変わるため、実行で使うバリアントを指定してください。実行時の料金は、実行が始まるときにもう一度確認されるため、この呼び出しはあくまで見積もりです。

モデルと料金をあわせて表示する

1 つのノード向けに、各モデルの料金を隣に添えたモデルピッカーを作ります。

const { data: node } = await client.nodes.get("generate-video")
const { data: prices } = await client.credits.modelCosts(node.providers ?? [])

const options = (node.providers ?? []).map((id) => ({
  id,
  price: prices[id] ?? null, // null: no price on this instance
}))

ノードのデフォルトモデルを使うには、実行時に provider を省略します。ユーザーがモデルを選んだ場合は、その ID を provider として client.nodes.runAndWait() に送ります。

よくある質問

最終更新

目次