Edit an asset, or review what was proposed
const url = 'http://localhost:3000/api/v1/assets/example';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"tags":["example"],"fields":{"additionalProperty":"example"},"title":"example","description":"example","creator":"example","copyright":"example","status":"draft","reviewNote":"example","proposedTags":["example"],"proposedFields":{"additionalProperty":"example"},"rights":{"license":"example","territories":["example"],"channels":["example"],"embargo":"2026-04-15","expires":"2026-04-15","modelRelease":"released","downloadable":true},"origin":"shot","parentAssetId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","generator":"example","prompt":"example","supersededBy":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","private":true,"public":true,"focus":{"x":1,"y":1}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url http://localhost:3000/api/v1/assets/example \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "tags": [ "example" ], "fields": { "additionalProperty": "example" }, "title": "example", "description": "example", "creator": "example", "copyright": "example", "status": "draft", "reviewNote": "example", "proposedTags": [ "example" ], "proposedFields": { "additionalProperty": "example" }, "rights": { "license": "example", "territories": [ "example" ], "channels": [ "example" ], "embargo": "2026-04-15", "expires": "2026-04-15", "modelRelease": "released", "downloadable": true }, "origin": "shot", "parentAssetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "generator": "example", "prompt": "example", "supersededBy": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "private": true, "public": true, "focus": { "x": 1, "y": 1 } }'Also its rights (replaced whole), provenance (origin, parentAssetId, generator, prompt), and supersededBy: the asset that replaces it, which /api/v1/check then names. status moves it through its lifecycle: draft, proposed (in review), active (approved), archived, rejected. Submitting or reworking a draft takes write; any other move takes write with the approve ability. Whoever proposed an asset (proposedBy, the same key or person) can’t approve it: 403, someone else does.
Scope: write.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Asset id
Request Bodyrequired
Section titled “Request Bodyrequired”object
Replaces the whole set
Merges; null clears one unless it is required
object
“proposed” submits a draft for review; “active” approves it; “rejected” turns it down and keeps it, with reviewNote; “archived” retires it, and /a/{id} answers 410. Anything but submitting or reworking a draft takes approve
Replaces the pending suggestions; [] dismisses them all
The suggested values to keep waiting, by key; the rest are dismissed. {} dismisses them all. Accept one by setting it in fields
object
object
Countries it may run in (ISO 3166-1 alpha-2); empty: anywhere
What it may be used for, e.g. web, print, paid-social; empty: anything
Whether people outside the project may download the file itself; null follows its license (isDownloadable). Either way they see it.
Only people with a grant on it, or on a collection it is in, and admins see it
Serve it at /a/{id} to anyone, for embedding, while it may be used. Takes share on it
Responses
Section titled “Responses”The updated asset
object
object
The asset’s own values
object
Values inherited from its collections; own values win
object
Draft, proposed (in review), active (approved), archived or rejected
The status; expired for an approved asset past its last day of use; deleted, until restored or purged
Its stack’s current approved version: the others are superseded by it
For a proposal: who made it, a person’s or an API key’s name
Why a person rejected it
Custom field values an agent suggested, waiting for a person to accept or dismiss
object
object
ISO 3166-1 alpha-2; empty: anywhere
Empty: any use
Set by a person; null or missing follows the license (see downloadable on its description)
object
The app that signed it
The signing certificate’s organization, as the file claims it; not verified
IPTC: digitalCapture, trainedAlgorithmicMedia…
The tool the actions name, often the model
Its own flag; it is private too when every collection it is in is
Served at /a/{id} to anyone while it may be used; otherwise to people who can see it, and signed URLs
Example
{ "data": { "status": "draft", "state": "draft", "rights": { "modelRelease": "released" }, "origin": "shot", "via": "agent" }}default
Section titled “default”An error
object
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": "example" }}