# Developers

> Build on Nodaro with the REST API, the TypeScript SDK and the CLI. Use API tokens or OAuth, generate clients from OpenAPI and connect AI agents over MCP.

Source: https://nodaro.ai/docs/developers

Nodaro is built **REST-first**: the Nodaro editor, the TypeScript SDK and the CLI all talk to the same HTTP API, so anything you do in Nodaro can be automated with a bearer token and a JSON request. This section documents that API, its clients, the ways to authenticate, and the ways to put Nodaro inside your own product. AI assistants reach the same workflows and models through the [MCP server](https://nodaro.ai/docs/mcp).

## Three ways in

| Surface | Install | Use it for |
| --- | --- | --- |
| [REST API](https://nodaro.ai/docs/developers/api) | Nothing: send HTTPS requests to `https://app.nodaro.ai/v1/` | Any language, any platform |
| [TypeScript SDK](https://nodaro.ai/docs/developers/sdk) | `npm install @nodaro/sdk` | Typed code in Node, browsers, React Native and edge runtimes |
| [CLI](https://nodaro.ai/docs/developers/cli) | `npm install -g @nodaro/cli`, or a standalone binary | Terminals, cron jobs and CI pipelines |

The SDK has no dependencies: it uses only `fetch` and `URL`, so it runs in Node 18 or newer, in browsers, in React Native, and on Cloudflare Workers, Deno and Bun. The CLI is a thin wrapper around the SDK: anything the CLI does, the SDK does too.

The same call in each of them, running a saved workflow:

**curl**

```bash
curl -s -X POST https://app.nodaro.ai/v1/workflows/8c2d7f1e-3a4b-4c5d-9e6f-7a8b9c0d1e2f/run \
  -H "Authorization: Bearer $NODARO_API_KEY"
# {"executionId":"3f9e2b1a-…","status":"pending"}
```

**TypeScript SDK**

```ts

const client = createClient({
baseUrl: 'https://app.nodaro.ai',
auth: new StaticTokenAuth(process.env.NODARO_API_KEY!),
})

const { executionId } = await client.workflows.run('8c2d7f1e-3a4b-4c5d-9e6f-7a8b9c0d1e2f')
```

**CLI**

```bash
nodaro auth login --token "$NODARO_API_KEY"
nodaro workflows run 8c2d7f1e-3a4b-4c5d-9e6f-7a8b9c0d1e2f --watch
```

Three things work the same way everywhere:

- **Run anything.** Run a saved [workflow](https://nodaro.ai/docs/developers/api/workflows), a published [app](https://nodaro.ai/docs/developers/embed/miniapps), or a single [node](https://nodaro.ai/docs/developers/api/nodes) with `POST /v1/<node-type>`, without building a workflow.
- **Poll for results.** Generations take seconds to minutes, so a run returns an id at once and you poll its [job](https://nodaro.ai/docs/developers/api/jobs) or [execution](https://nodaro.ai/docs/developers/api/executions). The SDK and the CLI can wait for you.
- **Discover without a token.** `GET /v1/nodes` and `GET /v1/models` list every node and model, with their settings and credit prices.

## Authenticate

| Credential | Format | Use it when |
| --- | --- | --- |
| Personal API token | `ndr_…` | Your own server, script or CI job calls Nodaro for your account. Create it in **Settings › API Tokens**. |
| OAuth access token | `ndr_app_…` | Your product runs workflows on your users' own Nodaro accounts, with their consent. |
| Session JWT | A JWT | You run the self-hosted Community Edition for yourself. |

API tokens are available on Nodaro Cloud and the Business edition. A self-hosted install can also run its generations on Nodaro Cloud with a personal API token, without OAuth. Read [Authentication](https://nodaro.ai/docs/developers/api/authentication) and [OAuth apps](https://nodaro.ai/docs/developers/oauth).

## OpenAPI spec

The server publishes an OpenAPI 3.1 spec of the API's core at `https://app.nodaro.ai/v1/openapi.json`. Generate a typed client for Go, Rust, Python or any other language from it. See [OpenAPI spec](https://nodaro.ai/docs/developers/api/openapi).

## For AI agents

- **MCP.** Add `https://mcp.nodaro.ai/mcp` as a custom connector in Claude, ChatGPT, Cursor and other MCP clients. The assistant signs in with your Nodaro account and gets tools to generate media, build and run workflows, and manage characters and other assets. See [MCP](https://nodaro.ai/docs/mcp).
- **Agent skills.** Skill files teach coding assistants such as Claude Code and Cursor how to use the SDK and how to build an OAuth app. See [Agent skills](https://nodaro.ai/docs/developers/agent-skills).

## Put Nodaro in your product

- **Embed an app.** Run a published Nodaro app from your own web or mobile interface. See [Embeds](https://nodaro.ai/docs/developers/embed).
- **Build the pickers yourself.** The Creative Controls catalogs ship as data in `@nodaro/shared`, so your app can offer the same choices and write the same prompts. See [Picker catalogs](https://nodaro.ai/docs/developers/picker-catalogs).
- **Sign users in with your identity provider.** See [SSO](https://nodaro.ai/docs/developers/sso).
- **Charge through your own wallet.** A deployment can authorize each customer's spending through its own wallet. See [External wallet](https://nodaro.ai/docs/developers/external-wallet).

## Explore the developer docs

  - [REST API](https://nodaro.ai/docs/developers/api): 
Run workflows and nodes, poll jobs, upload media and manage assets over HTTPS.
  
  - [TypeScript SDK](https://nodaro.ai/docs/developers/sdk): 
@nodaro/sdk: typed methods, typed errors and polling helpers for Node, browsers and edge runtimes.
  
  - [CLI](https://nodaro.ai/docs/developers/cli): 
@nodaro/cli: run workflows, apps and single nodes from a terminal or a CI job.
  
  - [OAuth apps](https://nodaro.ai/docs/developers/oauth): 
Let your users connect their own Nodaro accounts to your product, with scoped tokens.
  
  - [SSO](https://nodaro.ai/docs/developers/sso): 
Let a trusted identity provider sign users in to your Nodaro install.
  
  - [Picker catalogs](https://nodaro.ai/docs/developers/picker-catalogs): 
Build the Creative Controls pickers in your own app from the published catalogs.
  
  - [Embeds](https://nodaro.ai/docs/developers/embed): 
Run a published app from your own interface, or embed the interactive 3D preview.
  
  - [External wallet](https://nodaro.ai/docs/developers/external-wallet): 
Authorize each customer's spending through your deployment's own wallet.
  
  - [Agent skills](https://nodaro.ai/docs/developers/agent-skills): 
Skill files that teach coding assistants to use the SDK and build OAuth apps.

## Frequently asked questions

### Does Nodaro have an API?

Yes. The Nodaro REST API at https://app.nodaro.ai/v1/ runs workflows and single nodes, reports job status, stores your media and manages your characters and other assets. It takes JSON and a bearer token, and the same API runs on self-hosted installs.

### Is there an official SDK for the Nodaro API?

Yes, @nodaro/sdk for TypeScript and JavaScript. It has no dependencies and runs anywhere fetch exists, including Node 18 or newer, browsers, React Native, Cloudflare Workers, Deno and Bun.

### How do AI agents use Nodaro?

Through the Nodaro MCP server at https://mcp.nodaro.ai/mcp. Assistants such as Claude, ChatGPT and Cursor sign in with your Nodaro account and can then generate media, build workflows and run them.

### Can I use the API with the self-hosted Community Edition?

Yes. A Community Edition install serves the same endpoints, and you authenticate with your signed-in session's JWT. API tokens need the Business edition or Nodaro Cloud, and credits exist only on Nodaro Cloud.

### Should I use an API token or OAuth?

Use a personal API token when your own server calls Nodaro for your own account. Use OAuth when you build a product and each of your users connects their own Nodaro account to it.
