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

# Bring Your Own Keys (BYOK)

> Use your own API keys for 100% free, unlimited Utter usage

BYOK lets you use Utter with 100% free, unlimited usage by connecting your own provider keys.

Bring Your Own Keys means you add API keys for speech-to-text and AI processing providers. Utter does not charge usage fees for BYOK.

You can also use Utter with 100% free, unlimited usage through local models. For that setup, follow [Use Utter Locally](/guides/use-utter-locally).

Your data is sent directly to the providers you choose.

## How It Works

1. Get an API key from any supported provider
2. Add the key in **Utter Settings > Advanced Settings > Custom Models**
3. Select the provider and model you want to use
4. Use Utter without paying Utter for transcription or AI usage

## Supported Providers

### Speech-to-Text

Convert your voice to text using any of these providers:

<CardGroup cols={3}>
  <Card>
    <div style={{display: "flex", alignItems: "center", justifyContent: "center", height: "60px"}}>
      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/OpenAI-black-wordmark.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=6e1291044c7a46ecd29dc96fdadcaef2" alt="OpenAI" className="block dark:hidden" style={{width: "90px"}} width="1604" height="718" data-path="images/OpenAI-black-wordmark.svg" />

      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/OpenAI-white-wordmark.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=b29af88d35fc871e0c7631a57be2aed7" alt="OpenAI" className="hidden dark:block" style={{width: "90px"}} width="1604" height="719" data-path="images/OpenAI-white-wordmark.svg" />
    </div>
  </Card>

  <Card>
    <div style={{display: "flex", alignItems: "center", justifyContent: "center", height: "60px"}}>
      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/elevenlabs-logos/elevenlabs-logo-black.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=56bb917729919d4e09c1e6b637ca0188" alt="ElevenLabs" className="block dark:hidden" style={{width: "90px"}} width="694" height="90" data-path="images/elevenlabs-logos/elevenlabs-logo-black.svg" />

      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/elevenlabs-logos/elevenlabs-logo-white.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=60543d578a1dffcafaaa5e056874cd5f" alt="ElevenLabs" className="hidden dark:block" style={{width: "90px"}} width="694" height="90" data-path="images/elevenlabs-logos/elevenlabs-logo-white.svg" />
    </div>
  </Card>

  <Card>
    <div style={{display: "flex", alignItems: "center", justifyContent: "center", height: "60px"}}>
      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/deepgram/deepgram-logo-black.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=e5749a316f70c50625e26bf3fa2a28a8" alt="Deepgram" className="block dark:hidden" style={{width: "90px"}} width="130" height="30" data-path="images/deepgram/deepgram-logo-black.svg" />

      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/deepgram/deepgram-logo-white.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=05a81891216f792eb2c285bcb0504592" alt="Deepgram" className="hidden dark:block" style={{width: "90px"}} width="130" height="30" data-path="images/deepgram/deepgram-logo-white.svg" />
    </div>
  </Card>
</CardGroup>

### AI Processing

Process and format your transcriptions with:

<CardGroup cols={2}>
  <Card>
    <div style={{display: "flex", alignItems: "center", justifyContent: "center", height: "60px"}}>
      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/gemini.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=61fdc520e2bdb4456ff69b09be30763a" alt="Google Gemini" style={{width: "85px"}} width="288" height="65" data-path="images/gemini.svg" />
    </div>
  </Card>

  <Card>
    <div style={{display: "flex", alignItems: "center", justifyContent: "center", height: "60px"}}>
      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/openrouter.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=28b04179532441acd301850fcd632006" alt="OpenRouter" style={{width: "110px"}} width="1200" height="400" data-path="images/openrouter.svg" />
    </div>
  </Card>

  <Card>
    <div style={{display: "flex", alignItems: "center", justifyContent: "center", height: "60px"}}>
      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/OpenAI-black-wordmark.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=6e1291044c7a46ecd29dc96fdadcaef2" alt="OpenAI" className="block dark:hidden" style={{width: "90px"}} width="1604" height="718" data-path="images/OpenAI-black-wordmark.svg" />

      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/OpenAI-white-wordmark.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=b29af88d35fc871e0c7631a57be2aed7" alt="OpenAI" className="hidden dark:block" style={{width: "90px"}} width="1604" height="719" data-path="images/OpenAI-white-wordmark.svg" />
    </div>
  </Card>

  <Card>
    <div style={{display: "flex", alignItems: "center", justifyContent: "center", height: "60px"}}>
      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/Anthropic_Logo_black.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=3f97cd640cde2c6dd126f18c18586e3b" alt="Anthropic" className="block dark:hidden" style={{width: "110px"}} width="579" height="65" data-path="images/Anthropic_Logo_black.svg" />

      <img src="https://mintcdn.com/thirdtech/JlHK0hFwT4s4tVIH/images/Anthropic_Logo_white.svg?fit=max&auto=format&n=JlHK0hFwT4s4tVIH&q=85&s=65a1deff61c61b991dc5eba84da6ec59" alt="Anthropic" className="hidden dark:block" style={{width: "110px"}} width="579" height="65" data-path="images/Anthropic_Logo_white.svg" />
    </div>
  </Card>
</CardGroup>

## Setup

<Steps>
  <Step title="Get an API Key">
    Sign up with any supported provider and generate an API key
  </Step>

  <Step title="Open Utter Settings">
    Go to **Settings > Advanced Settings > Custom Models**
  </Step>

  <Step title="Add Your Key">
    Paste your API key for the provider you want to use
  </Step>

  <Step title="Select a Model">
    Choose which model to use for speech-to-text and AI processing
  </Step>
</Steps>

**What to expect:** Your providers and models appear in Utter, and new dictation requests use your configured keys.

**If that did not work:** Re-paste keys without extra spaces, then test one short recording.

## Security

When using BYOK:

* Keys are stored securely on your device, encrypted in Keychain
* Audio/text is sent directly to your configured providers

## Troubleshooting

<AccordionGroup>
  <Accordion title="API key not working">
    1. Verify the key is correct (no extra spaces)
    2. Check the key has proper permissions
    3. Ensure your account has credits/payment method
    4. Try regenerating the key
  </Accordion>

  <Accordion title="Transcription slow with BYOK">
    This can happen with free-tier API keys that have rate limits. Consider upgrading your API tier for faster processing.
  </Accordion>
</AccordionGroup>
