# Model providers
URL: https://docs.clearly-ai.com/docs/model-providers
Description: Configure LLM providers and BYOK controls for Clearly AI.
Clearly AI supports Bring Your Own Key (BYOK) for LLM providers. Organizations can bring their own provider credentials from OpenAI, OpenRouter, Anthropic, Google Generative AI, Google Vertex AI, Azure OpenAI, and AWS Bedrock, giving you control over which models power reviews, chats, cost allocation, and data residency.

<Note>
  Organization admins and owners can access model provider settings.

  You can save multiple provider configurations. Enable a provider before assigning it to chats or review features.
</Note>

<Tip>
  Models with a context window of 1M tokens or more tend to perform significantly better with Clearly AI's review workflows. When choosing a model, aim for one with this capability.
</Tip>

Model data handling and contractual terms depend on your organization's deployment, selected provider, and credential configuration. Confirm the retention and BAA terms that apply to your organization before sending regulated data. If you configure BYOK, Clearly AI sends model requests through the provider configuration saved for your organization.

Saved keys are encrypted at rest and are not displayed after saving.

## Feature assignments [#feature-assignments]

Use **Feature Assignments** in **Settings > Organization > Models** to choose which provider and model Clearly AI uses for specific chat and review workflows.

Assignments can use Clearly AI's managed provider defaults or an enabled BYOK provider. Administrators can assign models independently to review generation, supporting analysis tasks, and chat workflows.

When a selected model supports reasoning controls, you can set the reasoning effort for that feature.

## OpenAI [#openai]

**What you need:** An API key from [platform.openai.com/api-keys](https://platform.openai.com/api-keys).

1. In **Settings > Organization > Models**, find the **OpenAI** card.
2. Paste your API key.
3. Click **Test** to verify the connection, then **Save**.

**Data residency:** OpenAI data residency is configured in your OpenAI project or account. If OpenAI gives you a regional API endpoint, set `base_url` in the Advanced Options JSON:

```json
{
  "base_url": "https://eu.api.openai.com/v1"
}
```

Your tenant's default OpenAI endpoint is configured during onboarding. US data residency tenants use `https://us.api.openai.com/v1`. Only HTTPS URLs are accepted.

**Main options:**

| Option        | Type   | Description                                                                                                   |
| ------------- | ------ | ------------------------------------------------------------------------------------------------------------- |
| `temperature` | float  | Randomness (0 = deterministic, 1 = creative). Some reasoning models do not support custom temperature values. |
| `max_tokens`  | int    | Maximum tokens in the response. Some reasoning models use different token-limit parameters.                   |
| `top_p`       | float  | Nucleus sampling threshold.                                                                                   |
| `base_url`    | string | API endpoint URL for data residency or proxying.                                                              |

## OpenRouter [#openrouter]

**What you need:** An API key from [openrouter.ai/settings/keys](https://openrouter.ai/settings/keys).

1. In **Settings > Organization > Models**, find the **OpenRouter** card.
2. Paste your API key.
3. Optionally set **HTTP Referer** and **App Title**.
4. Click **Test**, then **Save**.

**Main options:**

| Option         | Type   | Description                                                |
| -------------- | ------ | ---------------------------------------------------------- |
| `http_referer` | string | Optional site URL sent to OpenRouter for app attribution.  |
| `app_title`    | string | Optional app title sent to OpenRouter for app attribution. |

## Anthropic [#anthropic]

**What you need:** An API key from [console.anthropic.com/settings/keys](https://console.anthropic.com/settings/keys).

1. In **Settings > Organization > Models**, find the **Anthropic** card.
2. Paste your API key.
3. Click **Test**, then **Save**.

**Main options:**

| Option        | Type  | Description                                                |
| ------------- | ----- | ---------------------------------------------------------- |
| `temperature` | float | Randomness (0 = deterministic, 1 = creative).              |
| `max_tokens`  | int   | Maximum tokens in the response. Defaults to 4096 if unset. |
| `top_p`       | float | Nucleus sampling threshold.                                |
| `top_k`       | int   | Limits sampling to the top K most likely tokens.           |

## Google Generative AI [#google-generative-ai]

**What you need:** A Gemini API key from [aistudio.google.com/app/apikey](https://aistudio.google.com/app/apikey).

1. In **Settings > Organization > Models**, find the **Google Generative AI** card.
2. Paste your API key.
3. Click **Test**, then **Save**.

## Google Vertex AI [#google-vertex-ai]

**What you need:** A Google Cloud project with Vertex AI access, a target location, and either a Vertex API key for Express Mode or application credentials.

1. In **Settings > Organization > Models**, find the **Google Vertex AI** card.
2. Enter the **Project ID**, **Location**, and **Model**.
3. Choose &#x2A;*Vertex API key (Express Mode)** or **Application credentials**.
4. Paste the API key or credentials.
5. Click **Test**, then **Save**.

**Main options:**

| Option             | Type   | Description                                                      |
| ------------------ | ------ | ---------------------------------------------------------------- |
| `project_id`       | string | Google Cloud project ID.                                         |
| `location`         | string | Vertex AI location, for example `global` or a regional location. |
| `vertex_auth_mode` | string | Authentication mode: `api_key` or `credentials`.                 |

## Azure OpenAI [#azure-openai]

**What you need:** An Azure OpenAI API key, endpoint, deployment name, and API version.

1. In **Settings > Organization > Models**, find the **Azure OpenAI** card.
2. Paste your API key.
3. Enter the **Endpoint**, **Deployment Name**, and **API Version**.
4. Click **Test**, then **Save**.

**Main options:**

| Option        | Type   | Description                                                                         |
| ------------- | ------ | ----------------------------------------------------------------------------------- |
| `endpoint`    | string | Azure OpenAI resource endpoint, for example `https://my-resource.openai.azure.com`. |
| `deployment`  | string | Azure OpenAI deployment name.                                                       |
| `api_version` | string | Azure OpenAI API version.                                                           |

## AWS Bedrock [#aws-bedrock]

**What you need:** An IAM access key pair with Bedrock permissions, plus a target AWS region.

### Creating AWS credentials for Bedrock [#creating-aws-credentials-for-bedrock]

1. Open the [IAM console](https://console.aws.amazon.com/iam/) and create a new IAM user (e.g., `clearly-bedrock`).
2. Attach a permissions policy. Recommended starting policy:
   ```json
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Sid": "BedrockInvoke",
         "Effect": "Allow",
         "Action": [
           "bedrock:InvokeModel",
           "bedrock:InvokeModelWithResponseStream"
         ],
         "Resource": [
           "arn:aws:bedrock:*::foundation-model/*",
           "arn:aws:bedrock:*:*:inference-profile/*",
           "arn:aws:bedrock:*:*:application-inference-profile/*"
         ]
       },
       {
         "Sid": "MarketplaceAccess",
         "Effect": "Allow",
         "Action": [
           "aws-marketplace:ViewSubscriptions",
           "aws-marketplace:Subscribe"
         ],
         "Resource": "*"
       }
     ]
   }
   ```
   This covers foundation models, cross-region inference profiles, and marketplace model subscriptions. Review and harden as needed: scope `Resource` ARNs to specific regions or model IDs you actually use, and remove the `MarketplaceAccess` statement if your models are already subscribed.
3. Go to **Security credentials** for the user, click **Create access key**, and select **Third-party service**.
4. Copy the **Access Key ID** and **Secret Access Key**. The secret is shown only once.
5. In the [Bedrock console](https://console.aws.amazon.com/bedrock/), navigate to **Model access** and request access to the models you plan to use. Access is per-region.

### Connecting in Clearly AI [#connecting-in-clearly-ai]

1. In **Settings > Organization > Models**, find the **AWS Bedrock** card.
2. Enter your **Access Key ID** and **Secret Access Key**.
3. Select your **AWS Region** from the dropdown.
4. Optionally enter a model identifier in **Test Model** to validate inference access.
5. Click **Test**, then **Save**.

**Example model identifiers:**

| Model ID                                    | Notes                          |
| ------------------------------------------- | ------------------------------ |
| `global.anthropic.claude-sonnet-4-6`        | Cross-region inference profile |
| `anthropic.claude-3-7-sonnet-20250219-v1:0` | Region-specific                |
| `amazon.nova-pro-v1:0`                      | Amazon first-party model       |

Model availability varies by region. Bedrock also supports Meta Llama and other foundation models; use the model ID shown in the AWS Bedrock console.

**Supported regions:** `us-east-1`, `us-east-2`, `us-west-2`, `eu-west-1`, `eu-central-1`, `eu-central-2`, `eu-west-3`, `ap-northeast-1`, `ap-northeast-2`, `ap-south-1`, `ap-southeast-1`, `ap-southeast-2`, `ap-southeast-3`, `ca-central-1`, `sa-east-1`.

**Main options (via `inference_configuration`):**

Bedrock wraps inference parameters inside an `inference_configuration` object:

```json
{
  "inference_configuration": {
    "temperature": 0.2,
    "max_tokens": 4096,
    "top_p": 0.9
  }
}
```

| Option        | Type  | Description                                   |
| ------------- | ----- | --------------------------------------------- |
| `temperature` | float | Randomness (0 = deterministic, 1 = creative). |
| `max_tokens`  | int   | Maximum tokens in the response.               |
| `top_p`       | float | Nucleus sampling threshold.                   |

For model-specific parameters (e.g., enabling extended thinking on Claude), use `additional_model_request_fields`:

```json
{
  "additional_model_request_fields": {
    "thinking": { "type": "enabled", "budget_tokens": 1024 }
  }
}
```

Requests use the **AWS Region** you select. If you enter a cross-region or global inference profile, AWS may route inference according to that profile. Use region-specific model IDs or inference profiles when residency boundaries matter. For VPC-private access, set `endpoint_url` in the Advanced Options to your VPC endpoint.

## Advanced options [#advanced-options]

Each provider card includes an &#x2A;*Advanced Options (JSON)** field. These parameters are passed to the model provider client at inference time. Leave as `{}` for defaults. See the provider-specific tables above for common options.

## Important notes [#important-notes]

* **Enable providers before assignment.** Feature assignments that use BYOK require the provider configuration to be enabled.
* **Test before saving.** Any change to credentials, model, or advanced options requires a successful connection test before you can save.
* **Keys are encrypted at rest.** Saved keys are never displayed in the UI.
* **Removing a configuration** removes that saved provider setup. Update any feature assignments that used the provider, or use Clearly AI's managed defaults.