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

# OpenRouter

> Create OpenRouter keys, add credits and provider keys, connect them in ReachCrew and choose the models, with provider pinning and transcription.

OpenRouter is the gateway every AI feature in ReachCrew runs through, using your own provider keys. You need it for reply classification and drafts, AI columns and call transcription. Without it those features cannot run.

> [!NOTE]
>
> **What you need**
>
> * An [OpenRouter](https://openrouter.ai) account.
> * An account with at least one model provider (OpenAI, Anthropic, Google and so on) and an API key from it. ReachCrew works only in "bring your own key" (BYOK) mode.
> * The **owner** or **admin** role in ReachCrew.
> * About 15 minutes.

## Overview

**What uses AI:**

* **Reply classification and drafts** in the CRM, using the default model.
* **AI columns** in Tables, each on one of your allowed models. See [AI columns](https://docs.reachcrew.space/tables/ai-columns.md).
* **Call transcription** of WhatsApp recordings, using the transcription model.
* Other internal tasks, such as the formula generator, which use the default model.

**Costs.** ReachCrew adds no markup and shows no prices. Model usage on a BYOK key is billed by the model provider to your own account with them. Anything OpenRouter itself charges is billed by OpenRouter: see its [FAQ](https://openrouter.ai/docs/faq) and [BYOK guide](https://openrouter.ai/docs/guides/overview/auth/byok) for current terms.

> [!NOTE]
>
> This page covers the OpenRouter side and the connection. For what each control in the app does, see [AI provider](https://docs.reachcrew.space/workspace/ai-provider.md).

## Set it up

**1. Create an OpenRouter account and add credits**

Sign up at [openrouter.ai](https://openrouter.ai). OpenRouter's FAQ says you add credits before you create keys and start using the API: open [Settings → Credits](https://openrouter.ai/settings/credits) and make a deposit. Your model calls run on your own provider keys (next steps), but the credits page is where your OpenRouter balance lives.

**2. Add your provider keys to OpenRouter**

In OpenRouter's [BYOK settings](https://openrouter.ai/integrations), add the API key of each provider you want ReachCrew to use (see [OpenRouter's BYOK guide](https://openrouter.ai/docs/guides/overview/auth/byok)). Keep them in the prioritized section. A key in the fallback section is shown in ReachCrew but cannot be selected.

**3. Set shared capacity to never**

On each provider's page in OpenRouter, set the shared capacity option to never use shared capacity. The wording on OpenRouter's current page offers "Never use shared capacity for models this key applies to" and "Never use shared capacity for any model on this provider". ReachCrew's own checkbox quotes the older phrase **Never use shared capacity on this provider**. Choose the option that stops shared capacity for every model on the provider, so no request ever spends OpenRouter's capacity or credits on that provider. OpenRouter does not expose this setting through its API, so you confirm it in ReachCrew later.

**4. Create an inference key**

Open [Settings → Keys](https://openrouter.ai/settings/keys), create a key, give it a name and, if you like, a credit limit, and copy it. It starts with `sk-or-v1-`.

**5. Create a management key**

Open [Settings → Management keys](https://openrouter.ai/settings/management-keys), click **Create New Key**, give it a name and an expiration date, and copy it. It starts with `sk-or-mgmt-`. A management key cannot run models. ReachCrew uses it only to read which provider keys you added in BYOK, so it can list them.

**6. Connect OpenRouter in ReachCrew**

Go to **Settings → AI provider**. In the **OpenRouter account** section click **Connect OpenRouter** and fill in:

* **Account name** (optional). Defaults to "OpenRouter account".
* **Inference API key**.
* **Management API key**.

Click **Verify & connect**. ReachCrew checks the inference key, reads your BYOK keys with the management key, and requires at least one active prioritized BYOK key. The keys are stored encrypted. The card then reads **Verified and ready to use**. You can add a second account with **Connect another account** and pick the active one.

![The Connect OpenRouter form on the AI provider page with account name, inference API key and management API key fields and a Verify and connect button](https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/screenshots/app/openrouter-connect.png?fit=max\&auto=format\&n=b3LOEBKCy3btecGb\&q=85\&s=4731e06c0b91279a12b49c2169adcead)

Three fields, then Verify and connect.

**7. Choose providers and models**

Under **Providers and models**, click **Refresh providers** if you added a key a moment ago. Switch on the providers ReachCrew may use, open each list, and tick the models you allow. Only ticked models appear in AI columns.

**8. Set the default model**

Under **Default model**, pick a **Provider and model**. Only ticked text models that support structured output are listed. Every internal AI task uses it, and new compatible AI columns select it automatically.

**9. Choose the transcription model (optional)**

Under **Call transcription model**, pick a model that accepts audio input, for example a Gemini model. Leave it on **Off** and recordings are not transcribed. See [Transcription](#transcription-model).

**10. Confirm shared capacity and save**

Tick **Never use shared capacity** (under **Shared capacity**) to confirm step 3, then click **Save AI settings**. Saving needs a connected account, at least one provider and one model, a default model and the confirmation. Until you confirm it, ReachCrew blocks every model call.

> [!WARNING]
>
> Switching to a different OpenRouter account clears your providers, models, default model, transcription model and the shared capacity confirmation. Set them up again.

## Provider pinning

For every text request ReachCrew sends OpenRouter `provider.only` and `provider.order` set to the one provider of the model you chose, `allow_fallbacks: false` and `require_parameters: true`. Image requests use the same single-provider pin with fallbacks off, through OpenRouter's image endpoint (which does not support `require_parameters`).

Why: with fallbacks on, a failed request could silently move to another provider, or to OpenRouter's shared capacity, spending OpenRouter's credits and sending your data to a provider you never approved. With fallbacks off, a failure is a failure. It costs you some resilience and keeps your data and spend on the providers and keys you chose. See OpenRouter's [provider routing](https://openrouter.ai/docs/guides/routing/provider-selection) reference.

`OPENROUTER_SITE_URL` sets the attribution URL sent to OpenRouter.

## Transcription model

The transcription model is **off by default**. While it is off, recordings are not transcribed, and an attempt fails with "Transcription is off: choose a transcription model in Settings → AI provider". If you later remove the chosen model or provider from the allowed list, it resets to **Off**. Gemini models merge the audio channels, so who spoke is inferred rather than labelled.

## Check that it works

> [!TIP]
>
> **Settings → AI provider** shows the account as **Verified and ready to use**, and the footer shows all four steps complete.

Add an AI column to a table and run it on one row ([AI columns](https://docs.reachcrew.space/tables/ai-columns.md)). In OpenRouter's [Activity](https://openrouter.ai/activity) page you should see the request on the provider you chose.

## Troubleshooting

> [accordion] Enter both the inference API key and management API key.
>
> Both fields are required. The management key is a separate key.

> [accordion] Use an OpenRouter inference key here; management keys cannot run models
>
> You pasted a `sk-or-mgmt-` key into **Inference API key**. Use a key from Settings → Keys.

> [accordion] No active prioritized BYOK credentials were found in this OpenRouter workspace
>
> You have not added a provider key in OpenRouter BYOK, or it is disabled or in the fallback section. Add one, then connect again.

> [accordion] OpenRouter request failed (401)
>
> OpenRouter rejected the key: it is wrong, deleted, expired or past its credit limit. Create a new one. Management keys can expire, so set the expiry you want.

> [accordion] Connect OpenRouter in AI Settings
>
> No account is connected. Do step 6.

> [accordion] Choose a default OpenRouter model in AI Settings
>
> No default model is saved. Do steps 7 and 8, then **Save AI settings**.

> [accordion] OpenRouter BYOK-only routing is not confirmed in AI Settings
>
> Tick **Never use shared capacity** and save.

> [accordion] Model ... is not enabled for ... in AI Settings
>
> The model or its provider is not ticked. Tick it under **Providers and models**.

> [accordion] Reconnect OpenRouter in AI Settings
>
> The saved connection is unavailable or no longer verified. Connect again.

> [accordion] Transcription is off: choose a transcription model in Settings → AI provider
>
> Pick a transcription model and save.

> [accordion] No BYOK providers found
>
> Add a key in OpenRouter's BYOK settings, then click **Refresh providers**. A provider is greyed out when it has no prioritized key or OpenRouter returned no models for it.

## Next

> [card] [AI provider](https://docs.reachcrew.space/workspace/ai-provider.md)
>
> Every control on the AI provider page.

> [card] [AI columns](https://docs.reachcrew.space/tables/ai-columns.md)
>
> Use your models per row.

> [card] [Cloudflare R2](https://docs.reachcrew.space/integrations/cloudflare-r2.md)
>
> Where call recordings live before transcription.

> [card] [Integrations overview](https://docs.reachcrew.space/integrations.md)
>
> All integrations and who can connect them.


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