Naar inhoud

Contacts

Guests and other contacts of the organization

The contact object

Attributes

iduuid

Unique identifier

creator_iduuid | null
user_profiles.user_id

Identifier of the user that created the contact

organization_iduuid
organizations.id

Identifier of the organization this contact is defined in

created_atread-onlytimestamp with time zone

Creation timestamp

updated_atread-onlytimestamp with time zone

Last modification timestamp

addressread-onlytext

Address of the contact, as a single line

avatartext | null

URL of the avatar image

citytext

City of the contact

company_nametext

Company name of the contact, for invoices

countrytext

Country of the contact

country_codeCountryCode | ""

ISO 3166-1 alpha-2 country code of the contact, or empty

e_invoice_addresstext

E-invoicing address of the contact

e_invoice_schemetext

Scheme of the contact's e-invoicing address, e.g. a Peppol scheme

emailtext

Email address of the contact

first_nametext

First name of the contact

ftsread-onlytsvector

Full text search index

languageLanguage | null

Language of the contact

last_nametext

Last name of the contact

metaArray<{ key: string, value: string }>

Metadata of the contact

nameread-onlytext

Full name of the contact

notestext

Private notes about the contact

phonetext

Phone number of the contact

provincetext

Province of the contact

sms_opt_inboolean

Whether the contact agreed to receive text messages

statetext

State of the contact

streettext

Street address of the contact

street2text

Second line of the street address of the contact

ziptext

Postal code of the contact

Related resources

Embed related resources in the response with the select parameter, for example select=*,organizations(*). Resources related through more than one column need the column as a hint, like table!column(*).

organizations(*)object | null
organizations

The organization referenced by organization_id.

user_profiles(*)object | null
user_profiles

The user profile referenced by creator_id.

contact_bookings(*)array
contact_bookings

The contact bookings referencing this contact through contact_bookings.contact_id.

The contact object
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "creator_id": "00000000-0000-0000-0000-000000000000",
  "organization_id": "00000000-0000-0000-0000-000000000000",
  "created_at": "2026-10-30T22:27:57.051Z",
  "updated_at": "2026-10-30T22:27:57.051Z",
  "address": "",
  "avatar": "",
  "city": "",
  "company_name": "Summer cottage",
  "country": "NL",
  "country_code": "NL",
  "e_invoice_address": "",
  "e_invoice_scheme": "",
  "email": "guest@example.com",
  "first_name": "John",
  "language": "en-US",
  "last_name": "Doe",
  "meta": {},
  "name": "Summer cottage",
  "notes": "A short description.",
  "phone": "+31612345678",
  "province": "",
  "sms_opt_in": true,
  "state": "",
  "street": "",
  "street2": "",
  "zip": ""
}
Including related resources
curl -X GET "https://api.bookingmood.com/v1/contacts?limit=10&select=*,organizations(*),user_profiles(*)" \
  -H "Authorization: Bearer YOUR_API_KEY"

List contacts

Filters

idFilter<uuid>

Unique identifier

creator_idFilter<uuid | null>
user_profiles.user_id

Identifier of the user that created the contact

organization_idFilter<uuid>
organizations.id

Identifier of the organization this contact is defined in

created_atFilter<timestamp with time zone>

Creation timestamp

updated_atFilter<timestamp with time zone>

Last modification timestamp

addressFilter<text>

Address of the contact, as a single line

avatarFilter<text | null>

URL of the avatar image

cityFilter<text>

City of the contact

company_nameFilter<text>

Company name of the contact, for invoices

countryFilter<text>

Country of the contact

country_codeFilter<CountryCode | "">

ISO 3166-1 alpha-2 country code of the contact, or empty

e_invoice_addressFilter<text>

E-invoicing address of the contact

e_invoice_schemeFilter<text>

Scheme of the contact's e-invoicing address, e.g. a Peppol scheme

emailFilter<text>

Email address of the contact

first_nameFilter<text>

First name of the contact

ftsFilter<tsvector>

Full text search index

languageFilter<Language | null>

Language of the contact

last_nameFilter<text>

Last name of the contact

metaFilter<Array<{ key: string, value: string }>>

Metadata of the contact

nameFilter<text>

Full name of the contact

notesFilter<text>

Private notes about the contact

phoneFilter<text>

Phone number of the contact

provinceFilter<text>

Province of the contact

sms_opt_inFilter<boolean>

Whether the contact agreed to receive text messages

stateFilter<text>

State of the contact

streetFilter<text>

Street address of the contact

street2Filter<text>

Second line of the street address of the contact

zipFilter<text>

Postal code of the contact

Responses

200

A list of contacts with the selected columns

206

Partial Content

400

The request is malformed, for example an unknown column or an invalid filter.

401

The API key is missing or invalid.

Error responses have a JSON body with a code, message, details and hint. See the introduction for more on errors.
GET /contacts
curl -X GET "https://api.bookingmood.com/v1/contacts?select=*&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"
Example response
JSON
[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "creator_id": "00000000-0000-0000-0000-000000000000",
    "organization_id": "00000000-0000-0000-0000-000000000000",
    "created_at": "2026-10-30T22:27:57.051Z",
    "updated_at": "2026-10-30T22:27:57.051Z",
    "address": "",
    "avatar": "",
    "city": "",
    "company_name": "Summer cottage",
    "country": "NL",
    "country_code": "NL",
    "e_invoice_address": "",
    "e_invoice_scheme": "",
    "email": "guest@example.com",
    "first_name": "John",
    "language": "en-US",
    "last_name": "Doe",
    "meta": {},
    "name": "Summer cottage",
    "notes": "A short description.",
    "phone": "+31612345678",
    "province": "",
    "sms_opt_in": true,
    "state": "",
    "street": "",
    "street2": "",
    "zip": ""
  }
]

Create contacts

Body

Partial<Contact> | Array<Partial<Contact>>

Read-only attributes are set by the database and can't be written.

Responses

201

The newly created contacts with the selected columns

400

The request is malformed, for example an unknown column, an invalid filter or an invalid body.

401

The API key is missing or invalid.

403

The API key has no permission for this change, for example when writing rows of another organization.

409

The change conflicts with existing data, for example a duplicate key or a reference to a row that does not exist.

Error responses have a JSON body with a code, message, details and hint. See the introduction for more on errors.
POST /contacts
curl -X POST "https://api.bookingmood.com/v1/contacts" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "city": "",
    "company_name": "Summer cottage",
    "country": "NL",
    "country_code": "NL",
    "e_invoice_address": "",
    "e_invoice_scheme": "",
    "email": "guest@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "meta": {},
    "notes": "A short description.",
    "organization_id": "00000000-0000-0000-0000-000000000000",
    "phone": "+31612345678",
    "province": "",
    "sms_opt_in": true,
    "state": "",
    "street": "",
    "street2": "",
    "zip": ""
  }'
Example response
JSON
[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "creator_id": "00000000-0000-0000-0000-000000000000",
    "organization_id": "00000000-0000-0000-0000-000000000000",
    "created_at": "2026-10-30T22:27:57.051Z",
    "updated_at": "2026-10-30T22:27:57.051Z",
    "address": "",
    "avatar": "",
    "city": "",
    "company_name": "Summer cottage",
    "country": "NL",
    "country_code": "NL",
    "e_invoice_address": "",
    "e_invoice_scheme": "",
    "email": "guest@example.com",
    "first_name": "John",
    "language": "en-US",
    "last_name": "Doe",
    "meta": {},
    "name": "Summer cottage",
    "notes": "A short description.",
    "phone": "+31612345678",
    "province": "",
    "sms_opt_in": true,
    "state": "",
    "street": "",
    "street2": "",
    "zip": ""
  }
]

Delete contacts

Filters

Without filters, this request deletes all contacts you have access to. Always filter on at least one column, e.g. id=eq.{id}.

idFilter<uuid>

Unique identifier

creator_idFilter<uuid | null>
user_profiles.user_id

Identifier of the user that created the contact

organization_idFilter<uuid>
organizations.id

Identifier of the organization this contact is defined in

created_atFilter<timestamp with time zone>

Creation timestamp

updated_atFilter<timestamp with time zone>

Last modification timestamp

addressFilter<text>

Address of the contact, as a single line

avatarFilter<text | null>

URL of the avatar image

cityFilter<text>

City of the contact

company_nameFilter<text>

Company name of the contact, for invoices

countryFilter<text>

Country of the contact

country_codeFilter<CountryCode | "">

ISO 3166-1 alpha-2 country code of the contact, or empty

e_invoice_addressFilter<text>

E-invoicing address of the contact

e_invoice_schemeFilter<text>

Scheme of the contact's e-invoicing address, e.g. a Peppol scheme

emailFilter<text>

Email address of the contact

first_nameFilter<text>

First name of the contact

ftsFilter<tsvector>

Full text search index

languageFilter<Language | null>

Language of the contact

last_nameFilter<text>

Last name of the contact

metaFilter<Array<{ key: string, value: string }>>

Metadata of the contact

nameFilter<text>

Full name of the contact

notesFilter<text>

Private notes about the contact

phoneFilter<text>

Phone number of the contact

provinceFilter<text>

Province of the contact

sms_opt_inFilter<boolean>

Whether the contact agreed to receive text messages

stateFilter<text>

State of the contact

streetFilter<text>

Street address of the contact

street2Filter<text>

Second line of the street address of the contact

zipFilter<text>

Postal code of the contact

Responses

200

The deleted contacts with the selected columns. Returns 204 without a body when sending the header Prefer: return=minimal.

400

The request is malformed, for example an unknown column or an invalid filter.

401

The API key is missing or invalid.

403

The API key has no permission for this change, for example when writing rows of another organization.

Error responses have a JSON body with a code, message, details and hint. See the introduction for more on errors.
DELETE /contacts
curl -X DELETE "https://api.bookingmood.com/v1/contacts?id=eq.00000000-0000-0000-0000-000000000000" \
  -H "Authorization: Bearer YOUR_API_KEY"
Example response
JSON
[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "creator_id": "00000000-0000-0000-0000-000000000000",
    "organization_id": "00000000-0000-0000-0000-000000000000",
    "created_at": "2026-10-30T22:27:57.051Z",
    "updated_at": "2026-10-30T22:27:57.051Z",
    "address": "",
    "avatar": "",
    "city": "",
    "company_name": "Summer cottage",
    "country": "NL",
    "country_code": "NL",
    "e_invoice_address": "",
    "e_invoice_scheme": "",
    "email": "guest@example.com",
    "first_name": "John",
    "language": "en-US",
    "last_name": "Doe",
    "meta": {},
    "name": "Summer cottage",
    "notes": "A short description.",
    "phone": "+31612345678",
    "province": "",
    "sms_opt_in": true,
    "state": "",
    "street": "",
    "street2": "",
    "zip": ""
  }
]

Update contacts

Filters

Without filters, this request updates all contacts you have access to. Always filter on at least one column, e.g. id=eq.{id}.

idFilter<uuid>

Unique identifier

creator_idFilter<uuid | null>
user_profiles.user_id

Identifier of the user that created the contact

organization_idFilter<uuid>
organizations.id

Identifier of the organization this contact is defined in

created_atFilter<timestamp with time zone>

Creation timestamp

updated_atFilter<timestamp with time zone>

Last modification timestamp

addressFilter<text>

Address of the contact, as a single line

avatarFilter<text | null>

URL of the avatar image

cityFilter<text>

City of the contact

company_nameFilter<text>

Company name of the contact, for invoices

countryFilter<text>

Country of the contact

country_codeFilter<CountryCode | "">

ISO 3166-1 alpha-2 country code of the contact, or empty

e_invoice_addressFilter<text>

E-invoicing address of the contact

e_invoice_schemeFilter<text>

Scheme of the contact's e-invoicing address, e.g. a Peppol scheme

emailFilter<text>

Email address of the contact

first_nameFilter<text>

First name of the contact

ftsFilter<tsvector>

Full text search index

languageFilter<Language | null>

Language of the contact

last_nameFilter<text>

Last name of the contact

metaFilter<Array<{ key: string, value: string }>>

Metadata of the contact

nameFilter<text>

Full name of the contact

notesFilter<text>

Private notes about the contact

phoneFilter<text>

Phone number of the contact

provinceFilter<text>

Province of the contact

sms_opt_inFilter<boolean>

Whether the contact agreed to receive text messages

stateFilter<text>

State of the contact

streetFilter<text>

Street address of the contact

street2Filter<text>

Second line of the street address of the contact

zipFilter<text>

Postal code of the contact

Body

Partial<Contact>

Read-only attributes are set by the database and can't be written.

Responses

200

The updated contacts with the selected columns. Returns 204 without a body when sending the header Prefer: return=minimal.

400

The request is malformed, for example an unknown column, an invalid filter or an invalid body.

401

The API key is missing or invalid.

403

The API key has no permission for this change, for example when writing rows of another organization.

409

The change conflicts with existing data, for example a duplicate key or a reference to a row that does not exist.

Error responses have a JSON body with a code, message, details and hint. See the introduction for more on errors.
PATCH /contacts
curl -X PATCH "https://api.bookingmood.com/v1/contacts?id=eq.00000000-0000-0000-0000-000000000000" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "city": ""
  }'
Example response
JSON
[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "creator_id": "00000000-0000-0000-0000-000000000000",
    "organization_id": "00000000-0000-0000-0000-000000000000",
    "created_at": "2026-10-30T22:27:57.051Z",
    "updated_at": "2026-10-30T22:27:57.051Z",
    "address": "",
    "avatar": "",
    "city": "",
    "company_name": "Summer cottage",
    "country": "NL",
    "country_code": "NL",
    "e_invoice_address": "",
    "e_invoice_scheme": "",
    "email": "guest@example.com",
    "first_name": "John",
    "language": "en-US",
    "last_name": "Doe",
    "meta": {},
    "name": "Summer cottage",
    "notes": "A short description.",
    "phone": "+31612345678",
    "province": "",
    "sms_opt_in": true,
    "state": "",
    "street": "",
    "street2": "",
    "zip": ""
  }
]

Neem de controle over je boekingen. Bouw een bedrijf dat van jou is.

Sluit je aan bij 1200+ onafhankelijke vakantieverhuurbedrijven die Bookingmood gebruiken om hun directe boekingen te vergroten en een sterkere band met hun gasten op te bouwen.

Start je gratis 14-daagse proefperiode