---
title: "Search contact persons of organization"
method: GET
path: "/group-profile/v1/contact-persons"
tags: ["ContactPerson"]
---

# Search contact persons of organization

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

## Request

- Base URL: `https://api.cloudbeds.com`
- URL: `https://api.cloudbeds.com/group-profile/v1/contact-persons`
- Auth: HTTP bearer

## Query parameters

- `ids` integer[]
- `profileId` integer
- `firstName` string
- `lastName` string
- `email` string
- `sort` string
- `pageToken` string
- `limit` integer

## Headers

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

## Response `200`

Contact persons retrieved successfully

- ContactPersonListResponse: Cursor-based pagination metadata for list responses
  - `data` 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 details for profiles and contact persons
      - `billingEntity` boolean: Whether this is a billing entity
      - `legalName` string: Legal name for billing purposes
      - `billingEmail` string, email: Billing email address
      - `billingAddress` Address: Flexible address object with country-specific fields. The countryCode determines the expected address format. All address fields except id and countryCode are stored as dynamic properties. Common fields include: address1, address2, street, number, city, state, zip, etc.
        - `id` integer: Unique identifier for the address
        - `countryCode` string: ISO 3166-1 alpha-2 country code (determines address format)
      - `billingCurrency` string: Billing currency code (ISO 4217 - 3 uppercase letters, e.g., USD, EUR, GBP)
      - `paymentMethod` 'DIRECT_BILL' | 'CASH' | 'CHECK' | 'CREDIT_CARD' | 'DEBIT_CARD' | 'VOUCHER' | 'PAY_BY_LINK' | 'THIRD_PARTY_PAYMENT': Payment method. Allowed values are DIRECT_BILL, CASH, CHECK, CREDIT_CARD, DEBIT_CARD, VOUCHER, PAY_BY_LINK, THIRD_PARTY_PAYMENT
      - `billingInstructions` string: Special billing instructions
      - `invoiceRecipientEmail` string, email: Email address for invoice delivery
      - `creditLimit` number: Credit limit amount
      - `taxId` string: Tax identification number
      - `billingFrequency` 'PER_STAY' | 'WEEKLY' | 'MONTHLY' | 'ON_DEMAND': Billing frequency. Allowed values are PER_STAY, WEEKLY, MONTHLY, ON_DEMAND
      - `invoiceDueDays` integer: Number of days until invoice is due
  - `nextPageToken` string, nullable: Token to fetch the next page of results. Pass this value as the `pageToken` query parameter in the next request. When null, there are no more pages available.

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Profile not found

---

[API](https://skmtc.dev/cloudbeds/apis/group-profile-api.md) - [All operations](https://skmtc.dev/cloudbeds/apis/group-profile-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cloudbeds/apis/group-profile-api/revisions/a1801dfbb09e?raw)
