Gallery Platform API
Reference

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.

GET
/gallery/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.

Authorization

bearerAuth contacts:read, sales:read
AuthorizationBearer <token>

A gallery API key, sent as Authorization: Bearer gpk_… (or the x-api-key header).

In: header

Scope: contacts:read, sales:read

Query Parameters

limit?integer

Page size. Defaults to 20; the maximum is 100.

Range1 <= value <= 100
Default20
cursor?string

Opaque cursor from the previous page's next_cursor. Omit for the first page.

ids?array<string>

Comma-separated ids to fetch as an explicit set (maximum 50).

Items1 <= items <= 50
q?string

Free-text search over the resource's searchable fields.

Lengthlength <= 200
type?string

Filter to the given type; the schema's enum lists the values.

Value in

  • "collector"
  • "institution"
  • "consignor"
  • "lender"
  • "advisor"
  • "press"
  • "other"
assigned_to?string

Filter to rows assigned to the given member id.

lead_status?string

Filter to the given lead status.

Value in

  • "new"
  • "active"
  • "engaged"
  • "dormant"
  • "closed"
list_id?string

Filter to the given list id.

tag_id?array<string>

Filter to the given tag id.

Items1 <= items <= 10
has_interaction_since?string

Only contacts with an interaction at or after this timestamp (ISO 8601).

Match^(?:(?:\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))$
Formatdate-time
archived?string

Include or restrict to archived rows.

min_total_spend_cents?integer

Only contacts whose total spend is at least this many cents.

Range0 <= value <= 9007199254740991
min_works_acquired?integer

Only contacts who have acquired at least this many works.

Range0 <= value <= 9007199254740991
price_band?string

Filter to the given price band.

Value in

  • "under_5k"
  • "5k_25k"
  • "25k_100k"
  • "over_100k"
engaged_event?string

Filter to contacts with the given engagement event kind.

Value in

  • "session_started"
  • "room_opened"
  • "artwork_viewed"
  • "document_viewed"
  • "email_opened"
  • "link_clicked"
  • "inquiry_submitted"
  • "unsubscribed"
  • "favorite_added"
  • "favorite_removed"
  • "waitlist_joined"
  • "waitlist_notified"
  • "checkout_started"
  • "purchase_completed"
  • "drop_entered"
  • "drop_allocated"
  • "drop_claimed"
engaged_since?string

Only contacts engaged at or after this timestamp (ISO 8601).

Match^(?:(?:\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))$
Formatdate-time
sort?string

Sort by one of: name, created, updated (default created).

Value in

  • "name"
  • "created"
  • "updated"
dir?string

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"      ],      "last_interaction_at": "string",      "last_interaction_type": "note",      "lead_status": "new",      "form_of_address": "string",      "do_not_email": true,      "archived_at": "string",      "created_at": "string",      "updated_at": "string",      "save_state": "new",      "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"}