Update a contact
Updates a contact's base fields and/or its sub-profile.
Updates a contact's base fields and/or its sub-profile.
Authorization
bearerAuth contacts:updateA gallery API key, sent as Authorization: Bearer gpk_… (or the x-api-key header).
In: header
Scope: contacts:update
Path Parameters
Query Parameters
Preview this operation without committing it. When true, the request is authenticated, scoped, and validated, but no side effect runs — no write, no idempotency claim, no audit event, no outbound delivery. The response is HTTP 200 with an X-Dry-Run: true header and a body of { "dry_run": true }, plus an effect object describing what the real call would change when this operation can resolve one.
Header Parameters
Optional. Send a unique key per logical operation to make retries safe: a retry with the same key replays the stored success for 14 days instead of re-running the write. Reusing a key with a different body returns 400.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Update a contact's base fields and/or sub-profile.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
{ "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" }}{ "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}A contact's unified activity timeline GET
Returns a single time-ordered union of the contact's activity — logged interactions (which already fold in offer sends and viewing-room visits) and their transactions — newest first, with cursor pagination.
Create a deal POST
Creates a pipeline deal (opportunity) in the gallery.