report-ai
customer-profiles

Create Customer Profile

Create a contact manually, requiring at least an email or phone number.

post/api/v1/report-ai/customer-profiles

Request body

customer_emailstring email nullable
customer_namestring nullable
phone_numberstring nullable
countrystring nullable

Response

Successful Response

idstring uuid required
tenant_idstring uuid required
customer_emailstring nullable required
customer_namestring nullable required
phone_numberstring nullable required
total_investigationsinteger required
complaints_countinteger required
last_sentimentstring nullable required
total_revenue_centsinteger nullable required
average_booking_value_centsinteger nullable required
loyalty_tierstring nullable required
countrystring nullable
identity_kind'person' | 'shared_inbox' | 'unclassified' | 'stay_guest'

Whether a customer profile stands for one person.

SHARED_INBOX marks an address that books on behalf of many different guests (tour operator, bed bank, travel agent). Such a profile is a real counterparty but NOT a person: it must never receive guest-directed messaging and must not appear in the contacts list as a customer.

Classified by app.bookings.private.identity_durability; see app.bookings.management.classify_shared_inboxes.

STAY_GUEST marks the guest of one reservation, known by their stay rather than by their identity — used when a reservation carries no durable identifier and a person cannot honestly be inferred from a name. Keyed on ('stay', 'episode_id', <uuid>), and holds NULL email and NULL phone always. Like SHARED_INBOX it is a real record and not a contact, and is held out of the roster, campaigns, segments and duplicate detection by the same mechanism.

requires_attentionboolean
attention_reasonstring nullable
business_idstring uuid nullable
first_seen_atstring date-time required
last_seen_atstring date-time required

Changes

No recorded changes to this endpoint across all 1 revision of this API.