Skip to content

Search and browse assets

GET
/api/v1/assets
curl --request GET \
--url 'http://localhost:3000/api/v1/assets?review=true&untagged=true&limit=100&offset=0' \
--header 'Authorization: Bearer <token>'

Newest first without q. Custom fields filter as f.{key}={value} (repeat to OR) and f.{key}.gte / f.{key}.lte for numbers and dates. A filter on an unknown field is a 422. Of a stack of versions, only the current approved one is listed; GET /api/v1/assets/{id}/versions has the rest.

Scope: read.

q
string

Every word must match, each as a prefix

tag
Array<string>

Repeat; assets carrying every tag

type
Array<string>
Allowed values: image video audio font document other

Repeat; assets of any of these types

collection
string

Only this collection: its id, or its name

status
Array<string>
Allowed values: draft proposed active expired archived rejected deleted

Repeat; assets in any of these states. Without it, approved (active) and unexpired ones

review
string
Allowed values: true false

True: proposed assets and assets with suggested tags, whatever status says

uploadedSince
string

Added on or after this time: a day (YYYY-MM-DD, from its start in UTC) or an ISO date-time

uploadedBefore
string

Added before this time, as uploadedSince

expiresBefore
string format: date

Whose license’s last day is before this one: by the end of 2026 is 2027-01-01. Expired ones only with status=expired

untagged
string
Allowed values: true false

True: only assets carrying no tags

limit
integer
default: 100 >= 1 <= 200

Page size

offset
integer
0

Skip this many

Matching assets, with facet counts

Media typeapplication/json
object
data
required
Array<object>
object
id
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
projectId
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
sha256
required
string
filename
required
string
mime
required
string
size
required
integer
>= -9007199254740991 <= 9007199254740991
width
required
Any of:
integer
>= -9007199254740991 <= 9007199254740991
height
required
Any of:
integer
>= -9007199254740991 <= 9007199254740991
probe
required
Any of:
object
key
additional properties
metadata
required
Any of:
object
title
string
description
string
keywords
Array<string>
creator
string
copyright
string
capturedAt
string
camera
string
lens
string
gps
object
lat
required
number
lon
required
number
focus

The point crops keep in frame, 0 to 1 from the top left

object
x
required
number
y
required
number
tags
required
Array<string>
fields
required

The asset’s own values

object
key
additional properties
string | number | boolean
inherited
required

Values inherited from its collections; own values win

object
key
additional properties
string | number | boolean
status
required

Draft, proposed (in review), active (approved), archived or rejected

string
Allowed values: draft proposed active archived rejected
state
required

The status; expired for an approved asset past its last day of use; deleted, until restored or purged

string
Allowed values: draft proposed active expired archived rejected deleted
deletedAt
required
Any of:
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/
stackId
required
Any of:
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
version
required
Any of:
integer
>= -9007199254740991 <= 9007199254740991
current
required

Its stack’s current approved version: the others are superseded by it

boolean
proposedBy
required

For a proposal: who made it, a person’s or an API key’s name

string | null
reviewNote
required

Why a person rejected it

string | null
proposedTags
required
Array<string>
proposedFields
required

Custom field values an agent suggested, waiting for a person to accept or dismiss

object
key
additional properties
string | number | boolean
working
required
Any of:
object
label
required
string
by
required

The agent’s name

string
until
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/
rights
required
Any of:
object
license
required
string | null
territories
required

ISO 3166-1 alpha-2; empty: anywhere

Array<string>
channels
required

Empty: any use

Array<string>
embargo
required
Any of:
string format: date
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$/
expires
required
Any of:
string format: date
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$/
modelRelease
required
Any of:
string
Allowed values: released missing not-needed
downloadable

Set by a person; null or missing follows the license (see downloadable on its description)

boolean | null
origin
required
Any of:
string
Allowed values: shot licensed generated
parentAssetId
required
Any of:
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
generator
required
string | null
prompt
required
string | null
c2pa
required
Any of:
object
manifests
required
integer
>= -9007199254740991 <= 9007199254740991
generator
required

The app that signed it

string | null
title
required
string | null
signedBy
required

The signing certificate’s organization, as the file claims it; not verified

string | null
actions
required
Array<string>
digitalSourceType
required

IPTC: digitalCapture, trainedAlgorithmicMedia…

string | null
softwareAgent
required

The tool the actions name, often the model

string | null
ingredients
required
integer
>= -9007199254740991 <= 9007199254740991
via
required
Any of:
string
Allowed values: agent import
supersededBy
required
Any of:
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
private
required

Its own flag; it is private too when every collection it is in is

boolean
public
required

Served at /a/{id} to anyone while it may be used; otherwise to people who can see it, and signed URLs

boolean
collections
required
Array<string>
createdAt
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/
updatedAt
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/
total
required

Every match; page through with offset and limit

integer
>= -9007199254740991 <= 9007199254740991
facets
required
object
tags
required
Array<object>
object
value
required
string
count
required
integer
>= -9007199254740991 <= 9007199254740991
types
required
Array<object>
object
value
required
string
count
required
integer
>= -9007199254740991 <= 9007199254740991
states
required

Counted over every state, so each is a status filter away

Array<object>
object
value
required
string
count
required
integer
>= -9007199254740991 <= 9007199254740991
fields
required
object
key
additional properties
Array<object>
object
value
required
string
count
required
integer
>= -9007199254740991 <= 9007199254740991
Example
{
"data": [
{
"status": "draft",
"state": "draft",
"rights": {
"modelRelease": "released"
},
"origin": "shot",
"via": "agent"
}
]
}

An error

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
detail
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": "example"
}
}