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

# Users

> Manage user profiles through the Cal.com API

The Users API allows you to retrieve and update user profile information.

## API Version

User endpoints are available across all API versions:

```bash theme={null}
cal-api-version: 2024-08-13
```

## Authentication

All user endpoints require authentication:

* **API Key**: Pass via `Authorization: Bearer <api-key>` header
* **Access Token**: OAuth access token

Required permissions:

* `PROFILE_READ` for GET operations
* `PROFILE_WRITE` for PATCH operations

## Get My Profile

Retrieve the authenticated user's profile information.

<CodeGroup>
  ```bash cURL theme={null}
  curl --request GET \
    --url https://api.cal.com/v2/me \
    --header 'Authorization: Bearer <api-key>'
  ```
</CodeGroup>

### Response

<ResponseField name="status" type="string">
  Status of the response ("success")
</ResponseField>

<ResponseField name="data" type="object">
  User profile data

  <Expandable>
    <ResponseField name="id" type="number">
      User ID
    </ResponseField>

    <ResponseField name="email" type="string">
      User's email address
    </ResponseField>

    <ResponseField name="username" type="string">
      Username
    </ResponseField>

    <ResponseField name="name" type="string">
      Full name
    </ResponseField>

    <ResponseField name="timeZone" type="string">
      User's timezone (e.g., "America/New\_York")
    </ResponseField>

    <ResponseField name="weekStart" type="string">
      Week start day ("Sunday", "Monday", etc.)
    </ResponseField>

    <ResponseField name="timeFormat" type="number">
      Time format preference (12 or 24)
    </ResponseField>

    <ResponseField name="defaultScheduleId" type="number">
      ID of the default schedule
    </ResponseField>

    <ResponseField name="organizationId" type="number">
      Organization ID (if user belongs to an organization)
    </ResponseField>

    <ResponseField name="organization" type="object">
      Organization details

      <Expandable>
        <ResponseField name="id" type="number">
          Organization ID
        </ResponseField>

        <ResponseField name="isPlatform" type="boolean">
          Whether this is a platform organization
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Example Response

```json theme={null}
{
  "status": "success",
  "data": {
    "id": 123,
    "email": "alice@example.com",
    "username": "alice",
    "name": "Alice Johnson",
    "timeZone": "America/New_York",
    "weekStart": "Monday",
    "timeFormat": 12,
    "defaultScheduleId": 456,
    "organizationId": 789,
    "organization": {
      "id": 789,
      "isPlatform": true
    }
  }
}
```

## Update My Profile

Update the authenticated user's profile.

<CodeGroup>
  ```bash cURL theme={null}
  curl --request PATCH \
    --url https://api.cal.com/v2/me \
    --header 'Authorization: Bearer <api-key>' \
    --header 'Content-Type: application/json' \
    --data '{
      "name": "Alice Johnson",
      "timeZone": "Europe/London",
      "weekStart": "Monday"
    }'
  ```
</CodeGroup>

### Request Body

<ParamField body="name" type="string">
  User's full name
</ParamField>

<ParamField body="email" type="string">
  Email address. Changes require verification. The primary email stays unchanged until verification completes, unless the new email is already a verified secondary email or the user is platform-managed.
</ParamField>

<ParamField body="timeZone" type="string">
  User's timezone (e.g., "America/New\_York", "Europe/London")
</ParamField>

<ParamField body="weekStart" type="string">
  First day of the week: "Sunday", "Monday", "Tuesday", etc.
</ParamField>

<ParamField body="timeFormat" type="number">
  Time format preference: 12 or 24
</ParamField>

<ParamField body="defaultScheduleId" type="number">
  ID of the schedule to set as default
</ParamField>

### Response

Returns the updated user profile with the same structure as the GET endpoint.

## User Management

For team management features, see:

* [Teams API](/api-reference/teams) - Manage teams and team memberships

## Managed Users

If you are a platform customer managing users:

1. **Create managed users** through the platform management endpoints
2. **Set timezone** when creating managed users to automatically create a default schedule
3. **Default schedules** are created Monday-Friday, 9AM-5PM in the user's timezone
4. Without a default schedule, users cannot be booked or manage availability

## Notes

* Email changes require verification for security
* Platform-managed users have different verification requirements
* The `defaultScheduleId` links to the user's primary availability schedule
* Organization membership is read-only through this endpoint
* Use the timezone format from the IANA timezone database (e.g., "America/New\_York")
