---
title: "Export resources as a blueprint"
method: POST
path: "/v1/blueprints/export"
tags: ["Blueprints"]
---

# Export resources as a blueprint

`POST /v1/blueprints/export`

## Request

- Base URL: `https://api.banksync.io`
- URL: `https://api.banksync.io/v1/blueprints/export`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Turn tables, feeds and enrichments of this workspace into a portable template: ids become references between the exported resources, and anything workspace-specific (the bank, a destination) becomes an input the installer answers. Values of your own (a made-up category, the text a rule matches) are left out and listed in `report.candidates`; send the ids you choose in `includeValues` to include them. Nothing is saved — pass `blueprint` to `POST /blueprints`. At most 40 resources. An id this workspace does not hold (or that the key may not see) is a 404.

## Headers

- `Idempotency-Key` string: Makes a retry safe: the same key with the same request replays the first answer for 24 hours instead of running twice, and the same key with a different request is a 409 `IDEMPOTENCY_KEY_REUSED`. Refusals a retry can outlive — 408, 409, 423, 425, 429 and every 5xx — are never replayed, so retrying with the same key after the cause clears runs the request.

## Request body

- object
  - `title` string, required: The template’s title
  - `description` string
  - `tables` string[]: Table ids to include
  - `feeds` string[]: Feed ids to include
  - `enrichments` string[]: Enrichment ids to include
  - `dashboards` string[]: Dashboard ids to include
  - `widgets` string[]: Widget ids to include
  - `automations` string[]: Automation ids to include
  - `includeValues` string[]: Values of your own to include, by `report.candidates[].id`. Nothing is included by default; a value holding personal data or a credential is refused.

## Response `200`

The blueprint and what was left out

- object
  - `success` true, required
  - `data` object, required
    - `blueprint` object, required
    - `report` object, required
      - `resourceKinds` string[], required
      - `strippedCount` integer, required
      - `skipped` object[], required
        - `kind` string, required
        - `id` string, required
        - `reason` string, required
      - `candidates` object[], required
        - `id` string, required
        - `resourceKey` string, required
        - `path` string, required
        - `value` union, required
          - string
          - number
          - boolean
        - `label` string, required
        - `kind` string, required
        - `blocked` string
      - `sharedValues` object[], required
        - `resourceKey` string, required
        - `path` string, required
        - `value` union, required
          - string
          - number
          - boolean
        - `label` string, required
        - `kind` string, required

## Other responses

- `400`: Invalid input — `code` names it: `VALIDATION_FAILED`, `INVALID`, `INVALID_BLUEPRINT` (not a blueprint this workspace can read), `PORTABILITY_VIOLATION` (it still carries workspace ids), `UNSAFE_BLUEPRINT`, `INVALID_BINDINGS` (an input is missing or does not fit), `RESTORE_WINDOW_PASSED`; `details[]` names each field
- `401`: Unauthorized
- `403`: Forbidden — a missing `marketplace:read` / `marketplace:write` scope, a role below editor for a change, an installed app outside the public marketplace, an unverified listing already installed in ten workspaces (`INSTALL_CAP_REACHED`), or a template that needs more tables, feeds or enrichments than the workspace plan has left (`PLAN_LIMIT_REACHED`)
- `404`: Not found — something this workspace may not see answers exactly as something that does not exist; or the marketplace is not enabled for this workspace
- `409`: Conflict — it changed since you read it (`STALE`), it is busy or in the wrong state (`INVALID_STATE`), the listing cannot be installed (`NOT_INSTALLABLE`), a key is taken (`KEY_TAKEN`), or an existing container does not fit (`ADOPTION_CONFLICT`)
- `429`: Too many — the key’s rate limit, or a marketplace quota (`QUOTA_EXCEEDED`: 200 saved templates per workspace, 50 installs per hour). `Retry-After` says when to come back.
- `503`: The marketplace is temporarily unavailable; retry shortly

---

[API](https://skmtc.dev/banksync/apis/banksync-api.md) · [All operations](https://skmtc.dev/banksync/apis/banksync-api/llms.txt) · [OpenAPI document](https://skmtc.dev/banksync/apis/banksync-api/revisions/94465f5ee922?raw)
