# 글 (Anthropic 형식) — /v1/messages

> Anthropic Messages API 원형 그대로. Claude 전용입니다.

> 원문: https://schoolorder.kr/docs/reference/messages

Anthropic SDK 와 Claude Code 가 쓰는 문이에요. base_url 만 저희 쪽으로 바꾸시면 몸통은 손댈 게 없어요. 응답도 Anthropic 형식 그대로 돌려드려요.

> **⚠️ 이 문은 Claude 만 받아요**
>
> 번역은 한 방향이에요 — OpenAI 형식으로 Claude 를 부르는 건 되지만, 이 문으로 GPT · Gemini · Grok 을 부르는 건 안 돼요. 넣으시면 400 으로 어느 문으로 가야 하는지 알려드려요. 여러 벤더를 한 코드에서 섞어 쓰시려면 /v1/chat/completions 쪽이 편해요.

**가장 짧은 호출**

```bash
curl https://schoolorder.kr/v1/messages \
  -H "x-api-key: $SCHOOLORDER_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "안녕하세요"}]
  }'
```

> **base_url 에 /v1 을 붙이지 마세요**
>
> Anthropic SDK 가 /v1/messages 를 알아서 붙여요. base_url 에 /v1 까지 적으시면 /v1/v1/messages 로 나가서 404 가 나요. OpenAI SDK 는 반대로 /v1 이 필요해요.

## 요청 파라미터

**요청 본문 (JSON) — Anthropic Messages 그대로**

| 파라미터 | 받는 값 | 저희가 하는 일 |
| --- | --- | --- |
| `model` (필수) | Claude 모델 id | Claude 가 아니면 400 으로 어느 문으로 가야 하는지 알려드려요. 없는 이름이면 404 와 함께 가까운 이름을 드려요. |
| `max_tokens` (필수) | 정수 | Anthropic 이 필수로 받아요. 이 문은 몸통을 번역 없이 넘기니 저희가 채워드리지 않아요 — /v1/chat/completions 쪽은 안 보내시면 8,192 로 채워드려요. |
| `messages` (필수) | role · content 배열 | 이 문은 번역이 없어서 보내신 모양 그대로 Anthropic 에 닿아요. 이미지·문서 블록도 그쪽 문서대로 쓰시면 돼요. |
| `system` | 문자열 또는 블록 배열 | OpenAI 형식과 달리 messages 안이 아니라 별도 필드예요. 그대로 넘어가니 캐시 제어(cache_control)도 그쪽 문서대로 쓰실 수 있어요. |
| `그 밖의 파라미터` | Anthropic 문서에 있는 것 전부 | 이 문은 몸통을 손대지 않아요 — tools · tool_choice · thinking · 프롬프트 캐싱까지 Anthropic 문서 그대로 쓰시면 돼요. |

> **여기는 손대지 않는 문이에요**
>
> /v1/chat/completions 는 Claude 로 갈 때 몸통을 번역하느라 아는 필드만 옮겨요. 이 문은 번역이 없어서 보내신 그대로 나가요 — Anthropic 의 새 기능을 저희가 배선하기 전에 먼저 쓰고 싶으시면 이쪽이 확실해요.

## 응답

Anthropic Messages 응답 그대로예요. content 가 블록 배열이라 글만 쓰실 때도 content[0].text 처럼 꺼내셔야 해요 — 생각(thinking)을 켜면 첫 블록이 글이 아닐 수 있으니 type 으로 골라 쓰시는 편이 안전해요.

**응답 예시 (줄임)**

```json
{
  "id": "msg_...",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-5",
  "content": [{ "type": "text", "text": "안녕하세요!" }],
  "stop_reason": "end_turn",
  "usage": { "input_tokens": 12, "output_tokens": 8 }
}
```

## 이 문이 받는 모델

#### 글 — `POST /v1/chat/completions`

| model | 제공사 | 입력 / 1M | 출력 / 1M | 컨텍스트 |
| --- | --- | --- | --- | --- |
| claude-fable-5 | anthropic | $10 | $50 | 1000K |
| claude-opus-5 | anthropic | $5 | $25 | 1000K |
| claude-sonnet-5 | anthropic | $2 | $10 | 1000K |
| claude-haiku-4-5 | anthropic | $1 | $5 | 200K |
| claude-opus-4-8 | anthropic | $5 | $25 | 1000K |
| claude-opus-4-7 | anthropic | $5 | $25 | 1000K |
| claude-opus-4-6 | anthropic | $5 | $25 | 1000K |
| claude-sonnet-4-6 | anthropic | $3 | $15 | 1000K |
| claude-sonnet-4-5 | anthropic | $3 | $15 | 1000K |
| gpt-5.6-sol | openai | $4 | $20 | 400K |
| gpt-5.6-terra | openai | $2 | $12 | 400K |
| gpt-5.6-luna | openai | $0.2 | $1.2 | 400K |
| gpt-5.5 | openai | $5 | $30 | 400K |
| gpt-5.2 | openai | $1.75 | $14 | — |
| gpt-5.1 | openai | $1.25 | $10 | — |
| gpt-5.4 | openai | $2.5 | $15 | 400K |
| gpt-5 | openai | $1.25 | $10 | 400K |
| gpt-5-mini | openai | $0.25 | $2 | 400K |
| gpt-5.4-mini | openai | $0.75 | $4.5 | 400K |
| gpt-4.1 | openai | $2 | $8 | 1000K |
| gpt-4o | openai | $2.5 | $10 | 128K |
| gpt-4o-mini | openai | $0.15 | $0.6 | 128K |
| o1 | openai | $15 | $60 | 200K |
| o3-mini | openai | $1.1 | $4.4 | 200K |
| gpt-5.4-nano | openai | $0.2 | $1.25 | — |
| gpt-5-nano | openai | $0.05 | $0.4 | — |
| gpt-4.1-mini | openai | $0.4 | $1.6 | — |
| gpt-4.1-nano | openai | $0.1 | $0.4 | — |
| o3 | openai | $2 | $8 | — |
| o4-mini | openai | $1.1 | $4.4 | — |
| gemini-3.1-pro-preview | google | $2 | $12 | 1000K |
| gemini-3.7-flash | google | $0.75 | $3.75 | 1000K |
| gemini-3.6-flash | google | $0.75 | $3.75 | 1000K |
| gemini-3.5-flash | google | $1.5 | $9 | 1000K |
| gemini-3.5-flash-lite | google | $0.3 | $2.5 | 1000K |
| gemini-3.1-flash-lite | google | $0.25 | $1.5 | 1000K |
| grok-4.6 | xai | $2 | $6 | 2000K |
| grok-4.20-0309-reasoning | xai | $1.25 | $2.5 | — |
| grok-4.20-0309-non-reasoning | xai | $1.25 | $2.5 | — |
| grok-build-0.1 | xai | $1 | $2 | — |
| grok-4.5 | xai | $2 | $6 | 2000K |
| grok-4.3 | xai | $1.25 | $2.5 | 2000K |
| deepseek-ai/DeepSeek-V4-Flash | deepinfra | $0.09 | $0.18 | 1049K |
| deepseek-ai/DeepSeek-V4-Pro | deepinfra | $1.3 | $2.6 | 1049K |
| deepseek-ai/DeepSeek-V3.1 | deepinfra | $0.25 | $0.95 | 164K |
| deepseek-ai/DeepSeek-V3.2 | deepinfra | $0.26 | $0.38 | 164K |
| deepseek-ai/DeepSeek-R1-0528 | deepinfra | $0.5 | $2.15 | 164K |
| meta-llama/Llama-3.3-70B-Instruct-Turbo | deepinfra | $0.1 | $0.32 | 131K |
| meta-llama/Llama-4-Scout-17B-16E-Instruct | deepinfra | $0.1 | $0.3 | 328K |
| meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo | deepinfra | $0.02 | $0.04 | 131K |
| meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8 | deepinfra | $0.2 | $0.8 | 1049K |
| Qwen/Qwen3-235B-A22B-Instruct-2507 | deepinfra | $0.09 | $0.55 | 262K |
| Qwen/Qwen3.5-9B | deepinfra | $0.1 | $0.15 | 262K |
| Qwen/Qwen3-VL-30B-A3B-Instruct | deepinfra | $0.15 | $0.6 | 262K |
| Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo | deepinfra | $0.3 | $1 | 262K |
| mistralai/Mistral-Small-3.2-24B-Instruct-2506 | deepinfra | $0.075 | $0.2 | 128K |
| mistralai/Mistral-Nemo-Instruct-2407 | deepinfra | $0.019 | $0.03 | 131K |
| moonshotai/Kimi-K2.5 | deepinfra | $0.45 | $2.25 | 262K |
| moonshotai/Kimi-K2.6 | deepinfra | $0.75 | $3.5 | 262K |
| MiniMaxAI/MiniMax-M3 | deepinfra | $0.28 | $1.1 | 524K |
| zai-org/GLM-4.7 | deepinfra | $0.4 | $1.75 | 203K |
| openai/gpt-oss-120b | deepinfra | $0.037 | $0.17 | 131K |
| openai/gpt-oss-20b | deepinfra | $0.03 | $0.14 | 131K |
| google/gemma-3-27b-it | deepinfra | $0.08 | $0.16 | 131K |
| google/gemma-4-31B-it | deepinfra | $0.13 | $0.38 | 262K |
| nvidia/NVIDIA-Nemotron-3-Super-120B-A12B | deepinfra | $0.085 | $0.4 | 262K |
| microsoft/phi-4 | deepinfra | $0.07 | $0.14 | 16K |
| ibm-granite/granite-4.2-8b | deepinfra | $0.06 | $0.25 | 131K |

