# FAQ

> Soluções para erros e problemas comuns de configuração da API da LMU AI — 401 / 403 / 429 / 500, cobrança de tokens, troca de modelos e troubleshooting de Claude Code / Codex CLI.

URL: https://docs.lmuai.com/pt/docs/guide/faq



## Issue 1: Stream desconectado / timeout [#issue-1]

**Mensagem de erro:**

```
stream disconnected before completion: error sending request for url
(https://api.lmuai.com/responses)
```

**Causa:** uma queda de stream clássica, geralmente por:

* rede local instável (alternância frequente entre Wi-Fi / dados móveis, sinal fraco, perda de pacotes)
* **uma VPN / proxy / proxy do sistema está ativa**: o proxy troca o IP de saída e derruba a conexão

**Solução:**

1. **Desligue qualquer VPN / proxy / proxy do sistema e tente novamente** — a LMU AI é uma conexão doméstica direta e não precisa de VPN
2. Verifique se a sua rede local está estável; troque para uma rede mais confiável se necessário

<Callout type="info" title="Sem VPN — o acesso direto dentro da China é o mais rápido">
  O gateway da LMU AI é hospedado **na China continental**, então pode ser chamado diretamente de uma rede doméstica **sem VPN, proxy ou qualquer contorno**. Uma conexão direta entrega os resultados mais rápidos e estáveis; por outro lado, uma VPN ou proxy que troca o IP de saída tende a causar quedas de stream.
</Callout>

***

## Issue 2: Erro de retry 429 [#issue-2]

**Mensagem de erro:**

```
exceeded retry limit, last status: 429 Too Many Requests
```

**Causa:** sua cota diária acabou.

**Solução:**

1. Abra **Minha Assinatura** e confirme se a cota diária foi esgotada
2. Se precisar de mais, compre um plano de um **nível diferente** e depois mude para o grupo do novo plano em **API Keys** no console

<Callout type="warn" title="Renovação vs. somar cota">
  * **Não compre o mesmo plano** — o mesmo plano renova, não soma cota
  * Para somar cota, compre um plano diferente (por exemplo, trocar um passe diário por um passe mensal)
</Callout>

***

## Issue 3: 401 Incorrect API key [#issue-3]

**Mensagem de erro:**

```
unexpected status 401 Unauthorized: Incorrect API key provided
```

**Causa:** a requisição ainda foi para o endpoint oficial da OpenAI, em vez do nosso repasse.

**Solução:**

1. Confirme que o `config.toml` foi criado ou substituído corretamente conforme o guia
2. Reinicie a IDE (VS Code / Cursor, etc.) para recarregar os arquivos de configuração
3. Se você já tinha feito login com uma conta oficial ou de outro provedor, saia primeiro e depois reconfigure

<Callout type="info" title="O que fazer ao encontrar um erro">
  Tire uma captura de tela do erro e traduza — isso normalmente aponta a causa rapidamente.
</Callout>

***

## Issue 4: Scripts desativados (Windows) [#issue-4]

**Mensagem de erro:**

```
codex: cannot be loaded because running scripts is disabled on this system.
```

**Solução:** execute o seguinte no terminal e depois abra um novo terminal:

```powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
```

***

## Issue 5: Node.js não encontrado (Windows) [#issue-5]

**Mensagem de erro:** `CODEX` is not recognized as a cmdlet, ou similar

**Causa:** o Node.js não está instalado ou o PATH dele está quebrado.

**Solução:** reinstale o Node.js 20+ e abra um novo terminal.

***

## Issue 6: 503 No available accounts (variáveis de ambiente sobrescrevem a chave) [#issue-6]

**Mensagem de erro:**

```
Error code: 503 - {'error': {'message': 'No available accounts: no available accounts', 'type': 'api_error'}}
```

**Causa:** seu `~/.zshrc` (ou `~/.bashrc`) define `ANTHROPIC_AUTH_TOKEN` / `ANTHROPIC_BASE_URL` / `ANTHROPIC_MODEL`. Assim que o shell inicia, essas variáveis passam a valer globalmente e sobrescrevem a chave de API configurada na sua IDE (Cursor, VS Code, etc.), então a requisição usa a chave errada.

**Solução (escolha uma):**

**Opção A: remover as variáveis do `.zshrc`**

Abra o `~/.zshrc` e apague estas linhas:

```bash
export ANTHROPIC_AUTH_TOKEN="..."
export ANTHROPIC_BASE_URL="..."
export ANTHROPIC_MODEL="..."
```

Depois execute `source ~/.zshrc` para aplicar e reinicie a IDE.

**Opção B: mover as variáveis para um arquivo separado, carregado apenas para o Claude Code CLI**

1. Crie o `~/.claude_env` com as três linhas:

```bash
export ANTHROPIC_AUTH_TOKEN="sk-your-lmu-ai-api-key"
export ANTHROPIC_BASE_URL="https://api.lmuai.com"
export ANTHROPIC_MODEL="the-model-you-use"
```

2. Apague essas três linhas do `~/.zshrc`.

3. Carregue-as manualmente ao iniciar o Claude Code:

```bash
source ~/.claude_env && claude
```

Assim a IDE usa a chave do arquivo de configuração dela e o Claude Code CLI usa as variáveis de ambiente, sem interferência entre os dois.

***

## Issue 7: 400 Invalid signature in thinking block (troca de modelos entre grupos) [#issue-7]

**Mensagem de erro:**

```
upstream error: 400 messages.<index>.content.<index>:
Invalid `signature` in `thinking` block
```

**Causa:** quando o Extended Thinking do Claude gera um bloco `thinking`, ele anexa uma **assinatura criptografada** fortemente vinculada à **conta upstream específica** que a produziu. Se você **trocar de modelo entre grupos** dentro de uma mesma conversa (por exemplo, de `claude-sonnet-5` em um grupo "Claude-Pro direto" para `claude-fable-5` em um grupo "Claude-MAX de multiplicador alto"), o cliente envia o histórico anterior (incluindo o bloco thinking assinado) para a conta upstream do novo grupo. Grupos diferentes usam **upstreams diferentes** e não conseguem verificar uma assinatura emitida por outro, então o retorno é 400.

**Gatilhos típicos:**

* O cliente permite trocar de modelo no meio da conversa e carrega todo o histórico anterior
* Os grupos antes e depois da troca vêm de **contas upstream diferentes** (por exemplo, "grupo direto" ↔ "grupo de repasse / MAX de multiplicador alto")

**Solução (qualquer uma):**

1. **Comece uma nova conversa ao trocar de grupo** — não carregar histórico antigo é a correção mais simples e confiável.
2. **Mantenha um grupo por conversa** — se precisar de colaboração entre vários modelos, troque dentro do mesmo grupo (mesmo upstream).
3. **Remova os blocos thinking do histórico** — se o cliente permitir editar o histórico, apague os blocos `thinking` antes de trocar de grupo.

<Callout type="info" title="Por que tentar de novo não ajuda?">
  Este é um **erro 4xx de cliente irrecuperável causado por assinatura inválida**. Quando o gateway detecta, ele devolve o 400 direto ao cliente e não tenta automaticamente em outra conta — porque qualquer upstream que não corresponda falharia da mesma forma.
</Callout>

***

## Issue 8: 400 Unknown parameter: 'tools\[0].n' (tools enviado a um endpoint de imagem) [#issue-8]

**Mensagem de erro:**

```
400 - {'error': {'code': 'unknown_parameter', 'message': "Unknown parameter: 'tools[0].n'.", 'param': 'tools[0].n', 'type': 'invalid_request_error'}}
```

**Endpoints afetados:** `/v1/images/generations`, `/v1/images/edits` (geração / edição de imagens).

**Causa:** o cliente colocou um array `tools` no corpo da requisição de imagem, com um campo `n` dentro de `tools[0]`. Os endpoints de imagem da OpenAI &#x2A;*não aceitam `tools`** (chamadas de ferramenta pertencem aos endpoints Chat / Responses; endpoints de imagem não têm esse conceito), então o upstream rejeita com 400.

Isso normalmente vem de um cliente / wrapper de SDK com bug que coloca a "quantidade de imagens `n`" no lugar errado — aninhada em `tools[0].n` ou copiada de um template de requisição de Chat.

**Solução:**

1. **Remova o campo `tools` do corpo da requisição** — `generations` / `edits` de imagem não suportam chamadas de ferramenta; descarte o campo por completo.
2. **Para gerar várias imagens, coloque a quantidade no `n` de nível superior** — apenas `/v1/images/generations` suporta `n` (várias por chamada); `/v1/images/edits` não suporta, então remova o `n` ali.
3. **Verifique a versão do SDK do cliente** — se um wrapper monta os parâmetros automaticamente, atualize ou substitua para que ele não aplique um template de Chat aos endpoints de imagem.

<Callout type="info" title="Por que trocar de conta / tentar de novo não ajuda?">
  Este é um erro 4xx de cliente causado por um **corpo de requisição inválido**, sem relação com a conta ou o grupo upstream — o gateway repassa a requisição como está, e qualquer conta retorna o mesmo 400. É preciso corrigir os parâmetros que o cliente envia.
</Callout>

***

## Issue 9: Preciso de VPN? [#issue-9]

**Não.** O gateway da LMU AI é hospedado **na China continental**, e `api.lmuai.com` pode ser chamado diretamente de uma rede doméstica sem VPN, proxy ou qualquer contorno.

Por outro lado, uma VPN ou proxy que troca o IP de saída tende a causar quedas de stream (veja [Issue 1](#issue-1)). Uma conexão doméstica direta entrega os resultados mais rápidos e estáveis.

***

## Issue 10: 401 API\_KEY\_REQUIRED (o Codex não envia chave) [#issue-10]

**Mensagem de erro:**

```
unexpected status 401 Unauthorized: {"code":"API_KEY_REQUIRED","message":"API key is required in Authorization header (Bearer scheme), x-api-key header, or x-goog-api-key header"}, url: https://api.lmuai.com/responses, request id: ...
```

**Causa:** versões mais recentes do Codex mudaram o funcionamento da autenticação — as credenciais agora podem ser armazenadas no keyring do sistema em vez de serem lidas do `auth.json`. Com a configuração do guia antigo (`auth.json` + `requires_openai_auth = true`), a requisição que o Codex envia não carrega **nenhuma chave de API** (nenhum dos headers `Authorization`, `x-api-key`, `x-goog-api-key` é enviado), então o gateway não encontra chave e retorna 401 `API_KEY_REQUIRED`.

Observe que isso é diferente do `Incorrect API key provided` do [Issue 3](#issue-3): naquele caso é enviada uma chave que está errada (geralmente porque a requisição foi para o endpoint oficial da OpenAI em vez do repasse da LMU AI), enquanto aqui **nenhuma chave é enviada**.

**Solução:** coloque a chave diretamente em um header da requisição. Abra o `~/.codex/config.toml` (no Windows, `C:\users\your-username\.codex\config.toml`), encontre a seção do seu provedor de modelo `[model_providers.<ID>]` (normalmente `[model_providers.codex]` se você seguiu o guia deste site), apague a linha `requires_openai_auth = true` dentro dela e adicione a subtabela `http_headers` correspondente **no final absoluto do arquivo**:

```toml
[model_providers.codex]
name = "codex"
base_url = "https://api.lmuai.com"
wire_api = "responses"

[model_providers.codex.http_headers]
Authorization = "Bearer your sk- key generated in the console"
```

Salve, reabra o terminal e reinicie o Codex.

<Callout type="warn" title="Pontos em que é fácil errar">
  * O `codex` no nome da subtabela precisa corresponder ao ID em `[model_providers.codex]` acima (no guia da extensão do VS Code, por exemplo, é `[model_providers.OpenAI.http_headers]`)
  * Mantenha **um espaço** entre `Bearer` e a chave
  * A subtabela `http_headers` precisa estar no final absoluto do arquivo — qualquer configuração escrita depois dela é tratada como header de requisição
</Callout>

Todos os guias do Codex deste site ([Mac](/pt/docs/tools/codex-cli-mac) / [Windows](/pt/docs/tools/codex-cli-windows) / [Servidor](/pt/docs/tools/codex-cli-server) / [Codex App](/pt/docs/tools/codex-app) / [Extensão do VS Code](/pt/docs/tools/vscode-plugin)) foram atualizados com a configuração acima.

***

## Ainda travado? [#ainda-travado]

Se um ambiente especial ainda bloquear você durante a instalação ou configuração, entre em contato com o suporte:

* Adicione o suporte no WeChat
* Fale com o suporte no Xianyu (闲鱼)

> Horário de assistência remota: **após as 14h** (as manhãs são dedicadas a resolver configurações de ambiente complexas remotamente).
>
> Se precisar de ajuda remota, baixe primeiro o **NetEase UU Remote** e envie para o suporte; a orientação técnica e a assistência remota acontecem à tarde, após as 14h.
