Skip to main content
POST
Mint an asset over existing bytes (dedup fast-path)

Authorizations

Authorization
string
header
required

Authorization: Bearer <api-key> — account-scoped API keys on Cloud and serverless. Self-hosted accepts unauthenticated requests by default and can be configured with a static bearer token.

Body

application/json
hash
string
required
Example:

"blake3:9f8a1c0d..."

file_path
string
Example:

"photo.png"

tags
string[]
expires_in
integer

Optional retention override in seconds (60s–7d): the asset's expires_at becomes now + expires_in, replacing the platform's default retention. Implementations without configurable retention ignore it. The bounds apply to this override only — the platform default is operator-configured and may lie outside them.

Required range: 60 <= x <= 604800
Example:

86400

Response

An identical reference already existed; returned as-is.

A user-owned record identified by a server-assigned UUID, backing an immutable blob whose content carries a server-computed blake3 hash. hash may be computed lazily: an asset record (and its retrievable bytes) can exist before its hash is filled in.

id
string
required
Example:

"9f8a1c0d-2b3e-4f56-8a7b-1c2d3e4f5a6b"

hash
string | null
required

blake3:<hex>; null while lazily computed.

Example:

"blake3:9f8a1c0d..."

size_bytes
integer<int64>
required
Example:

4816293

content_type
string
required
Example:

"image/png"

created_at
string<date-time>
required
url
string<uri>
required

Short-lived content URL (signed, or proxy-served).

url_expires_at
string<date-time>
required
file_path
string | null
Example:

"photo.png"

created_new
boolean

On create responses: distinguishes a brand-new blob (true) from a dedup hit against bytes the platform already had (false).

expires_at
string<date-time> | null

Retention deadline for the asset itself (distinct from url_expires_at, the signed URL's validity). Null or absent means the asset is non-expiring. On a dedup-hit create response the deadline may be later than now + the requested/default retention: re-referencing content extends its retention, never shortens it.

job_id
string | null

ID of the job that produced this asset. Absent for uploaded assets, which have no producing job.