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

# Get user settings

> Get the permissions, minute rate, limits and appearance of one of your users

This endpoint returns the settings of one of your platform users: their name and email, their permissions in the administration panel, their minute rate, their limits and what they see on your platform. It is the information you see when you edit the user in the administration panel.

<Note>
  This endpoint is available to the **account owner** (with an active plan) and to team members who can open the administration panel, meaning they have **Platform Admin**, **Settings Access** or **Billing Access**. Other users receive a 403 Forbidden error. Only users of your platform can be read: any other ID, including the owner account, returns 404.
</Note>

### Path Parameters

<ParamField path="id" type="integer" required>
  The ID of the user. Administrators can list user IDs with [Get platform users](/api-reference/white-label/get-users).
</ParamField>

### Response

<ResponseField name="data" type="object">
  The user's settings

  <Expandable title="data properties">
    <ResponseField name="id" type="integer">
      The user's ID
    </ResponseField>

    <ResponseField name="name" type="string">
      The user's name
    </ResponseField>

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

    <ResponseField name="permissions" type="object">
      The user's permissions in your administration panel. Returned only to the account owner, as in the panel. See [Permissions](/api-reference/white-label/update-user-settings#permissions) for what each one allows.

      <Expandable title="permissions properties">
        <ResponseField name="platform_admin" type="boolean">
          Platform Admin
        </ResponseField>

        <ResponseField name="settings_access" type="boolean">
          Settings Access
        </ResponseField>

        <ResponseField name="billing_access" type="boolean">
          Billing Access
        </ResponseField>

        <ResponseField name="revenue_reports_access" type="boolean">
          Revenue Reports Access
        </ResponseField>

        <ResponseField name="impersonate_owner" type="boolean">
          Allow impersonate owner
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="custom_minute_rate" type="number">
      The rate per minute you set for this user, in your currency, or `null` when they use the rate of their plan or your default rate
    </ResponseField>

    <ResponseField name="effective_minute_rate" type="number">
      The rate per minute this user is charged now: `custom_minute_rate` when it is set, otherwise the rate of their subscription plan, otherwise your price for users without a plan (`free_account_extra_minutes_cost` in [Get default limits](/api-reference/white-label/get-default-limits)). After a change to a plan's rate or to your price for users without a plan, the new rate can take up to 15 minutes to apply.
    </ResponseField>

    <ResponseField name="limits" type="object">
      One entry per limit, each with two values. The keys are those of [default limits](/api-reference/white-label/update-default-limits#limits) except `calendar_integrations`. Count limits are integers (`-1` means unlimited, `0` means none), and boolean limits are `true` or `false`.

      <Expandable title="each limit">
        <ResponseField name="custom" type="integer | boolean">
          The value you set for this user, or `null` when they have none
        </ResponseField>

        <ResponseField name="effective" type="integer | boolean">
          The value that applies to the user now: their own value when set, otherwise the limit of their subscription plan, otherwise your default limits. For `ai_connector`, it is always `true` for users with the `platform_admin` permission
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="appearance" type="object">
      What the user sees on your platform

      <Expandable title="appearance properties">
        <ResponseField name="custom" type="boolean">
          `true` when the user has appearance settings of their own, `false` when they see your platform-wide appearance
        </ResponseField>

        <ResponseField name="hide_pages" type="string[]">
          The pages hidden for this user: their own setting where they have one, your platform-wide setting otherwise
        </ResponseField>

        <ResponseField name="hide_features" type="string[]">
          The features hidden for this user, with the same rule. Only the features that can be set per user are listed
        </ResponseField>

        <ResponseField name="visible_plans" type="integer[]">
          IDs of the plans this user sees on the plans page. An empty list means all your active plans
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 Response theme={null}
  {
    "data": {
      "id": 123,
      "name": "Jane Doe",
      "email": "jane@example.com",
      "permissions": {
        "platform_admin": false,
        "settings_access": false,
        "billing_access": false,
        "revenue_reports_access": false,
        "impersonate_owner": false
      },
      "custom_minute_rate": 0.12,
      "effective_minute_rate": 0.12,
      "limits": {
        "assistants": { "custom": 3, "effective": 3 },
        "campaigns": { "custom": null, "effective": 1 },
        "cloned_voices": { "custom": null, "effective": 0 },
        "knowledgebases": { "custom": null, "effective": 1 },
        "mid_call_tools": { "custom": null, "effective": 1 },
        "parallel_calls": { "custom": null, "effective": 3 },
        "automation_runs": { "custom": null, "effective": 500 },
        "own_numbers": { "custom": null, "effective": 1 },
        "web_widget": { "custom": false, "effective": false },
        "secondary_languages": { "custom": null, "effective": true },
        "automation_platform": { "custom": null, "effective": true },
        "custom_dashboards": { "custom": null, "effective": false },
        "ai_prompt_editor": { "custom": null, "effective": true },
        "flow_builder": { "custom": null, "effective": true },
        "ai_connector": { "custom": null, "effective": true }
      },
      "appearance": {
        "custom": true,
        "hide_pages": ["hide_blacklist_page"],
        "hide_features": ["hide_carrier_costs"],
        "visible_plans": [12]
      }
    }
  }
  ```

  ```json 401 Unauthenticated theme={null}
  {
    "message": "Unauthenticated."
  }
  ```

  ```json 403 Not Administrator theme={null}
  {
    "message": "You are not an administrator."
  }
  ```

  ```json 404 User Not Found theme={null}
  {
    "message": "User not found."
  }
  ```

  ```json 429 Too Many Requests theme={null}
  {
    "message": "Too Many Attempts."
  }
  ```
</ResponseExample>

### Rate limit

The platform settings, default limits, user settings and plan endpoints share a limit of 60 requests per minute for each account. Above it they return `429`, and the `Retry-After` response header tells you how many seconds to wait.

### Example

```bash theme={null}
curl -X GET https://app.autocalls.ai/api/white-label/users/123 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.