API - Working with images

This guide is about finding your images and editing them.

Finding and searching

GET /v1/images is where you find things. On its own it lists your library newest first, and you narrow it with filters that all stack together:

  • ?query= searches the full text of your library (titles, keywords, filenames, dates and metadata), ranked by relevance. It understands +must-have -exclude "exact phrase" wild*.
  • ?keyword= and ?namespace= filter by a keyword, optionally within a namespace.
  • ?rating= and ?min_rating= filter by your editorial rating.
  • ?exif_property= and ?exif_value= filter by Exif, like camera make, lens or ISO.
  • ?created_at_from/to, ?updated_at_from/to and ?creation_date_from/to are three separate date ranges: when a photo was uploaded, when it was last changed, and when it was actually taken.
  • ?has_video, ?has_geo and ?bbox= filter by video, geotag and map area.
curl "https://api.digitalphotogallery.com/v1/images?query=sunset&min_rating=4&limit=20" \
  -H "Authorization: Bearer YOUR_TOKEN"

Results come back in pages: use ?limit (up to 200) and ?offset, and let the X-Has-More and X-Next-Offset response headers tell you when there's more to fetch.

To read a single image, GET /v1/images/{public_uuid} gives you the lot: its keywords, rating, metadata, which sets it's in, and every version with its URL. If you only want the versions, there's GET /v1/images/{public_uuid}/versions.

Image URLs come from whichever media CDN your account is set to use, so don't hard-code a host; always use the url a version gives you.

Editing

PATCH /v1/images/{public_uuid} changes the main fields. Send whichever ones you want to change:

PATCH /v1/images/{public_uuid}
Idempotency-Key: <uuid>

{ "title": "…", "description": "…", "creation_date": "2026-07-03", "rotation": 90 }

Like any write, it hands you back an Operation to poll (see Operations). rotation has to be 0, 90, 180 or 270, and creation_date can be any date or timestamp we can parse.

To delete an image, use DELETE /v1/images/{public_uuid}. That one needs the api.images.delete scope.

Keywords, ratings, metadata, crop, alt-text and credits each have their own endpoints, over in Keywords, metadata &amp; enrichment.

Every text field is checked against its length before it's saved. If something's too long you get a 400 validation back that names the exact field, so you can fix it and try again. Nothing is ever quietly cut short.

Last updated: