API - Keywords, metadata & enrichment

These are the endpoints for the editorial side of an image: its keywords, metadata, rating, crop, alt-text and credits. Each one is a write, so it comes back as an Operation and needs an Idempotency-Key.

Keywords

DPG keywords can be namespaced, which just means grouping them under an axis, in the form axis:value (for example artist:Marina). We store the two parts together but hand them back to you split, so you can filter by a plain value within an axis.

  • POST /v1/images/{public_uuid}/keywords adds keywords, like { "keywords": ["sunset", "artist:Marina"] } (up to 200 at a time). Add a colon to namespace one.
  • DELETE /v1/images/{public_uuid}/keywords removes one, either by its full form or by the bare value plus a namespace.
  • POST /v1/keywords/rename renames a keyword across a whole batch of your images at once, which is handy for tidying up a name that was spelled a few different ways.
  • GET /v1/keywords and GET /v1/keywords/namespaces show you the account's vocabulary and its axes, with counts.

Metadata

PUT /v1/images/{public_uuid}/metadata writes the IPTC fields: creator, copyright, contact details, usage terms and the rest. Send just the ones you want to set:

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

{ "creator": "Jane Doe", "copyright_notice": "© 2026 Jane Doe", "copyright_marked": true }

Your reusable master profiles are at GET /v1/metadata_profiles.

Ratings, crop, alt-text and credits

  • PUT /v1/images/{public_uuid}/rating sets the rating, from 0 to 5.
  • PUT /v1/images/{public_uuid}/crop sets a crop for an aspect ratio (in whole pixels), and DELETE clears it.
  • PUT /v1/images/{public_uuid}/alt_text sets the accessibility text.
  • POST and DELETE /v1/images/{public_uuid}/credits add and remove credit lines, like a stylist or an agency.
  • POST /v1/images/{public_uuid}/extract_metadata pulls the caption, keywords and date that are already embedded in the file into the fields you can edit.

If you're making the same change across a lot of images, the batch endpoint (POST /v1/operations/batch) runs up to 50 of these in a single call. There's more on it in the Errors, rate limits & conventions guide.

Last updated: