List the artworks matched to a contact
Returns the available works the recommendation engine matched to this contact, best first, each with a calibrated probability, per-question sub-scores, and the evidence items behind it. Only pairs at or above the visible floor are returned unless `min_probability` lowers it; pairs a member hid are omitted unless `include_hidden` is set. Empty until the engine has judged the contact.
Returns the available works the recommendation engine matched to this contact, best first, each with a calibrated probability, per-question sub-scores, and the evidence items behind it. Only pairs at or above the visible floor are returned unless min_probability lowers it; pairs a member hid are omitted unless include_hidden is set. Empty until the engine has judged the contact.
Authorization
bearerAuth contacts:read, artworks:readA gallery API key, sent as Authorization: Bearer gpk_… (or the x-api-key header).
In: header
Scope: contacts:read, artworks:read
Path Parameters
The contact id.
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.
Lowest probability to include, 0–1. Defaults to the visible floor (0.6).
0 <= value <= 1Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
{ "data": [ { "id": "string", "artwork_id": "string", "contact_id": "string", "probability": 0, "sub_scores": { "property1": 0, "property2": 0 }, "reasons": [ { "question": "medium", "kind": "memory_fact", "evidence_id": "string", "label": "string", "source_label": "string", "at": "string" } ], "evidence_count": -9007199254740991, "status": "active", "hidden_until": "string", "judged_at": "string", "model": "string", "counterpart_name": "string" } ], "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}List contacts GET
Lists the gallery's CRM contacts with cursor pagination. Filter by `q` (name/email/company substring), `type`, `assigned_to` (assigned gallery member), `lead_status`, `list_id` (pipeline membership), `has_interaction_since`, or `ids` (comma-separated, max 50) for an explicit set.
Merge a contact POST
Merges the loser contact into this one, re-pointing its interactions, tasks, notes, pipeline entries, and ownership links, then soft-deleting it. Confirmation-gated: echo the loser id and pass `confirm: true`.