The original
const url = 'http://localhost:3000/a/example';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://localhost:3000/a/exampleBytes, exactly as uploaded, Content Credentials included; ?download writes current metadata in, except into a file with Content Credentials, which it leaves as signed. What the asset is: GET /api/v1/assets/{id}/description. Private: served to whoever can see the asset in the library, by session or key. Anyone else needs s, a signature from POST /api/v1/assets/{id}/signed-url, a share link or a portal, or the asset made public. Signed or public, only while approved, unexpired and out of embargo, and cached for an hour at most, never past the last day of use. Expired or archived: 410. Not there for this caller: 404. A name may follow the id, or a transform, for people reading the link (/a/{id}/summer-hero.jpg, /a/{id}/w_800,f_webp/summer-hero.webp): any segment with a dot, never read.
No key needed.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Asset id
Query Parameters
Section titled “Query Parameters”Present: attach, saved as the asset’s name, with metadata embedded (a rendition: in its format)
A signature: lets whoever holds the URL in until it expires. Renditions take it too
Responses
Section titled “Responses”The file
Expired or archived
object
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": "example" }}default
Section titled “default”An error
object
object
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": "example" }}