> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.beatapi.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.beatapi.io/_mcp/server.

# Using BeatAPI in Immersive Translate

> Add BeatAPI as a custom translation service in the Immersive Translate browser extension for bilingual pages, PDFs, and subtitles.

# Using BeatAPI in Immersive Translate

Immersive Translate renders bilingual web pages, PDFs, and video subtitles. It accepts any OpenAI-compatible endpoint as a custom translation service, so BeatAPI can drive it directly.

## Prerequisites

1. **The extension installed** — from the Chrome Web Store, Edge Add-ons, Firefox Add-ons, or the official site.
2. **A BeatAPI API key** — create one in [Dashboard → API Keys](https://beatapi.io/dashboard/apikeys).

## Step 1: Open the settings

Click the Immersive Translate icon in the browser toolbar, then **Settings** at the bottom left of the popup. Choose **Translation Services** in the left menu.

## Step 2: Add BeatAPI as a custom service

Click **+ Add Custom Translation Service** at the top of the list, then fill in:

| Field                   | Value                                        |
| ----------------------- | -------------------------------------------- |
| Service name            | `BeatAPI`                                    |
| APIKEY                  | Your BeatAPI API key                         |
| Model                   | A model ID, for example `glm-5.3-flash`      |
| Custom API endpoint     | `https://api.beatapi.io/v1/chat/completions` |
| Max requests per second | `3`–`5`                                      |

> **Note**
>
> This field wants the **complete endpoint**, not a base URL — `https://api.beatapi.io/v1/chat/completions`, path included. This is the one integration on this site where a bare `https://api.beatapi.io/v1` is wrong.

Save, then return to the extension popup and select **BeatAPI** in the Translation Service dropdown.

## Step 3: Translate

* **A page** — click the extension icon and choose translate, or press `Alt+A`.
* **A PDF** — open an online PDF in the browser and press `Alt+A`. Local files need to be opened in a web viewer first.
* **Subtitles** — play a video on a supported platform; bilingual subtitles appear automatically.
* **A selection** — select text and use the word-translation panel, `Alt+W` by default.

## Choosing a model

Translation is the highest-volume, most repetitive workload most people run. A whole page is many small requests, so model choice moves the bill more here than anywhere else.

| Model ID                 | Choose it for                                              |
| ------------------------ | ---------------------------------------------------------- |
| `glm-5.3-flash`          | Everyday browsing — the cheapest tier that translates well |
| `gemini-3.7-flash`       | Fast, strong across many languages                         |
| `qwen3.8-flash`          | Chinese-language pages                                     |
| `deepseek-v4-flash-0731` | Cheap and capable for bulk work                            |
| `claude-sonnet-5`        | Literary and creative text, where tone matters             |
| `gpt-5.6-terra`          | Technical and academic documents                           |

The full catalogue is on the [Text API](/text-api) pages and the [pricing page](https://beatapi.io/pricing).

> **Note**
>
> The regular paid DeepSeek models, `deepseek-v4-flash-0731` included, bill one rate at all hours. Only the two DeepSeek HC (high-cache) models double on weekdays 09:00–12:00 and 14:00–18:00 Beijing time, so check the rate before using one for scheduled or heavy weekday-daytime browsing. The [pricing page](https://beatapi.io/pricing) footnotes give the exact hours.

## FAQ

### Nothing translates after configuring

1. Confirm **BeatAPI** is selected in the Translation Service dropdown, not just saved in settings.
2. The endpoint must be the full path `https://api.beatapi.io/v1/chat/completions`.
3. Confirm the key is active in [Dashboard → API Keys](https://beatapi.io/dashboard/apikeys).
4. Model IDs are case-sensitive.

### Translation is slow or times out

Lower **Max requests per second** to `3`. A page fans out into many concurrent calls, and the request rate — not the model — is usually what stalls. Then switch to a faster tier such as `glm-5.3-flash` or `gemini-3.7-flash`.

### 429 rate_limit_exceeded

Same cause as above, one step further. Lower the per-second setting first; the account's per-minute allowance rises with lifetime top-ups and is shown on the dashboard.

### The translation quality is poor

Move up a tier — `claude-sonnet-5` for prose, `gpt-5.6-terra` for technical text — and set the AI Expert style to match the material. For recurring terminology, configure the extension's terminology list; that fixes consistency in a way a bigger model will not.

### 402 insufficient_credits

Insufficient balance: the balance is zero or below the price of the request. Top up from the dashboard.

### Watching what this costs

Give the extension its own BeatAPI key. Browsing generates a long tail of small calls, and a separate key keeps that separable from application traffic in `by_api_key` on [`GET /v1/usage`](/quick-guide) and on the dashboard.

## Support

Open a support ticket from the [dashboard](https://beatapi.io/dashboard) and include the `request_id` from the failing response.