Skip to main content
POST
Call contact.get

Authorizations

Authorization
string
header
required

An API key minted at Settings › API & MCP. Send it as Authorization: Bearer <key>. A key carries its holder's own permissions, resolved on every call — revoking a membership closes the key's reach immediately. Keep it in an environment variable (GOOSY_API_KEY), never in a committed file.

Headers

x-request-id
string

Your own id for this request, echoed back and recorded on the audit trail. 1–128 characters from A–Z a–z 0–9 . _ : -, starting with a letter or digit; anything else is replaced by a generated id.

Maximum string length: 128

Body

application/json
contact_id
string<uuid>

The customer to read, when you already have their id. Give EXACTLY ONE address: this customer id, or the identity pair (identity_kind WITH identity_value). Neither, or both together, is refused rather than guessed at.

identity_kind
enum<string>

Which kind of key this is: an email address, a phone number, a Messenger id (meta_psid), an Instagram id (ig_id), a CRM record id (ghl_contact_id), or a Google reviewer id.

Available options:
email,
phone,
meta_psid,
ig_id,
ghl_contact_id,
gbp_reviewer
identity_value
string

The key exactly as you observed it. It is normalised before it is looked up, so capitals in an address are fine — but a phone number without its country code cannot be matched and will be refused rather than guessed at.

Required string length: 1 - 512
identity_scope
string

The Meta PAGE id the key was seen on. REQUIRED for meta_psid and ig_id — those ids are only unique within one page, so without it nothing can be matched. Leave it out for every other kind.

Required string length: 1 - 256
section
enum<string>

Which part to read. summary (the default) is the record plus the newest few history rows and notes; timeline is the recent history only; notes is their notes only. Ask for timeline or notes when the summary says more exists.

Available options:
summary,
timeline,
notes
workspace
string

Which workspace to run in — its slug. Omit to use your default. With more than one reachable workspace and no default, the call is refused and the choices are listed.

Minimum string length: 1

Response

The call was admitted and dispatched. ok says whether the tool succeeded — a refusal the tool itself produced is still a 200, exactly as it is a successful JSON-RPC result over MCP.

The tool ran and answered.

ok
boolean
required
found
boolean
required
section
enum<string>
required
Available options:
summary,
timeline,
notes
reason
string
required
contact_id
string | null
required
display_name
string | null
required
stage
string | null
required
origin
string | null
required
first_seen_at
string | null
required
last_seen_at
string | null
required
reach
object[]
required
reach_summary
string | null
required
tags
string[]
required
crm
object
required
timeline
object[]
required
Maximum array length: 20
timeline_truncated
boolean
required
notes
object[]
required
Maximum array length: 5
notes_truncated
boolean
required
degraded
string[]
required
workspace
string
required

The slug of the workspace this call ran in.

working_in
object
required

Which workspace this call ran in, and how that was decided. Present on every workspace-scoped result.