---
title: "Share Project Media"
method: POST
path: "/asset/{asset_id}/share/project_media"
---

# Share Project Media

`POST /asset/{asset_id}/share/project_media`

## Request

- Base URL: `https://api.tellers.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tellers.ai/asset/{asset_id}/share/project_media`
- Auth: none declared

Share the media a project uses with everyone the project is shared with,
at their right on the project.

Caller must be able to share the project. Each medium follows the usual
sharing rules (share/add, share/update_right): the caller must be able to
share it, and below ADMIN hands out at most their own right. What cannot be
granted is listed in ``skipped`` rather than failing the call. Existing
shares are only raised, never lowered, and never get ``can_share``.

## Path parameters

- `asset_id` string, uuid, required

## Headers

- `x-api-key` string, nullable
- `authorization` string, nullable

## Response `200`

Successful Response

- MediaShareResult: What sharing the media of a project or assistant did.
  - `shared_asset_ids` string[], required: Media that got at least one new or raised grant.
  - `skipped` MediaShareSkip[], required
    - `asset_id` string, required
    - `name` string, required
    - `grantee` MediaGrantee, required: Someone a project or assistant is shared with, and the right they should hold on the media it uses.
      - `group_id` string, nullable: Set for a group.
      - `group_name` string, nullable
      - `email` string, nullable: Set for a person, or a pending invite.
      - `pending` boolean: An invite to an email that has no account yet.
      - `right` 'ADMIN' | 'READ' | 'WRITE' | 'VIEW', required: A right on an asset, a chat or an assistant, weakest first: VIEW < READ < WRITE < ADMIN. On an asset, VIEW sees the file and everything about it except its comments, which READ adds. Chats and assistants have nothing READ adds, so VIEW opens what READ does there. Group memberships start at READ.
      - `current_right` 'ADMIN' | 'READ' | 'WRITE' | 'VIEW': A right on an asset, a chat or an assistant, weakest first: VIEW < READ < WRITE < ADMIN. On an asset, VIEW sees the file and everything about it except its comments, which READ adds. Chats and assistants have nothing READ adds, so VIEW opens what READ does there. Group memberships start at READ.
    - `reason` string, required: cannot_share: the caller may not share this medium. right_above_yours: the right is above what the caller holds on it. group_not_managed: the caller does not manage the group. no_email: the person has no email to share with. not_allowed: the sharing rules refused it otherwise.
  - `sharing` MediaSharing, required: How the media a project or assistant uses are shared, against its own shares.
    - `in_sync` boolean, required: Everyone it is shared with holds at least the expected right on every medium it uses.
    - `can_share` boolean, required: Whether the caller may share the project or assistant.
    - `media` MediaGap[], required: The media missing someone, and who.
      - `asset_id` string, required
      - `name` string, required
      - `file_type` 'video' | 'audio' | 'image' | 'text' | 'pdf' | 'lut' | 'font' | 'placeholder' | 'group_clip' | 'master_clip' | 'aaf' | 'proj_original' | 'folder' | 'project' | 'entity' | 'teller_config'
      - `can_share` boolean, required: Whether the caller may share it.
      - `missing` MediaGrantee[], required
        - `group_id` string, nullable: Set for a group.
        - `group_name` string, nullable
        - `email` string, nullable: Set for a person, or a pending invite.
        - `pending` boolean: An invite to an email that has no account yet.
        - `right` 'ADMIN' | 'READ' | 'WRITE' | 'VIEW', required: A right on an asset, a chat or an assistant, weakest first: VIEW < READ < WRITE < ADMIN. On an asset, VIEW sees the file and everything about it except its comments, which READ adds. Chats and assistants have nothing READ adds, so VIEW opens what READ does there. Group memberships start at READ.
        - `current_right` 'ADMIN' | 'READ' | 'WRITE' | 'VIEW': A right on an asset, a chat or an assistant, weakest first: VIEW < READ < WRITE < ADMIN. On an asset, VIEW sees the file and everything about it except its comments, which READ adds. Chats and assistants have nothing READ adds, so VIEW opens what READ does there. Group memberships start at READ.
    - `lacking_for_me` MediaAccessNeed[]: The media the caller cannot read on their own, with an owner they can ask for access. Projects only; empty for assistants.
      - `asset_id` string, required
      - `name` string, required
      - `file_type` 'video' | 'audio' | 'image' | 'text' | 'pdf' | 'lut' | 'font' | 'placeholder' | 'group_clip' | 'master_clip' | 'aaf' | 'proj_original' | 'folder' | 'project' | 'entity' | 'teller_config'
      - `requested` boolean, required: A request for it is already with its owner (pending or declined), so asking again does nothing.

## Other responses

- `422`: Validation Error

## Changes

- **2026-11-05** `fdaa0fa44a26`: 1 info
  - added the optional property `sharing/lacking_for_me` to the response with the `200` status

[Operation history](https://skmtc.dev/tellers/apis/tellers-api/changes/asset/:asset_id/share/project_media/post.md)

---

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