アプリとテンプレート
TypeScript から、公開された Nodaro のアプリを閲覧して実行し、実行履歴を読み取り、ワークフローのテンプレートをプロジェクトに複製し、チュートリアルを一覧表示します。
client.apps は、公開されたアプリ(入力と出力のシンプルなフォームで包んだワークフロー)を閲覧し、実行します。client.templates はテンプレートマーケットプレイスを閲覧し、テンプレートをあなたのプロジェクトの 1 つに複製します。client.tutorials は、チュートリアル動画とチュートリアルワークフローを一覧表示します。概念については、アプリとチュートリアルとテンプレートを参照してください。
メソッド
| メソッド | 内容 |
|---|---|
apps.list(params?) | 公開されたアプリを閲覧します |
apps.get(slug) | アプリを、その入力と出力とともに読み取ります |
apps.run(slug, inputs?, opts?) | アプリを実行します |
apps.listRuns(slug, params?) | アプリの自分の実行を一覧表示します |
apps.getRun(slug, runId) | 1 件の実行を読み取ります |
apps.deleteRun(slug, runId) | 実行をアーカイブします |
templates.browse(params?) | テンプレートマーケットプレイスを閲覧します |
templates.get(slug) | テンプレートを、そのワークフローとともに読み取ります |
templates.clone(slug, params) | テンプレートをプロジェクトに複製します |
tutorials.list() | チュートリアルをカテゴリー別に一覧表示します |
client.apps
list() と get() は公開されています。run() と実行履歴は、ログイン中の呼び出し元として動作します。
apps.list(params?)
公開されたアプリを、ページ単位で閲覧します。
list(params?: { search?: string; category?: string; limit?: number; cursor?: string }): Promise<{
data: PublishedApp[]
nextCursor?: string | null
}>Prop
Type
const { data: apps, nextCursor } = await client.apps.list({ search: "headshot", limit: 20 })PublishedApp は、id、slug、name、description、creatorId、creatorName、thumbnailUrl、category、isFeatured、runCount、createdAt、updatedAt を持ちます。
apps.get(slug)
1 つのアプリを、エンドユーザーが入力するフィールドである inputSchema と、返す内容である outputs とともに読み取ります。
get(slug: string): Promise<{ data: PublishedAppDetail }>Prop
Type
const { data: app } = await client.apps.get("pro-headshot")
console.log(app.inputSchema, app.outputs) // outputs: [{ nodeId, label, type }]apps.run(slug, inputs?, opts?)
アプリを実行し、{ executionId, status, runId? } ですぐに返ります。結果は client.executions.get(executionId) をポーリングして取得します。
run(slug: string, inputs?: Record<string, unknown>, opts?: {
inputOverrides?: Record<string, Record<string, unknown>>
}): Promise<{ executionId: string; status: "pending" | "running"; runId?: string }>Prop
Type
const { executionId } = await client.apps.run("pro-headshot", { photo: photoUrl })
// Add hidden text before the app's prompt, for this run only
await client.apps.run(
"pro-headshot",
{ photo: photoUrl },
{ inputOverrides: { n1: { promptPrefix: "Studio portrait of" } } },
)inputOverrides は高度なオプションです。たとえば、ノードのプロンプトの前後のテキスト(promptPrefix と promptSuffix)を設定できます。Webhook 出力(Webhook Output)の URL や、公開先のアカウント、スクレイパーの対象など、出力ノードの送信先は設定できません。そのようなオーバーライドは、400 locked_field で拒否されます。
apps.listRuns(slug, params?)
アプリの自分の実行を、ページ単位で一覧表示します。
listRuns(slug: string, params?: { limit?: number; cursor?: string }): Promise<{ data: AppRun[]; nextCursor?: string | null }>Prop
Type
const { data: runs } = await client.apps.listRuns("pro-headshot", { limit: 10 })
for (const run of runs) console.log(run.status, run.outputs)AppRun は、id、appSlug、executionId、status(pending、running、completed、failed、cancelled のいずれか)、inputs、outputs(それぞれ { nodeId, type, url?, text? })、startedAt、finishedAt を持ちます。
apps.getRun(slug, runId)
アプリの 1 件の実行を読み取ります。
getRun(slug: string, runId: string): Promise<{ data: AppRun }>Prop
Type
const { data: run } = await client.apps.getRun("pro-headshot", runId)apps.deleteRun(slug, runId)
実行をアーカイブします。実行の復元と完全な削除は、Nodaro アプリでしかできないため、スクリプトがデータを破壊することはありません。
deleteRun(slug: string, runId: string): Promise<{ success: true; archived: true }>Prop
Type
await client.apps.deleteRun("pro-headshot", runId)client.templates
テンプレートマーケットプレイスは、設計上、公開されています。閲覧したり、ワークフロー全体を含むテンプレートを読み取ったり、無料で自分のプロジェクトに複製したりできます。
templates.browse(params?)
マーケットプレイスを、ページ単位で閲覧します(GET /v1/templates/browse)。ログインは不要です。
browse(params?: BrowseTemplatesParams): Promise<{ data: TemplateBrowseCard[]; nextCursor: string | null }>Prop
Type
const page = await client.templates.browse({ sort: "popular", search: "trailer" })templates.get(slug)
1 つの公開テンプレートを、そのワークフローのスナップショット全体(snapshotNodes、snapshotEdges、snapshotSettings)とともに読み取ります(GET /v1/templates/:slug)。
get(slug: string): Promise<Template>Prop
Type
const template = await client.templates.get("noir-trailer")
console.log(template.snapshotNodes.length)スラッグが不明、非掲載、無効のいずれかの場合、NotFoundError をスローします。
templates.clone(slug, params)
テンプレートを、新しいワークフローとしてあなたのプロジェクトの 1 つに複製します(POST /v1/templates/:slug/clone)。クレジットはかかりません。
clone(slug: string, params: { projectId: string; name?: string }): Promise<{ workflowId: string; projectId: string }>Prop
Type
const { workflowId } = await client.templates.clone("noir-trailer", { projectId })
await client.workflows.run(workflowId)client.tutorials
tutorials.list()
すべてのチュートリアルのカテゴリーを、そのチュートリアル動画とチュートリアルワークフローとともに一覧表示します(GET /v1/tutorials)。公開されていて、読み取り専用です。
list(): Promise<{ categories: TutorialCategory[] }>const { categories } = await client.tutorials.list()
for (const category of categories) {
console.log(category.name, category.videos.length, category.flows.length)
}各カテゴリーは、id、name、slug、sortOrder、videos、flows を持ちます。動画は title、videoUrl、thumbnailUrl を持ちます。フローは、チュートリアルとしてマークされたテンプレートです。title、complexity、estimatedCredits、使用するノードタイプとモデル、そして templates.get() と templates.clone() に渡せる slug を持ちます。
よくある質問
関連ページ
アプリ(ミニアプリ)
ワークフローとプロジェクト
ジョブと実行
チュートリアルとテンプレート
最終更新