---
title: "Import a migration bundle"
method: POST
path: "/v1/import/bundle"
tags: ["import"]
---

# Import a migration bundle

`POST /v1/import/bundle`

## Request

- Base URL: `https://api.brixsignage.com`
- URL: `https://api.brixsignage.com/v1/import/bundle`
- Auth: HTTP bearer

Performs a bulk import from a multipart upload containing a manifest JSON file and a zip of media files. In one operation, this creates the location tree, media library, playlists, and screens (initially unpaired) described by the manifest. Physical screens are paired into these pre-created entries later. Requires the import-create permission on the API key.

**Notes.**
- Re-importing the same manifest is safe: items it already created are counted as `…Existing`, not created again.
- All or nothing: a validation failure writes nothing.

## Response `201`

Success.

- object
  - `data` object, required
    - `orgNodesCreated` integer, required
    - `foldersCreated` integer, required
    - `mediaCreated` integer, required
    - `appsCreated` integer, required
    - `billingGroupsCreated` integer, required
    - `playlistsCreated` integer, required
    - `layoutsCreated` integer, required
    - `zonesFilledOnReuse` integer, required
    - `schedulesCreated` integer, required
    - `foldersExisting` integer, required
    - `mediaExisting` integer, required
    - `appsExisting` integer, required
    - `billingGroupsExisting` integer, required
    - `playlistsExisting` integer, required
    - `layoutsExisting` integer, required
    - `schedulesExisting` integer, required
    - `screens` object[], required: Screens created by this import.
      - `id` string, required
      - `name` string, required
      - `pairingCode` string, required: A six-digit code shown with the new screen. Not a credential: nothing redeems it; pair the device as usual.
    - `screensExisting` object[], required: Screens a previous import already created (matched by your id).
      - `id` string, required
      - `name` string, required
      - `pairingCode` string, nullable, required
    - `pendingDevicesClaimed` object[], required: Waiting devices that were matched to an imported screen and paired.
      - `pairingId` string, required
      - `screenId` string, required
      - `name` string, required

## Other responses

- `401`: Missing, expired or revoked bearer token.
- `403`: You do not hold `import.create` for the whole workspace.
- `413`: The body, the zip, a file or the number of new media items is over its limit.
- `422`: A missing or invalid manifest, an invalid zip, or a reference to an item, upload or zip entry that does not exist (`upload_not_found`, `missing_bundle_entry`, `unknown_media_ref`, …). Nothing is written.
- `5XX`: Server error. The body carries a `requestId` to quote to support.

---

[API](https://skmtc.dev/brixsignage/apis/brix-api.md) · [All operations](https://skmtc.dev/brixsignage/apis/brix-api/llms.txt) · [OpenAPI document](https://skmtc.dev/brixsignage/apis/brix-api/revisions/02fd3665dc7d?raw)
