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

# Model providers

> Point your workspace at your own OpenAI, AWS Bedrock, Google AI Studio or LiteLLM credentials, so model requests run on your account.

<Note>
  **These are your provider credentials, not Pretty credentials.** Pretty does not issue API
  keys and has no public API or SDK. When workspace settings say *"API keys"*, it means the keys
  your organization holds with a model provider, which Pretty then calls on your behalf.
</Note>

By default your workspace runs on Pretty's own provider access. Bring-your-own-key (BYOK) points
it at yours instead: the requests go to your account, on your terms, and appear on your provider
bill.

## Setting it up

From the settings drawer, **Workspace → Edit Workspace Settings**, then the **Custom API Keys**
section. Owners and Admins only.

Pick a **Provider**, paste the key, fill in whatever else that provider needs, and click
**Connect**. For LiteLLM and for OpenAI's regional endpoints the button reads *"Verifying
connection…"* while Pretty checks the credentials actually work before saving them.

Once connected, the section collapses to a single row showing the provider name and its state,
such as `Connected · eu-central-1`, with **Disconnect** next to it. Disconnecting returns the
workspace to Pretty's provider access, unless BYOK is required (below).

One provider is active at a time. To move to a different one, disconnect the current provider
first. The form only reappears once nothing is connected.

## The four providers

<Tabs>
  <Tab title="OpenAI">
    **Fields:** OpenAI API key (`sk-…`), **Region**.

    Region controls data residency and offers three choices:

    | Choice  | Endpoint            |
    | ------- | ------------------- |
    | Default | `api.openai.com`    |
    | EU      | `eu.api.openai.com` |
    | US      | `us.api.openai.com` |

    Regional endpoints only accept keys from an OpenAI project created in that region, which
    requires data-residency approval from OpenAI. If your key is an ordinary one, leave the
    region on Default.

    **Models in the picker:** GPT-5.6 Terra (High), GPT-5.6 Sol (Medium), GPT-5.6 Sol (High).
  </Tab>

  <Tab title="AWS Bedrock">
    **Fields:** Bedrock API key (`br-…`), **Region**.

    Regions offered are all in the EU: `eu-central-1`, `eu-west-1`, `eu-west-3`, `eu-north-1`,
    `eu-south-1`, `eu-south-2`. Pick the one where your Bedrock model access is enabled. A
    region without the models enabled connects and then fails per request.

    **Models in the picker:** Claude Opus 4.6, Claude Sonnet 4.6, Claude Haiku 4.5.
  </Tab>

  <Tab title="Google AI Studio">
    **Fields:** Google AI Studio API key (`AIza…`). Nothing else. The endpoint is global, so
    there is no region to choose.

    **Models in the picker:** Gemini 3.6 Flash (Medium and High), Gemini 3.1 Pro Preview (Medium
    and High).
  </Tab>

  <Tab title="LiteLLM">
    **Fields:** LiteLLM API key (`sk-…`), **Proxy base URL**, for example
    `https://llm.your-company.internal`.

    Both are required: a LiteLLM virtual key is only valid against the proxy that minted it. The
    proxy has to be reachable from Pretty's servers, so a purely internal address will not work
    unless it resolves publicly.

    **Models in the picker:** the same list as the default setup (GPT-5.6 Terra and Sol), routed
    through your proxy. Each has to exist on the proxy's model list.
  </Tab>
</Tabs>

Whichever you connect, the [model picker](/chat/models) in chat is stocked from that provider, so
the list your team sees changes with the provider, not with their account.

## Requiring BYOK

A workspace can be set to refuse Pretty's provider access entirely, so chat never silently falls
back to it. With that flag on and no key configured, requests stop with:

> Your organization requires an API key, but none is configured. Add one in settings to
> continue.

Admins get an **Open settings** action on that message. Members cannot fix it themselves. They
need an admin to connect a key.

## Troubleshooting

<AccordionGroup>
  <Accordion title="The AI provider rejected your API key" icon="key">
    *"Please check that your key is valid in settings."* The key was revoked, mistyped, or has no
    access to the model being used. Reconnect with a fresh key. For OpenAI on a regional
    endpoint, check the key belongs to a project in that region. An ordinary key against
    `eu.api.openai.com` is rejected.
  </Accordion>

  <Accordion title="The selected model isn't available on your LiteLLM proxy" icon="plug-circle-xmark">
    *"An admin needs to add it to the proxy's model list."* Pretty offers the model; your proxy
    does not route it. Add it to the proxy config, or tell people which models to stay on.
  </Accordion>

  <Accordion title="The AI provider's quota has been exceeded" icon="chart-line">
    This is your provider's limit, not Pretty's: *"Please check your plan and billing details,
    or update your API key."* Raise the quota with the provider. For Pretty's own monthly
    budget, which is a different thing, see [Usage and limits](/admin/usage-limits).
  </Accordion>

  <Accordion title="Requests fail only in one Bedrock region" icon="location-dot">
    Model access in Bedrock is granted per region. Enable the models in that region, or
    reconnect against a region where they are already enabled.
  </Accordion>
</AccordionGroup>
