---
title: "Add contact person to a profile (group, company, or travel agent)"
method: POST
path: "/group-profile/v1/contact-persons"
tags: ["ContactPerson"]
---

# Add contact person to a profile (group, company, or travel agent)

`POST /group-profile/v1/contact-persons`

## Headers

- `x-property-id` integer
- `x-organization-id` integer, required

## Request body

- CreateContactPersonRequest
  - `profileId` integer — Optional profile ID to link this contact person to a specific profile (group, company, or travel agent)
  - `isMainContact` boolean — Whether this is the main contact (stored in profile-person relationship, requires profileId)
  - `role` 'BOOKING_COORDINATOR' | 'ONSITE_COORDINATOR' | 'ROOMING_LIST_CONTACT' | 'ACCOUNTS_PAYABLE' | 'BILLING' | 'INVOICING' | 'ACCOUNT_MANAGER' | 'SALES_LEAD' | 'TRAVEL_AGENT_ACCOUNT_MANAGER' | 'CORPORATE_CONTACT' | 'AUTHORIZED_SIGNER' | 'EXECUTIVE_APPROVER' | 'MARKETING' | 'MAIN_POINT_OF_CONTACT' | 'ADMINISTRATIVE' | 'OTHER' — Role of person in the profile relationship
  - `anonymized` boolean — Whether the contact is anonymized
  - `prefix` string — Name prefix (Mr., Mrs., Dr., etc.)
  - `firstName` string, required — First name
  - `lastName` string, required — Last name
  - `emails` ContactEmail[] — Email addresses with types
    - `id` string — Email ID
    - `contactPersonId` string — Contact person ID
    - `emailType` string — Email type (work, personal, etc.)
    - `email` string, email — Email address
    - `primary` boolean — Whether this is the primary email
    - `createdAt` string, date-time — Creation timestamp
    - `updatedAt` string, date-time — Last update timestamp
  - `phones` ContactPhone[] — Phone numbers with types
    - `id` string — Phone ID
    - `contactPersonId` string — Contact person ID
    - `phoneType` string — Phone type (work, mobile, home, etc.)
    - `phone` string — Phone number
    - `primary` boolean — Whether this is the primary phone
    - `createdAt` string, date-time — Creation timestamp
    - `updatedAt` string, date-time — Last update timestamp
  - `status` string, required — Contact person status. Allowed values are ACTIVE, DELETED
  - `billingDetails` BillingDetails — Billing address and contact information.
    - `address1` string — Street address line 1.
    - `address2` string — Street address line 2.
    - `city` string — City.
    - `country` string — Two-letter country code (ISO 3166-1 alpha-2).
    - `document_number` string — Tax or identification document number.
    - `name` string — Billing contact name.
    - `postal_code` string — Postal or ZIP code.
    - `phone` string — Phone number.
    - `state` string — State or province code.

## Response `201`

Contact person added successfully

- ContactPersonResponse
  - `id` string — Contact person ID
  - `isMainContact` boolean — Whether this is the main contact (from profile-person relationship, only populated when profileId filter was provided)
  - `role` 'BOOKING_COORDINATOR' | 'ONSITE_COORDINATOR' | 'ROOMING_LIST_CONTACT' | 'ACCOUNTS_PAYABLE' | 'BILLING' | 'INVOICING' | 'ACCOUNT_MANAGER' | 'SALES_LEAD' | 'TRAVEL_AGENT_ACCOUNT_MANAGER' | 'CORPORATE_CONTACT' | 'AUTHORIZED_SIGNER' | 'EXECUTIVE_APPROVER' | 'MARKETING' | 'MAIN_POINT_OF_CONTACT' | 'ADMINISTRATIVE' | 'OTHER' — Role of person in the profile relationship
  - `relationshipType` 'EMPLOYEE' | 'BOOKED_BY' | 'PART_OF_GROUP' | 'CONTACT' | 'GUEST' | 'DECISION_MAKER' | 'TRAVELER' | 'PRIMARY' | 'SECONDARY' | 'BILLING_CONTACT' | 'EMERGENCY_CONTACT' — Type of relationship between person and profile
  - `startDate` string, date — Start date of the relationship (from profile-person relationship, only populated when profileId filter was provided)
  - `endDate` string, date — End date of the relationship (from profile-person relationship, only populated when profileId filter was provided)
  - `anonymized` boolean — Whether the contact is anonymized
  - `prefix` string — Name prefix (Mr., Mrs., Dr., etc.)
  - `firstName` string — First name
  - `lastName` string — Last name
  - `emails` ContactEmail[] — Email addresses with types
    - `id` string — Email ID
    - `contactPersonId` string — Contact person ID
    - `emailType` string — Email type (work, personal, etc.)
    - `email` string, email — Email address
    - `primary` boolean — Whether this is the primary email
    - `createdAt` string, date-time — Creation timestamp
    - `updatedAt` string, date-time — Last update timestamp
  - `phones` ContactPhone[] — Phone numbers with types
    - `id` string — Phone ID
    - `contactPersonId` string — Contact person ID
    - `phoneType` string — Phone type (work, mobile, home, etc.)
    - `phone` string — Phone number
    - `primary` boolean — Whether this is the primary phone
    - `createdAt` string, date-time — Creation timestamp
    - `updatedAt` string, date-time — Last update timestamp
  - `status` string — Contact person status. Allowed values are ACTIVE, DELETED
  - `createdAt` string, date-time — Creation timestamp
  - `updatedAt` string, date-time — Last update timestamp
  - `billingDetails` BillingDetails — Billing address and contact information.
    - `address1` string — Street address line 1.
    - `address2` string — Street address line 2.
    - `city` string — City.
    - `country` string — Two-letter country code (ISO 3166-1 alpha-2).
    - `document_number` string — Tax or identification document number.
    - `name` string — Billing contact name.
    - `postal_code` string — Postal or ZIP code.
    - `phone` string — Phone number.
    - `state` string — State or province code.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Profile not found
- `422` — Unprocessable Entity

---

[API](https://skmtc.net/cloudbeds/apis/cloudbeds-api.md) · [All operations](https://skmtc.net/cloudbeds/apis/cloudbeds-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cloudbeds/cloudbeds-api/revisions/2faa857793e8/schema)
