Apps e templates
Explore e execute apps publicados do Nodaro em TypeScript, leia o histórico de execuções, clone templates de workflow em um projeto e liste os tutoriais.
client.apps explora e executa apps publicados: workflows envolvidos em um formulário simples de entradas e saídas. client.templates explora o marketplace de templates e clona um template em um dos seus projetos, e client.tutorials lista os vídeos e os workflows de tutorial. Veja Apps e Tutoriais e templates para os conceitos.
Métodos
| Método | O que faz |
|---|---|
apps.list(params?) | Explora os apps publicados |
apps.get(slug) | Lê um app, com as entradas e saídas dele |
apps.run(slug, inputs?, opts?) | Executa um app |
apps.listRuns(slug, params?) | Lista as suas execuções de um app |
apps.getRun(slug, runId) | Lê uma execução |
apps.deleteRun(slug, runId) | Arquiva uma execução |
templates.browse(params?) | Explora o marketplace de templates |
templates.get(slug) | Lê um template, com o workflow dele |
templates.clone(slug, params) | Copia um template para um projeto |
tutorials.list() | Lista os tutoriais por categoria |
client.apps
list() e get() são públicos. run() e o histórico de execuções agem como o usuário conectado que faz a chamada.
apps.list(params?)
Explora os apps publicados, uma página por vez.
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 })Um PublishedApp tem id, slug, name, description, creatorId, creatorName, thumbnailUrl, category, isFeatured, runCount, createdAt e updatedAt.
apps.get(slug)
Lê um app, com o inputSchema, os campos que os usuários finais preenchem, e outputs, o que o app retorna.
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?)
Executa um app e retorna na hora com { executionId, status, runId? }. Consulte periodicamente client.executions.get(executionId) para obter o resultado.
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 é uma opção avançada. Ela pode definir, por exemplo, o texto antes e depois de um nó (promptPrefix e promptSuffix). Ela não pode definir o destino de um nó de saída, como a URL de um nó Saída de webhook (Webhook Output), uma conta de publicação ou o alvo de um scraper. Uma substituição assim é recusada com 400 locked_field.
apps.listRuns(slug, params?)
Lista as suas execuções de um app, uma página por vez.
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)Um AppRun tem id, appSlug, executionId, status (pending, running, completed, failed ou cancelled), inputs, outputs (cada um no formato { nodeId, type, url?, text? }), startedAt e finishedAt.
apps.getRun(slug, runId)
Lê uma execução de um app.
getRun(slug: string, runId: string): Promise<{ data: AppRun }>Prop
Type
const { data: run } = await client.apps.getRun("pro-headshot", runId)apps.deleteRun(slug, runId)
Arquiva uma execução. Restaurar uma execução e excluí-la de forma permanente só é possível no app do Nodaro, então um script não consegue destruir dados.
deleteRun(slug: string, runId: string): Promise<{ success: true; archived: true }>Prop
Type
await client.apps.deleteRun("pro-headshot", runId)client.templates
O marketplace de templates, público de propósito: explore-o, leia um template com o workflow inteiro e clone-o no seu projeto sem custo.
templates.browse(params?)
Explora o marketplace, uma página por vez (GET /v1/templates/browse). Não é preciso entrar na conta.
browse(params?: BrowseTemplatesParams): Promise<{ data: TemplateBrowseCard[]; nextCursor: string | null }>Prop
Type
const page = await client.templates.browse({ sort: "popular", search: "trailer" })templates.get(slug)
Lê um template público com o snapshot completo do workflow: snapshotNodes, snapshotEdges e 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)Lança NotFoundError quando o slug é desconhecido ou quando o template não está listado ou está inativo.
templates.clone(slug, params)
Copia um template para um dos seus projetos como um novo workflow (POST /v1/templates/:slug/clone). Não custa créditos.
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()
Lista todas as categorias de tutorial, com os vídeos e os workflows de tutorial de cada uma (GET /v1/tutorials). É público e somente leitura.
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)
}Cada categoria tem id, name, slug, sortOrder, videos e flows. Um vídeo tem um title, uma videoUrl e uma thumbnailUrl. Um flow é um template marcado como tutorial: tem um title, uma complexity, estimatedCredits, os tipos de nó e os modelos que usa, e um slug que você pode passar para templates.get() e templates.clone().
Perguntas frequentes
Páginas relacionadas
Apps (miniapps)
Workflows e projetos
Jobs e execuções
Tutoriais e templates
Última atualização
Executar nós
Execute qualquer nó do Nodaro em TypeScript, sem workflow: descubra os tipos, inicie execuções, aguarde resultados e passe referências e direção de câmera.
LLM e Reduce
Obtenha JSON validado de um modelo de linguagem com client.llm e use client.reduce para escolher o melhor de vários resultados, votar, juntar ou mesclar.