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

# Messages (Anthropic 호환)

> Anthropic Messages API 호환 엔드포인트

# POST /v1/messages

Anthropic Messages API와 호환되는 엔드포인트입니다. 기존 Anthropic SDK에서 `base_url`과 `api_key`만 변경하면 바로 사용할 수 있습니다.

## 헤더

<ParamField header="x-api-key" type="string" required>
  `kr-your-api-key`. `Authorization: Bearer kr-...` 형식도 지원합니다.
</ParamField>

<ParamField header="Content-Type" type="string" required>
  `application/json`
</ParamField>

<ParamField header="anthropic-version" type="string">
  Anthropic API 버전. 선택사항입니다. 예: `2023-06-01`
</ParamField>

## 요청 본문

<ParamField body="model" type="string" required>
  모델 ID. `kr/claude-sonnet-46`, `kr/claude-opus-46` 등.
</ParamField>

<ParamField body="messages" type="array" required>
  메시지 배열. 각 메시지는 `role` (`user`, `assistant`)과 `content` (문자열 또는 content blocks)를 포함합니다.
</ParamField>

<ParamField body="max_tokens" type="integer" required>
  최대 출력 토큰 수.
</ParamField>

<ParamField body="system" type="string">
  시스템 프롬프트. 문자열 또는 content blocks 배열.
</ParamField>

<ParamField body="stream" type="boolean" default="false">
  `true` 시 SSE 스트리밍 응답.
</ParamField>

<ParamField body="temperature" type="number" default="1.0">
  0\~1. 낮을수록 결정적, 높을수록 창의적.
</ParamField>

<ParamField body="top_p" type="number">
  Nucleus sampling 파라미터.
</ParamField>

<ParamField body="stop_sequences" type="array">
  생성을 중단할 문자열 목록.
</ParamField>

## 응답

```json 200 - 성공 theme={null}
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "안녕하세요! 무엇을 도와드릴까요?"
    }
  ],
  "model": "kr/claude-sonnet-46",
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 10,
    "output_tokens": 15
  }
}
```

## 예시

<CodeGroup>
  ```python Python theme={null}
  from anthropic import Anthropic

  client = Anthropic(
      api_key="kr-your-api-key",
      base_url="https://api.k-router.com"  # /v1 없이! SDK가 자동 추가
  )

  response = client.messages.create(
      model="kr/claude-sonnet-46",
      max_tokens=1024,
      system="당신은 도움이 되는 어시스턴트입니다.",
      messages=[{"role": "user", "content": "안녕하세요"}]
  )
  print(response.content[0].text)
  ```

  ```typescript TypeScript theme={null}
  import Anthropic from "@anthropic-ai/sdk";

  const client = new Anthropic({
    apiKey: "kr-your-api-key",
    baseURL: "https://api.k-router.com",  // /v1 없이!
  });

  const response = await client.messages.create({
    model: "kr/claude-sonnet-46",
    max_tokens: 1024,
    messages: [{ role: "user", content: "안녕하세요" }],
  });
  console.log(response.content[0].text);
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.k-router.com/v1/messages \
    -H "x-api-key: kr-your-api-key" \
    -H "Content-Type: application/json" \
    -H "anthropic-version: 2023-06-01" \
    -d '{
      "model": "kr/claude-sonnet-46",
      "max_tokens": 1024,
      "messages": [{"role": "user", "content": "안녕하세요"}]
    }'
  ```
</CodeGroup>

## 스트리밍

```python theme={null}
# SSE 스트리밍
with client.messages.stream(
    model="kr/claude-sonnet-46",
    max_tokens=1024,
    messages=[{"role": "user", "content": "안녕하세요"}]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
```

<Warning>
  **base\_url 설정 시 `/v1`을 포함하지 마세요.** Anthropic SDK는 자동으로 `/v1/messages` 경로를 추가합니다. `https://api.k-router.com`만 입력하세요.
</Warning>
