モデルとクレジット
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 が含まれます。各モデルには、次のフィールドがあります。
| フィールド | 型 | 説明 |
|---|---|---|
id | string | モデル ID です。ノード実行の provider パラメーターに使います。 |
label、description | string | 表示名と短い説明です。 |
modes | string[] | モデルが何をするかを示します。t2i、i2i、t2v、i2v などです。 |
useCases | string[] | そのモデルに向いている用途です。 |
aspectRatios、resolutions、qualities、durations | 配列 | モデルが受け付ける値です。該当する場合のみ。 |
features | string[] | 追加の機能です。 |
pricing | { identifier, credits, note? }[] | 各バリアントのクレジット料金です。Nodaro Cloud のみ。 |
featured | boolean | おすすめのモデルかどうかです。 |
promptTips | string[] | そのモデル向けの短いプロンプトのコツです。 |
doctrineCovered | boolean | Nodaro が、そのモデルのファミリーについて出典のあるプロンプトのガイダンスを用意している場合にのみ 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})`)| フィールド | 型 | 説明 |
|---|---|---|
total | number | 今すぐ使えるクレジットです。 |
subscription | number | 現在のサブスクリプション期間分のクレジットです。 |
topup | number | 個別に購入してチャージしたクレジットです。 |
dailySpent | number | 本日使用したクレジットです。 |
dailyLimit | number | null | 1 日の利用上限です。上限がない場合は null です。 |
monthlyAllocation | number | 請求期間ごとに付与されるクレジットです。 |
tier | string | 保存されているサブスクリプションのティアです。"free" や "pro" などです。 |
effectiveTier | string | 実際に適用されているティアです。"payg" は従量課金を意味し、サブスクリプションはなくても購入したクレジットがあり、すべてのモデルを使え、透かしも 1 日の上限もありません。 |
features | Record<string, unknown> | そのティアの機能です。 |
periodEnd | string | null | 請求期間の終了日で、ISO 8601 形式の日付です。 |
appCreditsAllowance | number | 無料ティアで、アプリの実行によって得られるクレジットです。 |
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() に送ります。
よくある質問
関連ページ
ノードの実行
クレジット
モデルの選び方
Nodaro の AI モデル
クレジット
最終更新