> For the complete documentation index, see [llms.txt](https://docs.fastn.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fastn.ai/build/connectors/importing-and-exporting.md).

# Importing and exporting

Moving connectors and actions in and out of a workspace as JSON files: Import, exporting actions and exporting connectors.

Connectors and actions can be saved to JSON files and loaded into another workspace. Use this to copy a connector between environments, to keep a copy under version control, or to share a connector definition with someone.

### Export actions

You can export the actions of any connector, managed or owned.

1. Open the connector's detail page.
2. Either tick the actions you want in the connector rail (or **Select all**) and click **Export** in the *n selected* bar, or open one action's **⋯** menu and click **Export**.
3. The browser downloads a JSON file named after the connector and the number of actions, for example `hubspot-2-actions.json`.

<figure><img src="https://1255842839-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3iSr2Tx8FvvuoLPncziH%2Fuploads%2Fgit-blob-24a363db8c8d893d1a9579c2caf555272923684c%2Fconnector-actions-selected.webp?alt=media" alt="The connector rail with two HubSpot actions ticked and a bar reading 2 selected with an Export link"><figcaption><p>Bulk export from the connector rail.</p></figcaption></figure>

The file looks like this (shortened):

```json
{
  "$schema": "https://fastn.ai/schemas/actions/v1.json",
  "version": "1.0",
  "exportedAt": "2026-10-08T11:28:39.012Z",
  "connector": { "id": "…", "name": "HubSpot", "slug": "hubspot" },
  "actions": [
    {
      "id": "…",
      "name": "Add List Members",
      "slug": "addListMembers",
      "description": "Add records to a MANUAL list. …",
      "httpConfig": { "…": "method, URL, headers, query parameters, body" },
      "ftpConfig": null,
      "redisConfig": null,
      "authConfig": null,
      "inputContract": { "…": "the Input schema" },
      "outputContract": { "…": "the Output schema" },
      "rateLimit": null,
      "stage": "live",
      "version": "v1.2"
    }
  ]
}
```

| Field                              | Meaning                                                                                                                                             |
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `connector`                        | The connector the actions came from.                                                                                                                |
| `httpConfig`                       | The request: everything on the Params, Headers, Auth and Body tabs. `ftpConfig` and `redisConfig` hold the equivalent for FTP and REDIS connectors. |
| `inputContract` / `outputContract` | The **Input schema** and **Output schema**.                                                                                                         |
| `stage`                            | `test` or `live`.                                                                                                                                   |
| `version`                          | The action's version.                                                                                                                               |

An action export holds definitions only: no credentials and no connections.

### Export connectors

Connectors your workspace owns (badged `Custom`) have a **⋯** menu on their catalogue card with **Select**, **Edit**, **Export** and **Delete**.

<figure><img src="https://1255842839-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3iSr2Tx8FvvuoLPncziH%2Fuploads%2Fgit-blob-060e96a5674dd58a1dc487355c3aee9198fdf117%2Fconnectors-custom-card-menu.webp?alt=media" alt="The catalogue filtered to Private showing one card, Docs Demo CRM, badged Custom, with its three-dot menu open listing Select, Edit, Export and Delete"><figcaption><p>The card menu on a connector your workspace owns.</p></figcaption></figure>

* **⋯ → Export** downloads that one connector.
* **⋯ → Select** ticks the card and adds **Export Selected (n)** to the page header. Select more cards, then click it to download them together.
* On the connector's detail page, its row in the rail also has a **⋯** menu with **Export All** and **Import**.

<figure><img src="https://1255842839-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3iSr2Tx8FvvuoLPncziH%2Fuploads%2Fgit-blob-2642b2d7727a721bf68fd094d11a09e8b48ea5bf%2Fconnectors-export-selected.webp?alt=media" alt="The catalogue header with an Export Selected (1) button between Request connector and Create connector, and the Docs Demo CRM card ticked"><figcaption><p><strong>Export Selected (n)</strong> appears once a card is selected.</p></figcaption></figure>

The download is named `connectors-bundle-<date>.json`, for example `connectors-bundle-2026-10-08.json`:

```json
{
  "$schema": "https://fastn.ai/schemas/connector-bundle/v1.json",
  "version": "1.0",
  "exportedAt": "2026-10-08T11:56:56.422Z",
  "connectors": [
    {
      "connector": { "name": "Docs Demo CRM", "slug": "docsDemoCrm", "protocol": "REST", "visibility": "private", "authMethods": [], "…": "…" },
      "actions": [ { "name": "List Users", "slug": "listUsers", "httpConfig": { "method": "GET", "url": "https://jsonplaceholder.typicode.com/users" }, "…": "…" } ],
      "webhookConfigs": [],
      "authProviders": [],
      "appRegistrations": []
    }
  ]
}
```

Each entry carries the connector's definition, its actions, its webhook configs, its auth providers and its app registrations. Connections are never included. If the connector has its own OAuth app, open the file and check the `authProviders` entries before sharing it. Managed connectors do not have this menu; to copy one of their actions, use [Export actions](#export-actions).

### Import

**Import** on the catalogue page opens a file picker. Choose one `.json` file, such as a `connectors-bundle-<date>.json` from [Export connectors](#export-connectors). There is no form to fill in: the file is read and its connectors are created in your workspace as connectors you own.

If a connector in the file already exists in your workspace, fastn asks first:

<figure><img src="https://1255842839-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3iSr2Tx8FvvuoLPncziH%2Fuploads%2Fgit-blob-762ac546c1db707641cd2808e1de12e4c81f8872%2Fconnectors-import-replace.webp?alt=media" alt="The Replace existing connector? dialog: Docs Demo CRM already exists. Importing will replace its actions and configuration. Saved connections are preserved. With Cancel and Replace buttons"><figcaption><p>Importing a connector that already exists.</p></figcaption></figure>

> **Replace existing connector?**
>
> *\<name>* already exists. Importing will replace its actions and configuration. Saved connections are preserved.

**Replace** overwrites the existing connector's actions and configuration with the file's. Connections on it are kept, so customers do not need to reconnect. **Cancel** stops the import.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.fastn.ai/build/connectors/importing-and-exporting.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
