Export a contact's full record
Returns one contact's complete record — profile, interactions, tasks, notes, pipeline memberships, ownership links, offer history, and memory — as structured JSON for GDPR data-portability (Art. 20).
Returns one contact's complete record — profile, interactions, tasks, notes, pipeline memberships, ownership links, offer history, and memory — as structured JSON for GDPR data-portability (Art. 20).
Authorization
bearerAuth contacts:readA gallery API key, sent as Authorization: Bearer gpk_… (or the x-api-key header).
In: header
Scope: contacts:read
Path Parameters
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
{ "contact": { "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" } }, "interactions": [ { "id": "string", "contact_id": "string", "actor_id": "string", "type": "note", "direction": "inbound", "subject": "string", "body": "string", "artwork_id": "string", "occurred_at": "string", "created_at": "string", "updated_at": "string" } ], "tasks": [ { "id": "string", "contact_id": "string", "created_by": "string", "assignee_id": "string", "title": "string", "due_at": "string", "done_at": "string", "created_at": "string", "updated_at": "string" } ], "private_notes": [ { "id": "string", "contact_id": "string", "author_id": "string", "body": "string", "created_at": "string" } ], "pipelines": [ { "list_id": "string", "contact_id": "string", "stage_id": "string", "position": -9007199254740991, "note": "string", "created_at": "string" } ], "ownership": [ { "id": "string", "artwork_id": "string", "contact_id": "string", "role": "string", "acquired_at": "string", "note": "string", "created_at": "string" } ], "offers": [ { "property1": null, "property2": null } ], "memory": [ { "property1": null, "property2": null } ], "exported_at": "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}Delete a contact DELETE
Soft-deletes a contact: it disappears from the roster (its history is retained), and the gallery owner can undo the deletion for 15 minutes.
Contacts due a follow-up GET
Surface contacts who have gone quiet — a logged touch exists, but the most recent one predates `inactive_days` (default 30) ago and no open task is already tracking the follow-up. Ordered most-recently-quiet first (the timely nudges). Detection is a plain inactivity query — no model call.