Gallery Platform API
Reference

Update a contact

Updates a contact's base fields and/or its sub-profile. For a member, edits accumulate in the working draft until the next save; for an API key or an installed app, they land on the record. Pass `draft` to choose; `applied_to` in the response says where the write went.

PATCH
/gallery/contacts/{id}

Updates a contact's base fields and/or its sub-profile. For a member, edits accumulate in the working draft until the next save; for an API key or an installed app, they land on the record. Pass draft to choose; applied_to in the response says where the write went.

Authorization

bearerAuth contacts:update, gallery:read
AuthorizationBearer <token>

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

In: header

Scope: contacts:update, gallery:read

Path Parameters

id*string

The contact id.

Query Parameters

draft?string

Where the write lands. true: the working draft (a member's default). false: the record itself, reconciling any pending draft (a key's default). Omit for the principal's default.

dry_run?boolean

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

Idempotency-Key?string

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"  ],  "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"  },  "applied_to": "draft"}