# API 프로토콜

> LMU AI는 세 가지 인바운드 프로토콜을 지원합니다 — Anthropic, OpenAI 호환, Gemini 네이티브. 하나의 표로 올바른 Base URL과 엔드포인트를 선택하고 오류를 방지하세요.

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



LMU AI는 세 가지 인바운드 프로토콜을 지원합니다: **Anthropic, OpenAI 호환, Gemini 네이티브 v1beta**. 모든 엔드포인트는 여러분의 LMU AI `sk-` API 키를 사용하며, 실제로 호출할 수 있는 모델은 키가 속한 그룹에 의해 결정됩니다.

<Callout type="info" title="먼저 명확히 구분해야 할 두 가지">
  * **"어떤 프로토콜인가"** 는 클라이언트, SDK, 사용 사례에 의해 결정됩니다. Anthropic SDK는 `/v1/messages`를 사용하고, OpenAI SDK는 `/v1/chat/completions` 또는 `/v1/responses`를 사용하며, Gemini 네이티브 이미지 호출은 `/v1beta/models/{model}:generateContent`를 사용합니다.
  * **"어떤 모델을 호출할 수 있는가"** 는 여러분 API 키의 **그룹**(구독 / 충전 플랜 뒤에 있는 업스트림 계정)에 의해 결정되며, 이는 인바운드 프로토콜과는 **별개의 차원**입니다.

  다시 말해: 잘못된 프로토콜은 곧바로 401 / 404를 발생시키고, 올바른 프로토콜이라도 그룹 범위를 벗어난 모델을 사용하면 모델 사용 불가 오류를 반환합니다.
</Callout>

<Callout type="warn" title="가장 흔한 오류는 잘못된 프로토콜에서 비롯됩니다">
  * **Anthropic 프로토콜** Base URL에는 `/v1` 접미사가 **없습니다**
  * **OpenAI 프로토콜** SDK Base URL에는 보통 `/v1` 접미사가 **있습니다**
  * **Gemini 네이티브 프로토콜** 은 호스트로 `https://api.lmuai.com`을 사용하고 전체 `/v1beta/...` 경로를 호출합니다

  이를 잘못 설정하면 400 / 401 / 404가 발생합니다. 도구를 구성하거나 코드를 작성하기 전에, 클라이언트가 어떤 프로토콜을 기대하는지 확인하세요.
</Callout>

***

## 한눈에 프로토콜 선택하기 [#한눈에-프로토콜-선택하기]

| 프로토콜                   | Base URL                   | 대표 도구                                                                                                                            |
| ---------------------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| **Anthropic 프로토콜**     | `https://api.lmuai.com`    | Claude Code (CLI / 데스크톱 / VS Code 확장), 공식 `anthropic` SDK, Cherry Studio, Claude / 중국어 모델을 사용하는 Kilo Code, 모든 Anthropic 호환 클라이언트 |
| **OpenAI 호환**          | `https://api.lmuai.com/v1` | Codex CLI, Codex App, Cursor / Cline / Roo Code / OpenCode, 공식 `openai` SDK, GPT를 사용하는 VS Code 확장, 모든 OpenAI 호환 클라이언트            |
| **Gemini 네이티브 v1beta** | `https://api.lmuai.com`    | Gemini 네이티브 SDK / HTTP 클라이언트, Gemini 텍스트-이미지 및 이미지-이미지, 모델 목록 및 `generateContent`                                                |

세 프로토콜 모두 `sk-`로 시작하는 LMU AI 키를 사용합니다:

* Anthropic 프로토콜: `Authorization: Bearer <YOUR_API_KEY>` 또는 `x-api-key: <YOUR_API_KEY>`
* OpenAI 호환: `Authorization: Bearer <YOUR_API_KEY>`
* Gemini 네이티브: `x-goog-api-key: <YOUR_API_KEY>` 권장, Bearer도 허용됨

***

## Anthropic 프로토콜 [#anthropic-프로토콜]

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

**엔드포인트:**

* `POST /v1/messages` — 메시지 대화
* `POST /v1/messages/count_tokens` — 토큰 카운팅
* `GET /v1/models` — 사용 가능한 모델 목록

**Python SDK 예시:**

```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)
```

**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="왜 SDK base_url에는 /v1이 없고 curl에는 /v1이 있나요?">
  Anthropic 공식 SDK의 `base_url` 관례는 `/v1`을 생략하는 것이며, SDK가 내부적으로 `/v1/messages` 같은 경로를 추가합니다. curl을 직접 작성할 때는 전체 경로 `/v1/messages`를 씁니다. 둘 다 같은 엔드포인트를 가리킵니다.
</Callout>

***

## OpenAI 프로토콜 [#openai-프로토콜]

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

**엔드포인트:**

* `POST /chat/completions` — 표준 Chat Completions API
* `POST /responses` — OpenAI Responses API (`/responses/{id}` 하위 경로 포함)
* `POST /images/generations`, `POST /images/edits` — 이미지 생성 / 편집

**Python SDK 예시:**

```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)
```

**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"}]
  }'
```

***

## Gemini 네이티브 프로토콜 [#gemini-네이티브-프로토콜]

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

**주요 엔드포인트:**

* `GET /v1beta/models` — Gemini 네이티브 모델 목록
* `GET /v1beta/models/{model}` — 특정 모델 조회
* `POST /v1beta/models/{model}:generateContent` — 텍스트 생성, 텍스트-이미지, 이미지-이미지
* `POST /v1beta/models/{model}:streamGenerateContent?alt=sse` — 스트리밍 생성

**인증:**

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

최소한의 텍스트-이미지 예시:

```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="Gemini 이미지 엔드포인트는 /v1/chat/completions가 아닙니다">
  Gemini 이미지 모델은 네이티브 `generateContent`를 사용합니다. 전체 텍스트-이미지, 이미지-이미지, 1K / 2K / 4K, Base64 파싱 세부 사항은 [Gemini Image API](/ko/docs/api/gemini-image)를 참조하세요.

  GPT 이미지 모델은 [GPT Image API](/ko/docs/api/gpt-image), Grok 이미지 모델은 [Grok Image API](/ko/docs/api/grok-image)를 참조하세요. 대규모 오프라인 Gemini 작업은 [Gemini Batch Image API](/ko/docs/api/gemini-image-batch)를 참조하세요.
</Callout>

***

## 프로토콜과 사용 가능한 모델은 서로 다른 두 가지입니다 [#protocol-vs-models]

여러분의 키가 호출할 수 있는 모델은 **그룹에 마운트된 업스트림 계정에 의해 전적으로 결정되며**, 어떤 프로토콜로 호출하든 무관합니다:

| 그룹의 업스트림                     | 실제로 호출할 수 있는 모델                                                   |
| ---------------------------- | ----------------------------------------------------------------- |
| OpenAI 계정만                   | GPT 시리즈만                                                          |
| Claude 계정만                   | Claude 시리즈만 (OpenAI 프로토콜로 호출하더라도 백엔드가 프로토콜을 변환하지만, 모델 범위는 변하지 않음) |
| 중국어 모델 업스트림만 (예: GLM / Kimi) | 해당 중국어 모델만                                                        |
| 백엔드에 구성된 모델 라우팅 (다중 업스트림 그룹) | 모델 이름별로 서로 다른 업스트림으로 라우팅되며 브랜드를 넘나들 수 있음 — 정확한 범위는 그룹 구성에 따라 다름   |

따라서:

* Anthropic, OpenAI 호환, Gemini 네이티브 프로토콜 중 선택하는 것은 인바운드 요청 형식을 결정하며, 실제 모델 범위는 여전히 API 키의 그룹에 의해 결정됩니다.
* 현재 키가 호출할 수 있는 모델을 확인하려면, **API Keys** 상세 페이지 또는 콘솔의 **Available Models** 페이지에서 그룹의 모델 목록을 확인하세요.

***

## Claude Max 그룹에 관하여 [#claude-max-그룹에-관하여]

<Callout type="warn" title="Claude Max 그룹은 Anthropic 프로토콜만 지원합니다">
  **Claude Max 그룹은 Claude Code 전용**이므로, **Anthropic 프로토콜** (`https://api.lmuai.com`) 만 사용할 수 있습니다.

  Claude Max 플랜 그룹의 키를 사용하는 경우:

  * ✅ Claude Code (CLI / 데스크톱 / VS Code 확장)에서 작동합니다
  * ❌ Codex CLI, Cursor, Cherry Studio, 또는 OpenAI 프로토콜을 사용하는 모든 도구에서는 **사용할 수 없습니다**
  * ❌ `https://api.lmuai.com/v1`로 입력할 수 **없습니다**

  OpenAI 프로토콜 도구를 사용하려면, 종량제 / 일반 구독 그룹의 키로 전환하세요 (정확한 사용 가능 모델은 구매한 플랜 그룹에 따라 다릅니다).
</Callout>

***

## 문제 해결 [#troubleshooting]

| 증상                                 | 일반적인 원인                                                                                             | 조치                                                                    |
| ---------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `401 Unauthorized`                 | Base URL이 잘못된 프로토콜 사용 / 키 오타 / IDE 미재시작                                                             | Base URL이 도구의 프로토콜과 일치하는지 확인; IDE를 재시작하여 구성 다시 로드                     |
| `404 Not Found`                    | OpenAI 프로토콜 URL에 `/v1` 누락, Anthropic URL에 `/v1`을 잘못 포함, 또는 Gemini 경로가 `/v1beta/models/...`를 사용하지 않음 | 위 표를 기준으로 Base URL과 전체 엔드포인트를 다시 확인                                   |
| 모델 사용 불가 / `No available accounts` | 그룹 범위를 벗어난 모델을 호출함 (예: Claude Max 그룹으로 GPT 호출)                                                      | **Available Models** 페이지에서 그룹에 실제로 포함된 모델을 확인하거나, 대상 모델을 포함하는 그룹으로 전환 |
| `429 Too Many Requests`            | 일일 할당량 소진                                                                                           | [FAQ](/ko/docs/guide/faq#issue-2) 참조                                  |

추가 문제 해결은 [FAQ](/ko/docs/guide/faq)를 참조하세요.

***

## 다음 단계 [#다음-단계]

프로토콜과 Base URL을 올바르게 설정했다면, 사용하려는 도구를 선택하세요:

* [CC Switch (원클릭 가져오기, Claude Code 사용자에게 권장)](/ko/docs/tools/cc-switch)
* [Claude Code CLI](/ko/docs/tools/claude-code) · [데스크톱](/ko/docs/tools/claude-code-desktop) · [VS Code 확장](/ko/docs/tools/claude-code-vscode)
* [Codex CLI · Windows](/ko/docs/tools/codex-cli-windows) · [Mac/Linux](/ko/docs/tools/codex-cli-mac) · [서버](/ko/docs/tools/codex-cli-server)
* [Codex App 데스크톱](/ko/docs/tools/codex-app) · [VS Code / Cursor / Trae 확장](/ko/docs/tools/vscode-plugin)
* [OpenCode](/ko/docs/tools/opencode) · [Cherry Studio](/ko/docs/tools/cherry) · [IDEA Kilo Code](/ko/docs/tools/kilo-code-idea) · [Hermes Agent](/ko/docs/tools/hermes)
* [Gemini Image API](/ko/docs/api/gemini-image) · [GPT Image API](/ko/docs/api/gpt-image) · [Grok Image API](/ko/docs/api/grok-image) · [Gemini Batch Image API](/ko/docs/api/gemini-image-batch)
