List contacts
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.
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.
Authorization
bearerAuth contacts:readA gallery API key, sent as Authorization: Bearer gpk_… (or the x-api-key header).
In: header
Scope: contacts:read
Query Parameters
1 <= value <= 100201 <= items <= 50length <= 200Value in
- "collector"
- "institution"
- "consignor"
- "lender"
- "advisor"
- "press"
- "other"
Value in
- "new"
- "active"
- "engaged"
- "dormant"
- "closed"
1 <= items <= 10^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$date-time0 <= value <= 90071992547409910 <= value <= 9007199254740991Value in
- "under_5k"
- "5k_25k"
- "25k_100k"
- "over_100k"
Sort by one of: created, updated (default created).
Value in
- "created"
- "updated"
Sort direction (default desc).
Value in
- "asc"
- "desc"
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
{ "data": [ { "id": "string", "contact_type": "collector", "name": "string", "company": "string", "email": "string", "phone": "string", "notes": "string", "assignee_ids": [ "string" ], "lead_status": "new", "form_of_address": "string", "do_not_email": true, "archived_at": "string", "created_at": "string", "updated_at": "string", "custom_fields": { "property1": null, "property2": null }, "collector_profile": { "collecting_focus": "string", "budget_band": "string", "wishlist_notes": "string", "preferred_contact_method": "string", "vip": true, "tax_exempt": true, "created_at": "string", "updated_at": "string" }, "institution_profile": { "institution_kind": "string", "tax_exempt": true, "acquisition_process": "string", "primary_contact_name": "string", "created_at": "string", "updated_at": "string" }, "metadata": { "property1": "string", "property2": "string" } } ], "next_cursor": "string"}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}List a contact's interactions GET
Returns the contact's interaction history, newest first, with cursor pagination.
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`.