---
title: "Share content with a child workspace"
method: POST
path: "/v1/cross-space-shares"
tags: ["cross-space-shares"]
---

# Share content with a child workspace

`POST /v1/cross-space-shares`

## Request

- Base URL: `https://api.brixsignage.com`
- URL: `https://api.brixsignage.com/v1/cross-space-shares`
- Auth: HTTP bearer

Share a playlist, layout, schedule, or creative from this space into a child space. The shared content appears in the child space alongside its own content. Only the space that owns the content can create the share. Requires view permission on shares plus the appropriate permission on the content itself.

**Notes.**
- Besides the `playlist.view` gate, the caller needs the content kind's edit permission at the content's location.

## Request body

- object
  - `targetSpaceId` string, required: A child workspace of yours.
  - `contentKind` string, required
  - `contentId` string, required
  - `lockLevel` 'playlist' | 'items' | 'both': Default `both`.
  - `lockedItemIds` string[]
  - `mode` string: Ignored: a share is always `linked`.

## Response `200`

Success: The content is already shared with that workspace: the existing share is returned.

- object
  - `data` CrossSpaceShare, required: Content a parent workspace shares with a child workspace.
    - `id` string, required
    - `sourceSpaceId` string, required: The workspace that shares.
    - `targetSpaceId` string, required: The child workspace that receives.
    - `contentKind` string, required: `playlist`, `schedule`, `layout`, `creative`, `media`, …
    - `contentId` string, required
    - `mode` 'linked' | 'snapshot', required: Always `linked` for a new share: the child plays the parent's current version.
    - `lockLevel` 'playlist' | 'items' | 'both', required: What the child cannot change.
    - `lockedItemIds` string, required: A JSON-ENCODED array of item ids (the stored column), not an array.
    - `grantedBy` string, required: The user who shared it; `system` for an API key.
    - `grantedAt` string, required: ISO-8601 timestamp (UTC).
    - `createdAt` string, required: ISO-8601 timestamp (UTC).
    - `updatedAt` string, required: ISO-8601 timestamp (UTC).
    - `deletedAt` string, nullable, required: ISO-8601 timestamp (UTC).

## Other responses

- `201`: Success.
- `401`: Missing, expired or revoked bearer token.
- `403`: The target is not a child workspace of yours, or you lack the content kind's edit permission (`playlist.edit`, …) where it lives.
- `404`: No such content in your workspace.
- `422`: `targetSpaceId`, `contentKind` or `contentId` is missing.
- `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)
