List artists
Lists the gallery's artists, newest first, with cursor pagination. Pass `q` to match by name — use this to resolve an artist name to an id for the artwork `artist_id` filter. The roster is gallery-scoped; RLS returns it only to principals that can read the gallery.
Lists the gallery's artists, newest first, with cursor pagination. Pass q to match by name — use this to resolve an artist name to an id for the artwork artist_id filter. The roster is gallery-scoped; RLS returns it only to principals that can read the gallery.
Authorization
bearerAuth artists:readA gallery API key, sent as Authorization: Bearer gpk_… (or the x-api-key header).
In: header
Scope: artists:read
Query Parameters
Page size. Defaults to 20; the maximum is 100.
1 <= value <= 10020Opaque cursor from the previous page's next_cursor. Omit for the first page.
Free-text search over the resource's searchable fields.
length <= 200Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
{ "data": [ { "id": "string", "name": "string", "sort_name": "string", "nationality": "string", "birth_year": -9007199254740991, "death_year": -9007199254740991, "biography": "string", "website_url": "string", "pronouns": "string", "birthplace": "string", "based_in": "string", "statement": "string", "cv_url": "string", "socials": { "property1": "string", "property2": "string" }, "public_email": "string", "public_phone": "string", "visibility": "private", "metadata": { "property1": "string", "property2": "string" }, "created_at": "string", "updated_at": "string", "save_state": "new" } ], "next_cursor": "string"}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "invalid_request", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "invalid_request", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "invalid_request", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "invalid_request", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "invalid_request", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "invalid_request", "retry": "permanent", "details": null}Mint a signed artist-image upload URL POST
Returns a one-time signed target for uploading an image directly to Storage. The server derives the gallery-scoped object key; the client then uploads the bytes and registers the object via POST /images. Requires a first-party session.
Merge an artist POST
Merges the loser artist into this one, re-pointing its artworks, show line-ups, images, documents, representation history, and contact link, then removing it. Requires gallery-editor rights. Confirmation-gated: echo the loser id and pass `confirm: true`.