# Protocolos de API

> A LMU AI oferece suporte a três protocolos de entrada — Anthropic, compatível com OpenAI e Gemini nativo. Uma tabela para escolher a Base URL e o endpoint corretos e evitar erros.

URL: https://docs.lmuai.com/pt/docs/guide/api-protocols



A LMU AI oferece suporte a três protocolos de entrada: **Anthropic, compatível com OpenAI e Gemini nativo v1beta**. Cada endpoint usa sua chave de API `sk-` da LMU AI, e os modelos que você pode efetivamente chamar são definidos pelo grupo da chave.

<Callout type="info" title="Duas coisas para manter claras primeiro">
  * **"Qual protocolo"** é definido pelo cliente, SDK e caso de uso. O SDK da Anthropic usa `/v1/messages`, o SDK da OpenAI usa `/v1/chat/completions` ou `/v1/responses`, e as chamadas de imagem do Gemini nativo usam `/v1beta/models/{model}:generateContent`.
  * **"Quais modelos você pode chamar"** é definido pelo **grupo** da sua chave de API (a conta upstream por trás da sua assinatura / plano de recarga), que é **uma dimensão separada do protocolo de entrada**.

  Em outras palavras: o protocolo errado dá um 401 / 404 direto; o protocolo certo com um modelo fora do intervalo do seu grupo retorna um erro de modelo indisponível.
</Callout>

<Callout type="warn" title="O erro mais comum vem do protocolo errado">
  * A Base URL do **protocolo Anthropic** **não** inclui o sufixo `/v1`
  * A Base URL do SDK do **protocolo OpenAI** normalmente **inclui** o sufixo `/v1`
  * O **protocolo Gemini nativo** usa `https://api.lmuai.com` como host e chama o caminho completo `/v1beta/...`

  Errar isso causa 400 / 401 / 404. Antes de configurar uma ferramenta ou escrever código, confirme qual protocolo o cliente espera.
</Callout>

***

## Escolha seu protocolo rapidamente [#escolha-seu-protocolo-rapidamente]

| Protocolo                 | Base URL                   | Ferramentas típicas                                                                                                                                                          |
| ------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Protocolo Anthropic**   | `https://api.lmuai.com`    | Claude Code (CLI / desktop / extensão VS Code), o SDK oficial `anthropic`, Cherry Studio, Kilo Code com Claude / modelos chineses, qualquer cliente compatível com Anthropic |
| **Compatível com OpenAI** | `https://api.lmuai.com/v1` | Codex CLI, Codex App, Cursor / Cline / Roo Code / OpenCode, o SDK oficial `openai`, extensões do VS Code com GPT, qualquer cliente compatível com OpenAI                     |
| **Gemini nativo v1beta**  | `https://api.lmuai.com`    | SDK / clientes HTTP do Gemini nativo, texto-para-imagem e imagem-para-imagem do Gemini, lista de modelos e `generateContent`                                                 |

Os três protocolos usam a chave da LMU AI que começa com `sk-`:

* Protocolo Anthropic: `Authorization: Bearer <YOUR_API_KEY>` ou `x-api-key: <YOUR_API_KEY>`
* Compatível com OpenAI: `Authorization: Bearer <YOUR_API_KEY>`
* Gemini nativo: `x-goog-api-key: <YOUR_API_KEY>` recomendado, Bearer também é aceito

***

## Protocolo Anthropic [#protocolo-anthropic]

**Base URL:** `https://api.lmuai.com` (**sem** `/v1`)

**Endpoints:**

* `POST /v1/messages` — conversa de mensagens
* `POST /v1/messages/count_tokens` — contagem de tokens
* `GET /v1/models` — lista de modelos disponíveis

**Exemplo com SDK Python:**

```python
from anthropic import Anthropic

client = Anthropic(
    base_url="https://api.lmuai.com",
    api_key="sk-xxxxxxxx",
)

resp = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)
print(resp.content[0].text)
```

**Exemplo com curl:**

```bash
curl -X POST https://api.lmuai.com/v1/messages \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [{"role":"user","content":"Hello"}]
  }'
```

<Callout type="info" title="Por que o base_url do SDK é sem /v1 mas o curl é com /v1?">
  A convenção do `base_url` do SDK oficial da Anthropic é omitir `/v1`; o SDK adiciona caminhos como `/v1/messages` internamente. Quando você escreve o curl à mão, você escreve o caminho completo `/v1/messages`. Ambos apontam para o mesmo endpoint.
</Callout>

***

## Protocolo OpenAI [#protocolo-openai]

**Base URL:** `https://api.lmuai.com/v1` (**com** `/v1`)

**Endpoints:**

* `POST /chat/completions` — API padrão de Chat Completions
* `POST /responses` — API de Responses da OpenAI (incluindo os subcaminhos `/responses/{id}`)
* `POST /images/generations`, `POST /images/edits` — geração / edição de imagens

**Exemplo com SDK Python:**

```python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.lmuai.com/v1",
    api_key="sk-xxxxxxxx",
)

resp = client.chat.completions.create(
    model="gpt-5.6-sol",
    messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
```

**Exemplo com curl:**

```bash
curl -X POST https://api.lmuai.com/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-sol",
    "messages": [{"role":"user","content":"Hello"}]
  }'
```

***

## Protocolo Gemini nativo [#protocolo-gemini-nativo]

**Base URL:** `https://api.lmuai.com`

**Endpoints principais:**

* `GET /v1beta/models` — lista os modelos do Gemini nativo
* `GET /v1beta/models/{model}` — consulta um modelo específico
* `POST /v1beta/models/{model}:generateContent` — geração de texto, texto-para-imagem e imagem-para-imagem
* `POST /v1beta/models/{model}:streamGenerateContent?alt=sse` — geração em streaming

**Autenticação:**

```http
x-goog-api-key: YOUR_API_KEY
```

Exemplo mínimo de texto-para-imagem:

```bash
curl --request POST \
  'https://api.lmuai.com/v1beta/models/gemini-3.1-flash-image:generateContent' \
  -H 'x-goog-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{"text": "an orange cat wearing an astronaut helmet"}]
    }],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"],
      "imageConfig": {"aspectRatio": "1:1", "imageSize": "1K"}
    }
  }'
```

<Callout type="info" title="O endpoint de imagem do Gemini não é /v1/chat/completions">
  Os modelos de imagem do Gemini usam o `generateContent` nativo. Para detalhes completos de texto-para-imagem, imagem-para-imagem, 1K / 2K / 4K e parsing de Base64, consulte a [API de Imagem do Gemini](/pt/docs/api/gemini-image).

  Para modelos de imagem GPT, consulte a [API de Imagem GPT](/pt/docs/api/gpt-image), e para modelos de imagem Grok, consulte a [API de Imagem Grok](/pt/docs/api/grok-image). Para grandes jobs offline do Gemini, consulte a [API de Imagem em Lote do Gemini](/pt/docs/api/gemini-image-batch).
</Callout>

***

## Protocolo e modelos disponíveis são duas coisas diferentes [#protocol-vs-models]

Quais modelos sua chave pode chamar é **decidido inteiramente pela conta upstream montada em seu grupo**, independentemente do protocolo com que você chama:

| O upstream no seu grupo                                            | Os modelos que você pode efetivamente chamar                                                                                           |
| ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
| Apenas conta OpenAI                                                | Apenas a série GPT                                                                                                                     |
| Apenas conta Claude                                                | Apenas a série Claude (mesmo que você chame com o protocolo OpenAI, o backend traduz o protocolo, mas o intervalo de modelos não muda) |
| Apenas upstream de modelos chineses (ex.: GLM / Kimi)              | Apenas os modelos chineses correspondentes                                                                                             |
| Roteamento de modelo configurado no backend (grupo multi-upstream) | roteado por nome de modelo para diferentes upstreams, podendo abranger marcas — o intervalo exato depende da configuração do grupo     |

Então:

* Escolher o protocolo Anthropic, compatível com OpenAI ou Gemini nativo determina o formato da requisição de entrada; o intervalo real de modelos ainda é decidido pelo grupo da chave de API.
* Para ver quais modelos sua chave atual pode chamar, verifique a lista de modelos do grupo na página de detalhes de **API Keys** ou na página de **Modelos Disponíveis** no console.

***

## Sobre o grupo Claude Max [#sobre-o-grupo-claude-max]

<Callout type="warn" title="O grupo Claude Max oferece suporte apenas ao protocolo Anthropic">
  **O grupo Claude Max é apenas para o Claude Code**, então ele só pode usar o **protocolo Anthropic** (`https://api.lmuai.com`).

  Se você estiver usando uma chave de um grupo do plano Claude Max:

  * ✅ Funciona no Claude Code (CLI / desktop / extensão VS Code)
  * ❌ **Não pode** ser usada com Codex CLI, Cursor, Cherry Studio ou qualquer ferramenta que use o protocolo OpenAI
  * ❌ **Não pode** ser inserida como `https://api.lmuai.com/v1`

  Para usar uma ferramenta do protocolo OpenAI, troque para uma chave de um grupo de pagamento por uso / assinatura regular (os modelos disponíveis exatos ainda dependem do grupo de plano que você comprou).
</Callout>

***

## Solução de problemas [#troubleshooting]

| Sintoma                                       | Causa habitual                                                                                                                         | O que fazer                                                                                                                                   |
| --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `401 Unauthorized`                            | Base URL usa o protocolo errado / erro de digitação na chave / IDE não reiniciada                                                      | Verifique se a Base URL corresponde ao protocolo da ferramenta; reinicie a IDE para recarregar a configuração                                 |
| `404 Not Found`                               | URL do protocolo OpenAI sem `/v1`, URL do Anthropic incluindo `/v1` erroneamente, ou caminho do Gemini não usando `/v1beta/models/...` | Reveja a Base URL e o endpoint completo em relação à tabela acima                                                                             |
| Modelo indisponível / `No available accounts` | Chamou um modelo fora do intervalo do seu grupo (ex.: chamar GPT com um grupo Claude Max)                                              | Confirme os modelos que seu grupo realmente inclui na página de **Modelos Disponíveis**, ou troque para um grupo que inclua o modelo desejado |
| `429 Too Many Requests`                       | Cota diária esgotada                                                                                                                   | Consulte o [FAQ](/pt/docs/guide/faq#issue-2)                                                                                                  |

Para mais soluções de problemas, consulte o [FAQ](/pt/docs/guide/faq).

***

## Próximos passos [#próximos-passos]

Depois que o protocolo e a Base URL estiverem corretos, escolha a ferramenta que você deseja:

* [CC Switch (importação com um clique, recomendado para usuários do Claude Code)](/pt/docs/tools/cc-switch)
* [Claude Code CLI](/pt/docs/tools/claude-code) · [Desktop](/pt/docs/tools/claude-code-desktop) · [Extensão VS Code](/pt/docs/tools/claude-code-vscode)
* [Codex CLI · Windows](/pt/docs/tools/codex-cli-windows) · [Mac/Linux](/pt/docs/tools/codex-cli-mac) · [Servidor](/pt/docs/tools/codex-cli-server)
* [Codex App desktop](/pt/docs/tools/codex-app) · [Extensão VS Code / Cursor / Trae](/pt/docs/tools/vscode-plugin)
* [OpenCode](/pt/docs/tools/opencode) · [Cherry Studio](/pt/docs/tools/cherry) · [IDEA Kilo Code](/pt/docs/tools/kilo-code-idea) · [Hermes Agent](/pt/docs/tools/hermes)
* [API de Imagem do Gemini](/pt/docs/api/gemini-image) · [API de Imagem GPT](/pt/docs/api/gpt-image) · [API de Imagem Grok](/pt/docs/api/grok-image) · [API de Imagem em Lote do Gemini](/pt/docs/api/gemini-image-batch)
