# Import and export

> Export a workflow as one JSON file, with or without its characters, objects and locations, and import it into another account, project or self-hosted install.

Source: https://nodaro.ai/docs/guides/import-export

A workflow travels as one **JSON file**. You export it from the editor and import it anywhere: into another account, another project, or a self-hosted install. The file can carry the characters, objects and locations the workflow uses. The import copies the media it can reach, so the copy works on its own.

## Export a workflow

### Save the workflow

Export reads the saved version of the workflow, not what is on the canvas. Save first.

### Choose Export

In the editor's toolbar, open **Export** and choose what the file should contain.

| Choice | What is in the file |
| --- | --- |
| **With Assets** | The workflow, plus the characters, objects and locations it uses |
| **Template Only** | The workflow alone, without results and other run content |

### Share the file

Send the file, or keep it as a backup. If the workflow uses media that only your install can serve, such as files on a private server, the export warns you. Upload that media somewhere public before you share the file, or expect those nodes to need new inputs.

## Import a workflow

**From the home screen.** Click **Import JSON**, beside "Jump back in", and choose a file. Nodaro creates the workflow and opens it. It lands in your default project, **My Recent Flows**, which is created the first time anything needs it.

**From the editor.** Open **Import** in the toolbar. Choose **From File** or **From Clipboard**, then one of two options:

| Choice | What happens |
| --- | --- |
| **Import as New** | A new workflow, like the home-screen button |
| **Add to Current** | The imported nodes are added to the open canvas, to the right of what is already there |

Every imported workflow is named after its file with **(Imported)** at the end, so a copy never looks like the original. Both ways accept a normal export and the tutorial format.

## What crosses over

| Part of the workflow | What happens on import |
| --- | --- |
| **Characters, objects and locations** | From a **With Assets** file, they are created again in your account, and the nodes point to your new copies. |
| **Media the new install can reach** | Images, video and audio are copied to the new install's storage, so the workflow no longer depends on the original. The success message says how many files were copied. |
| **Media the new install cannot reach** | Stays pointing where it was. The import warns you and names the nodes, which will not run until you upload the files again. |
| **Assets that do not fit your storage** | The workflow still lands, and the import names the assets it could not create. Nodes that use them show them as missing. |
| **Saved credentials** | Never exported. A [Webhook Output](https://nodaro.ai/docs/nodes/publish/webhook-output) arrives without its credential, and you choose your own. |
| **Schedules** | An imported [Schedule Trigger](https://nodaro.ai/docs/nodes/automate/schedule-trigger) always starts paused. Turn it on when you are ready. |
| **Snippets and picker settings** | Travel as they are. A [snippet](https://nodaro.ai/docs/guides/prompt-snippets) is plain text in the prompt, and a picker keeps its Full or Compact mode. |

**Shared workflows export without their assets.** You can export a workflow that someone shared with you. The file then comes without the characters and locations behind it. Being allowed to read a workflow does not give you its assets.

## Move a workflow between Nodaro Cloud and a self-hosted install

The same file works in both directions:

1. Export the workflow **With Assets** on the old install.
2. Import it on the new install with **Import JSON**.
3. Read the import message. Upload again any media it could not reach.
4. On a self-hosted install, check that the models the workflow uses are available through your provider keys or a [Nodaro Cloud connection](https://nodaro.ai/docs/concepts/editions).
5. Choose credentials again in Webhook Output nodes, and turn on schedules that should run.

## Import and export from code

The REST API imports the same files with `POST /v1/workflows/import`, sending the file's contents as `workflow_json`. The answer includes the new workflow and an import report: how many media files were copied, which were unreachable and which were skipped. The SDK calls the same endpoint with `client.workflows.import(...)`, and assistants connected through [MCP](https://nodaro.ai/docs/mcp) can export and import workflows too. See the [Workflows API](https://nodaro.ai/docs/developers/api/workflows).

## Frequently asked questions

### How do I copy a workflow to another Nodaro account?

In the editor, open Export and choose With Assets. In the other account, click Import JSON on the home screen and choose the file. The workflow opens as a new copy, with its characters, objects and locations created in that account.

### What is the difference between With Assets and Template Only?

With Assets includes the characters, objects and locations the workflow uses. Template Only includes the workflow alone, without results and other run content.

### Why does an imported node say its media is missing?

The file points to media that only the original install could serve, such as a private self-hosted server. The import names those nodes. Upload the media again on the new install before you run them.

### Does an imported schedule start running right away?

No. An imported Schedule Trigger always starts paused. Turn it on with its switch when you are ready.

### Are my webhook keys included in an export?

No. An export never carries saved credentials. After an import, choose your own credential in each Webhook Output node that needs one.
