---
title: "Register a content publication"
method: POST
path: "/api/v1/collab-scenes/{sceneId}/publications"
tags: ["Collab Scenes"]
---

# Register a content publication

`POST /api/v1/collab-scenes/{sceneId}/publications`

## Request

- Base URL: `https://easy2257.com`
- URL: `https://easy2257.com/api/v1/collab-scenes/{sceneId}/publications`
- Auth: HTTP bearer

Records where you published the content and the SHA-256 of the file you published. Requires the scene to be `greenlit`. The scene's creating partner can call this straight after greenlight; any other partner must call `/extend` first. Publications are isolated per partner: you never see another platform's URLs and they never see yours.

## Path parameters

- `sceneId` string, required

## Request body

- RegisterPublicationBody
  - `contentUrl` string, uri, required: Canonical URL where you published the content. Unique per partner account: re-registering a URL you already used returns `409`.
  - `depictionSha256` string, required: Required. SHA-256 hex digest of the content file, 64 hex characters, for 28 CFR 75.2(f) integrity verification.

## Response `201`

Publication registered.

- PublicationResponse
  - `id` string, required
  - `collabSceneId` string, required
  - `contentUrl` string, uri, required
  - `publishedAt` string, date-time, required

## Other responses

- `400`: `contentUrl` is not a valid URL (`invalid_url`), or `depictionSha256` is not 64 hex characters (`invalid_hash`).
- `401`: No `Authorization: Bearer` header, or a key that is unknown, revoked, or expired. The body carries only `error`, never a `code`.
- `403`: You have not extended this scene to your platform. `code` is `extension_required`. Call `POST /extend` first.
- `404`: No such scene.
- `409`: You already registered this `contentUrl`. `code` is `duplicate_publication`. The constraint is on (your partner account, contentUrl), so a URL you used on another scene also collides.
- `422`: The scene is not greenlit. `code` is `not_greenlit`.
- `429`: Rate limit exceeded: 300 requests per 60 seconds per API key, shared across all `/api/v1` endpoints (requests without a `Bearer` key fall back to 60 per 60 seconds per client IP, and a per-address flood ceiling of 1200 per 60 seconds also applies). Honor `Retry-After`.
- `500`: Server error. Retry with exponential backoff.

---

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