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/toand?creation_date_from/toare three separate date ranges: when a photo was uploaded, when it was last changed, and when it was actually taken.?has_video,?has_geoand?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.
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 & enrichment.
400 validation back that names the exact field, so you can fix it and try again. Nothing is ever quietly cut short.