API 레퍼런스

POST /v1/messages

LLMs Text

POST /v1/messages

공식 Anthropic /v1/messages 프로토콜입니다. 필드는 공식 API와 완전히 일치하여 기존 Anthropic SDK 코드를 거의 수정 없이 이전할 수 있습니다.

엔드포인트

POST https://relay.4aicode.com/v1/messages

요청

POST /v1/messages HTTP/1.1
Host: relay.4aicode.com
Authorization: Bearer sk-4ai-xxxxxxxxxxxxxxxx
anthropic-version: 2023-06-01
content-type: application/json

{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "stream": true,
  "messages": [
    { "role": "user", "content": "Say hi" }
  ]
}

필수

필드설명
modelClaude 모델(Sonnet / Haiku / Opus) 또는 지원 gpt-* 모델
max_tokens생성할 최대 토큰 수
messages대화 배열

/v1/messages는 model에 해당하는 업스트림으로 라우팅하며 claude-*와 gpt-* 모두 지원합니다. Claude Code 등 Anthropic Messages 프로토콜 클라이언트는 이 엔드포인트로 해당 모델에 접근할 수 있습니다.

자주 쓰는 선택 필드

필드설명
streamtrue로 SSE 활성화
system시스템 프롬프트
temperature0–1
toolsFunction calling
stop_sequences중단 시퀀스

스트리밍 응답

stream: true이면 text/event-stream과 공식 API와 동일한 이벤트 순서:

event: message_start
event: content_block_start
event: content_block_delta
event: content_block_stop
event: message_delta
event: message_stop

릴레이는 어느 단계에서도 SSE를 버퍼링하지 않아, 첫 바이트 시간은 직접 연결과 거의 같습니다.

비스트리밍 응답

{
  "id": "msg_xxxx",
  "type": "message",
  "role": "assistant",
  "content": [{ "type": "text", "text": "Hi!" }],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "usage": { "input_tokens": 8, "output_tokens": 3 }
}

usage는 과금에 사용됩니다(할당량 참고).

ChatGPT 모델

Claude Code에서 ChatGPT 모델을 쓰려면 지원 gpt-* 모델로 설정하면 됩니다.

export ANTHROPIC_BASE_URL=https://relay.4aicode.com
export ANTHROPIC_AUTH_TOKEN=sk-4ai-xxxxxxxxxxxxxxxx
export ANTHROPIC_DEFAULT_OPUS_MODEL=gpt-5.6-terra
export ANTHROPIC_DEFAULT_OPUS_MODEL_NAME="4AICode GPT 5.6 Terra"
export ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES=effort,xhigh_effort,thinking,adaptive_thinking,interleaved_thinking
export ANTHROPIC_MODEL=opus
export ANTHROPIC_DEFAULT_HAIKU_MODEL=gpt-5.4-mini
export CLAUDE_CODE_EFFORT_LEVEL=xhigh
claude --effort xhigh

ANTHROPIC_DEFAULT_OPUS_MODEL로 Claude Code가 릴레이에 gpt-5.6-terra를 요청합니다. CLAUDE_CODE_EFFORT_LEVEL=xhigh는 Anthropic output_config.effort를 OpenAI Responses reasoning.effort=xhigh에 매핑합니다.

지원 모델은 /v1/chat/completions와 동일: gpt-6-astra, gpt-6-sol, gpt-6.1-sol, gpt-6.1-terra, gpt-6-luna, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5, gpt-5.4, gpt-5.4-mini, gpt-5.3-codex.

오류

HTTP의미
400잘못된 필드(max_tokens 누락, 없는 model 등)
401잘못된 토큰
403팀 정지
429속도 제한 또는 할당량 초과
502업스트림 Claude 불안정; 재시도
503업스트림 일시 불가; 서비스 쿨다운 및 재시도

503 예:

{
  "code": "no_account_available",
  "message": "all accounts cooling down, retry in 60s"
}

전체 예제 (Python)

from anthropic import Anthropic

client = Anthropic(
    base_url="https://relay.4aicode.com",
    api_key="sk-4ai-xxxxxxxxxxxxxxxx",
)

with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=512,
    messages=[{"role": "user", "content": "Introduce yourself in one sentence"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)