> ## Documentation Index
> Fetch the complete documentation index at: https://docs.botcadence.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get customer profile

> Retrieve a unified 360° customer profile

Returns one unified customer profile with contact methods, channel identities, properties, and conversation stats.

## Authentication

<ParamField header="X-API-Key" type="string" required>
  Project API key for this organization and project. Format: `bot_live_…`
</ParamField>

## Path parameters

<ParamField path="organization_id" type="string" required>
  Organization ID. Must match the API key.
</ParamField>

<ParamField path="project_id" type="string" required>
  Project ID. Must match the API key.
</ParamField>

<ParamField path="customer_profile_id" type="string" required>
  Customer profile ID.
</ParamField>

## Response

<ResponseField name="_id" type="string" required>
  Customer profile ID.
</ResponseField>

<ResponseField name="name" type="string">
  Display name.
</ResponseField>

<ResponseField name="display_id" type="string">
  Human-readable customer id.
</ResponseField>

<ResponseField name="phone_numbers" type="array" required>
  Phone contact methods.
</ResponseField>

<ResponseField name="emails" type="array" required>
  Email contact methods.
</ResponseField>

<ResponseField name="channel_identities" type="array" required>
  Channel identities (`channel_type`, `identity_key`, first/last seen).
</ResponseField>

<ResponseField name="properties" type="object" required>
  Custom property bag.
</ResponseField>

<ResponseField name="conversation_count" type="integer" required>
  Total conversations.
</ResponseField>

<ResponseField name="call_count" type="integer" required>
  Voice call count.
</ResponseField>

<ResponseField name="chat_count" type="integer" required>
  Chat conversation count.
</ResponseField>

## Errors

<ResponseField name="401" type="Unauthorized">
  Missing, invalid, or revoked API key.
</ResponseField>

<ResponseField name="403" type="Forbidden">
  API key is not authorized for this organization or project.
</ResponseField>

<ResponseField name="404" type="Not Found">
  Customer profile not found in this project.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://backend.botcadence.com/organizations/ORG_ID/projects/PROJECT_ID/customer-profiles/PROFILE_ID" \
    -H "X-API-Key: bot_live_YOUR_KEY"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    `https://backend.botcadence.com/organizations/${organizationId}/projects/${projectId}/customer-profiles/${profileId}`,
    { headers: { "X-API-Key": process.env.BOTCADENCE_API_KEY } }
  );
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.get(
      f"https://backend.botcadence.com/organizations/{organization_id}/projects/{project_id}/customer-profiles/{customer_profile_id}",
      headers={"X-API-Key": os.environ["BOTCADENCE_API_KEY"]},
  )
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "status": "success",
    "message": "Customer profile retrieved successfully",
    "data": {
      "_id": "665f40000000000000000001",
      "name": "Alex Rivera",
      "display_id": "CUS-1042",
      "phone_numbers": [
        {
          "value": "+14155552671",
          "normalized": "+14155552671",
          "source": "voice"
        }
      ],
      "emails": [],
      "channel_identities": [
        {
          "channel_type": "web",
          "identity_key": "anon_abc",
          "first_seen_at": "2026-07-01T10:00:00Z",
          "last_seen_at": "2026-07-21T15:04:00Z"
        }
      ],
      "properties": { "plan": "pro" },
      "conversation_count": 5,
      "call_count": 2,
      "chat_count": 3
    },
    "status_code": 200
  }
  ```
</ResponseExample>
