Browse the docs

API reference

Artwork

Posters, backdrops and portraits: serve, list candidates, upload and choose.

Paths are relative to /api/v1 on your server.

GET/collections/{id}/poster#

Serve a collection’s poster

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring (uuid)
wqueryinteger
fmtquery"webp" | "jpeg"
vquerystring
  • 200Success. image/* ·
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
POST/collections/{id}/poster#

Upload a collection’s poster

Authorisation
Bearer token or API key · Session cookie
Body
image/* ·
ParameterInTypeDescription
id requiredpathstring (uuid)
  • 200Success. application/json · Collection
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks playlist:own, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
GET/items/{id}/artwork-candidates#

List the artwork on offer

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring (uuid)
  • 200Success. application/json · object
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
POST/items/{id}/artwork-candidates/{artworkId}/select#

Choose a candidate

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring (uuid)
artworkId requiredpathstring (uuid)
  • 200Success. application/json · ArtworkCandidate
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks item:edit, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
GET/items/{id}/artwork/{kind}#

Serve an item’s artwork

kind is poster, backdrop, logo, thumb… Answers 304 to a matching If-None-Match.

Authorisation
Bearer token or API key · Session cookie · Cast ticket
ParameterInTypeDescription
id requiredpathstring (uuid)
kind requiredpathstring
wqueryinteger
fmtquery"webp" | "jpeg"
vquerystring
  • 200Success. image/* ·
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
POST/items/{id}/artwork/{kind}#

Upload artwork

The raw image as the body, with its content type. made=designer says it was drawn in the poster designer, which is Collectoh Plus’s (P6-20).

Authorisation
Bearer token or API key · Session cookie
Body
image/* ·
ParameterInTypeDescription
id requiredpathstring (uuid)
kind requiredpathstring
madequery"designer"
  • 201Success. application/json · ArtworkCandidate
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks item:edit, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
GET/items/{id}/chapter-thumbnails.json#

Read which chapters have a picture

The pictures made for a file’s chapters when analysis.chapter_thumbnails asks (Plex’s “Generate chapter thumbnails”, 2026-10-11): those of the file asked for when it is the item’s and has some, else the primary file’s. A client matches them to the chapters it shows by startMs; a chapter without one shows the trickplay tile nearest its start. 404 when the item has none.

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring (uuid)
fileIdquerystring (uuid)
  • 200Success. application/json · ChapterThumbnailIndex
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
GET/items/{id}/chapter-thumbnails/{chapter}#

Serve a chapter’s picture

:chapter is <n>.jpg, n the chapter’s place in the index’s chapters; fileId the index’s mediaFileId, v its generatedAt (which makes the answer immutable).

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring (uuid)
chapter requiredpathstring
fileIdquerystring (uuid)
vquerystring
  • 200Success. image/jpeg ·
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
GET/items/{id}/trickplay.json#

Read the trickplay index

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring (uuid)
fileIdquerystring (uuid)
  • 200Success. application/json · TrickplayIndex
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
GET/items/{id}/trickplay/{sheet}#

Serve a trickplay sprite sheet

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring (uuid)
sheet requiredpathstring
fileIdquerystring (uuid)
vquerystring
  • 200Success. image/jpeg ·
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
GET/people/{id}/image#

Serve a person’s portrait

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring (uuid)
wqueryinteger
fmtquery"webp" | "jpeg"
vquerystring
  • 200Success. image/* ·
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
GET/people/{id}/images#

List a person’s portraits

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring (uuid)
  • 200Success. application/json · object
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
POST/people/{id}/images#

Upload a portrait

Authorisation
Bearer token or API key · Session cookie
Body
image/* ·
ParameterInTypeDescription
id requiredpathstring (uuid)
  • 201Success. application/json · PersonImage
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks item:edit, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
GET/people/{id}/images/{imageId}#

Serve one portrait

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring (uuid)
imageId requiredpathstring (uuid)
wqueryinteger
fmtquery"webp" | "jpeg"
vquerystring
  • 200Success. image/* ·
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
POST/people/{id}/images/{imageId}/select#

Choose a portrait

Authorisation
Bearer token or API key · Session cookie
ParameterInTypeDescription
id requiredpathstring (uuid)
imageId requiredpathstring (uuid)
  • 200Success. application/json · PersonImage
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks item:edit, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope