Skip to main content
Beta - Contact data is currently in beta. The payload structure may still evolve before general availability. Share your feedback at support@bookingshake.com.

Get a contact

Overview

GET /contacts/{id} returns a single contact (person) by its ID - useful to back-fill a missed contact.* webhook, reconcile your CRM, or re-fetch a person on demand.
Unlike the contact webhook - which omits fields without a value - this endpoint always returns every field with an explicit null when unset (consistent with GET /accounts, GET /invoices and GET /payments). The country field is returned verbatim as entered. account_id is the raw ID of the linked account (or null) - call GET /accounts/{id} to fetch the company details. Custom fields configured for your venue are included, also with explicit null when unset. Timestamps are Unix milliseconds.

Authentication

All requests require a Bearer token (your BookingShake API key):

Path Parameters

string
required
The contact ID - the id field carried by the contact.created webhook.

Request

Response

The contact is returned wrapped in the standard { message, data } envelope.

Data Fields

Errors

A 404 is returned uniformly whenever the contact is outside your scope, so the existence of another venue’s contact is never disclosed.

Next Steps

Contact Events

Receive contact changes in real time via the contact.* webhooks

Get an Account

Fetch the company a contact is attached to

Update a contact

Overview

PATCH /contacts/{id} updates a single contact (person) by its ID. It is a partial update: only the fields you include in the body are modified, everything else is left untouched. The request body uses the same conventions as the response - the English (snake_case) field names returned by GET /contacts/{id}. So you can read a contact, change a few fields, and send them straight back. Pass null on any field to clear it.
Updating a contact automatically emits the contact.updated webhook when at least one exposed field changes. The country field is stored verbatim as provided - no ISO normalization.

Authentication

All requests require a Bearer token (your BookingShake API key):

Path Parameters

string
required
The contact ID - the id field carried by the contact.* webhooks.

Body Parameters

All body fields are optional, but at least one must be provided. String fields are trimmed and limited to 255 characters. Pass null on any field to clear it. id and created_at are read-only and ignored.
string
First name.
string
Last name.
string
Email address. Must be a valid email when provided; pass null to clear it.
string
Mobile phone number.
string
Landline phone number.
string
Contact’s title.
string
Job position.
string
Avatar image URL.
string
Free-text notes about the contact.
string
ID of an existing account (company) to link the contact to. Must reference an account within the contact’s venue or venues group, otherwise the request is rejected with 400. Pass null to unlink.
boolean
Marketing communications opt-in. Must be true, false, or null.
boolean
General communications opt-in. Must be true, false, or null.
string
Address.
string
Address, line 2.
string
Postal code.
string
City.
string
Country, stored verbatim.
string | array
Custom fields configured for your venue. A single-value field takes a string; a multi-select field takes an array of strings. An unknown custom field key is rejected with 400.

Request

Response

The full contact is returned in its post-update state, wrapped in the standard { message, data } envelope - identical in shape to GET /contacts/{id}.
See the Get a Contact reference for the full field descriptions.

Errors

A 404 is returned uniformly whenever the contact is outside your scope, so the existence of another venue’s contact is never disclosed.

Next Steps

Get a Contact

Retrieve a contact before updating it

Contact Events

Receive contact changes in real time via the contact.* webhooks