- 조직을 위해 기존 또는 타사 게이트웨이를 배포하려면 LLM 게이트웨이 배포를 참조하십시오.
- 제공받은 자격 증명으로 Claude Code를 게이트웨이에 인증하는 개별 개발자인 경우 Claude Code를 LLM 게이트웨이에 연결을 참조하십시오.
- API 형식 및 각각에 대해 제공할 엔드포인트
- 요청 헤더: 업스트림에 도달해야 하는 것과 게이트웨이가 사용할 수 있는 것
- 시스템 프롬프트 속성 블록 및 프롬프트 캐싱과의 상호작용
- 기능 통과: 헤더 또는 본문 필드가 제거될 때 손상되는 것
- 모델 검색
- 변경 없이 전달: 바이트 단위로 업스트림으로 전달
- 사용: 게이트웨이가 라우팅, 속성 또는 추적을 위해 읽을 수 있으며 전달할 필요가 없음
API 형식
게이트웨이는 Claude Code 클라이언트에 다음 API 형식 중 최소 하나를 노출해야 합니다. Claude Code가 사용하는 형식은 클라이언트의 구성에 의해 결정됩니다. 아래 표의 선택 기준 열의 변수는 Claude Code를 해당 형식의 게이트웨이로 지정합니다.| 형식 | 선택 기준 | 엔드포인트 | 변경 없이 전달 |
|---|---|---|---|
| Anthropic Messages | ANTHROPIC_BASE_URL | /v1/messages, /v1/messages/count_tokens (선택 사항) | anthropic-beta 및 anthropic-version 요청 헤더 |
| Bedrock InvokeModel | ANTHROPIC_BEDROCK_BASE_URL with CLAUDE_CODE_USE_BEDROCK=1 | /model/{model}/invoke, /model/{model}/invoke-with-response-stream | anthropic_beta 및 anthropic_version 요청 본문 필드 |
| Vertex rawPredict | ANTHROPIC_VERTEX_BASE_URL with CLAUDE_CODE_USE_VERTEX=1 | :rawPredict, :streamRawPredict, count-tokens:rawPredict (선택 사항) | anthropic-beta 및 anthropic-version 요청 헤더, 및 anthropic_version 요청 본문 필드 |
Foundry 및 AWS의 Claude Platform
Microsoft Foundry 및 AWS의 Claude Platform은 Anthropic Messages 형식을 구현합니다. Claude Code는 자체 변수인ANTHROPIC_FOUNDRY_BASE_URL 및 ANTHROPIC_AWS_BASE_URL을 통해 이들로 라우팅하지만, 둘 중 하나를 앞에 두는 게이트웨이는 위의 Anthropic Messages 행을 구현합니다. AWS의 Claude Platform을 앞에 두는 게이트웨이는 또한 anthropic-workspace-id 헤더를 전달해야 하며, 해당 플랫폼은 모든 요청에 이를 요구합니다.
선택 사항 엔드포인트 및 시작 트래픽
토큰 계산 엔드포인트는 유일한 선택 사항입니다. 이들이 없을 때 Claude Code는 컨텍스트 사용을 로컬에서 추정합니다. 추론 요청은/v1/messages?beta=true로 게시되므로 전체 URL이 아닌 경로와 일치합니다. Vertex 메서드 접미사는 게시자 모델 경로에 첨부됩니다. 예: /projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict.
게이트웨이는 또한 아무것도 손상시키지 않고 거부할 수 있는 최선의 노력 시작 트래픽을 봅니다: HEAD / 연결 프로브, 및 Bedrock 형식 게이트웨이에서 GET /inference-profiles?type=SYSTEM_DEFINED 요청.
스트리밍
추론 응답은 스트리밍되어야 합니다. Claude Code는 서버 전송 이벤트를 도착하는 대로 사용하므로, 완전한 응답을 버퍼링한 후 릴레이하는 게이트웨이는 클라이언트를 정지시킵니다.업스트림과의 형식 불일치
클라이언트가 사용하는 형식은 게이트웨이가 수신하는 것을 결정합니다. 일반적인 실패 모드는 클라이언트가 게이트웨이로 전송하는 형식과 뒤에 있는 업스트림 제공자가 수락하는 형식 간의 불일치입니다.- 클라이언트가 Bedrock 또는 Vertex 형식을 사용할 때, Claude Code는 해당 제공자가 수락하는 전체 기능 집합의 부분 집합만 전송합니다.
- 클라이언트가 Anthropic Messages 형식을 사용할 때, Claude Code는 게이트웨이가 Bedrock 또는 Vertex 업스트림으로 전달하더라도 전체 집합을 전송합니다.
요청 헤더
Claude Code는 API 요청에 이러한 헤더를 포함합니다. 헤더 이름은 전송 중에 대소문자를 구분하지 않습니다.anthropic-version 및 anthropic-beta를 변경 없이 전달하고, 업스트림이 AWS의 Claude Platform일 때 anthropic-workspace-id를 전달합니다. 나머지는 게이트웨이가 라우팅, 속성 및 추적을 위해 사용할 수 있으며 전달할 필요가 없습니다.
| 헤더 | 설명 |
|---|---|
Authorization, x-api-key | 개발자의 게이트웨이 자격 증명. 설정한 자격 증명 변수에 따라 하나 또는 두 헤더 모두에 포함됨 |
anthropic-version | API 버전. 현재 2023-06-01. Bedrock 및 Vertex 형식 요청은 또한 anthropic_version 본문 필드를 전달하며, 그 값은 이 헤더의 값이 아닌 제공자 방언 문자열입니다. |
anthropic-beta | 요청에 대한 쉼표로 구분된 기능 값. 헤더를 그대로 전달합니다. 개별 값을 허용 목록에 추가하지 마십시오. Claude Code 릴리스에 따라 집합이 변경되기 때문입니다. 개발자가 claude.ai 로그인으로 인증할 때 (이는 ANTHROPIC_BASE_URL이 게이트웨이 자격 증명 변수 없이 설정될 때 가능함), 이 헤더는 또한 업스트림이 요구하는 OAuth 기능을 전달하며, 이를 제거하면 해당 요청이 401로 실패합니다. |
x-claude-code-session-id | 현재 Claude Code 세션의 고유 식별자. 요청 본문을 구문 분석하지 않고 한 세션의 모든 요청을 집계하는 데 사용합니다. |
x-claude-code-agent-id | 요청을 발급한 서브에이전트의 식별자. 세션 내에서 Claude Code가 생성한 에이전트의 요청에만 존재합니다. 세션 ID와 함께 사용하여 병렬 에이전트에 비용을 속성화합니다. |
x-claude-code-parent-agent-id | 요청하는 에이전트를 생성한 에이전트의 식별자. 중첩된 에이전트에만 존재합니다. |
ANTHROPIC_CUSTOM_HEADERS를 설정하면, 해당 헤더도 요청에 나타납니다.
개방형 목록으로 전달
헤더 및 본문 필드를 닫힌 목록이 아닌 개방형 목록으로 취급합니다. Claude Code는 릴리스에 따라 기능을 얻으며, 이들은 새로운anthropic-beta 값, 새로운 요청 본문 필드, 그리고 때때로 새로운 anthropic-* 또는 x-claude-code-* 헤더로 도착합니다.
Anthropic 형식 업스트림으로 전달할 때, 오늘 보는 것들을 허용 목록에 추가하기보다는 anthropic-* 요청 헤더 및 요청 본문 필드를 변경 없이 통과시킵니다. 관찰된 목록에 고정된 게이트웨이는 다음 기능의 헤더 또는 필드를 제거하고 이를 도입하는 릴리스에서 손상시킵니다.
예외는 Bedrock 또는 Vertex와 같은 비 Anthropic 업스트림입니다. 여기서 스키마 차이를 연결하는 것은 게이트웨이의 작업입니다. 기능 통과를 참조하십시오.
시스템 프롬프트 속성 블록
Claude Code는 클라이언트 버전과 대화에서 파생된 지문을 포함하는 짧은 속성 블록을 시스템 프롬프트 앞에 추가합니다.api.anthropic.com 엔드포인트는 처리 전에 블록을 제거하므로 자사 프롬프트 캐싱에 영향을 주지 않습니다. 다른 업스트림은 프롬프트의 일부로 수신합니다. Anthropic 및 클라우드 제공자의 Claude 엔드포인트는 속성을 위해 이를 읽으므로, 게이트웨이에서 제거하기보다는 CLAUDE_CODE_ATTRIBUTION_HEADER=0을 설정하여 생략합니다.
Claude Code v2.1.181부터, 요청이 사용자 정의 기본 URL을 통해 라우팅될 때 블록은 대화의 수명 동안 안정적이므로, 전체 요청 본문을 기반으로 하는 게이트웨이 측 프롬프트 캐시는 이를 비활성화하지 않고도 작동합니다. v2.1.181 이전에는 블록이 요청별 토큰을 포함했습니다. 해당 버전에서 게이트웨이가 이러한 캐시를 구현하면 CLAUDE_CODE_ATTRIBUTION_HEADER=0을 설정합니다.
기능 통과
Claude Code는ANTHROPIC_BASE_URL 게이트웨이를 Anthropic 형식 엔드포인트로 취급하고 api.anthropic.com으로 전송하는 베타 헤더 및 요청 본문 필드를 전송합니다. 단, 직접 연결을 위해 예약된 작은 진단 및 기본값 집합은 제외합니다.
기능을 추가하는 본문 필드는 베타 헤더와 쌍을 이루며, 쌍은 함께 이동합니다. 헤더를 제거하면서 본문을 통과시키거나, Anthropic 형식 본문을 다른 스키마의 업스트림으로 전달하는 게이트웨이는 하드 400 오류를 생성합니다. 두 절반이 함께 없을 때만 기능이 조용히 꺼집니다. 콘텐츠 검사를 위해 요청 본문을 다시 쓰거나 수정하는 게이트웨이는 제거하는 것과 같은 방식으로 쌍을 손상시키므로, 수정하지 않고 검사합니다. 표는 기능이 쌍에서 벗어나는 경우를 기록합니다.
세분화된 도구 스트리밍은 직접 연결 기본값 중 하나입니다. 요청이 사용자 정의 기본 URL을 통해 라우팅될 때마다 기본적으로 꺼져 있으며, 개발자가 CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1을 설정할 때 게이트웨이가 이를 수신합니다.
| 기능 | 헤더 및 본문 쌍 | 손상될 때의 증상 | 해결 방법 |
|---|---|---|---|
| 적응형 추론 | 베타 헤더 없음. Claude Code는 Claude 4.6 이상에 대해 thinking: {"type": "adaptive"}를 전송하고, 게이트웨이 별칭과 같이 인식하지 못하는 모델 이름을 현재 모델로 취급하여 필드를 수신합니다. | 업스트림 모델 빌드가 이를 수락하지 않을 때 thinking 필드 또는 adaptive 태그의 이름을 지정하는 400 | 업스트림을 업그레이드합니다. Opus 4.6 및 Sonnet 4.6에서 개발자는 대신 CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1을 설정할 수 있습니다. |
| 컨텍스트 관리 | 컨텍스트 관리 베타 헤더는 context_management 본문 필드와 쌍을 이룹니다. | Extra inputs are not permitted를 포함한 400. 게이트웨이가 Anthropic 형식 요청을 수락하지만 Bedrock으로 전달할 때 일반적입니다. | 둘 다 전달하거나 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 |
| 확장 컨텍스트 및 인터리브된 사고 | 베타 헤더만, 본문 필드 없음 | 헤더가 제거될 때 조용히 사용 불가능. 업스트림은 기능 요청을 보지 못합니다. | anthropic-beta를 그대로 전달합니다. |
| 베타 도구 필드 | 도구 관련 베타 헤더는 strict 및 defer_loading과 같은 도구 스키마 필드와 쌍을 이룹니다. | 본문이 헤더 없이 통과할 때 인식되지 않는 도구 스키마 필드의 이름을 지정하는 400 | 둘 다 전달하거나 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 |
| 노력 및 구조화된 출력 | output_config 본문 필드는 노력, 구조화된 출력 형식 및 작업 예산 설정을 전달합니다. 각각은 자체 베타 헤더와 쌍을 이룹니다. | Bedrock 및 Vertex 업스트림에서 output_config의 이름을 지정하는 400. 종종 Extra inputs are not permitted | 필드와 헤더를 함께 전달합니다. |
| 토큰 계산 | 베타 쌍 없음. count_tokens 엔드포인트를 사용합니다. | Claude Code는 컨텍스트 사용을 로컬에서 추정하는 것으로 돌아갑니다. | 정확한 계산을 원하면 엔드포인트를 노출합니다. |
ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES 변수는 제공자 구성에서만 모델 기능을 선언합니다: CLAUDE_CODE_USE_BEDROCK, CLAUDE_CODE_USE_VERTEX, CLAUDE_CODE_USE_FOUNDRY, 및 CLAUDE_CODE_USE_MANTLE. 이들은 ANTHROPIC_BASE_URL 게이트웨이 뒤에서 효과가 없습니다.
자동 재시도 및 오류 전달
Claude Code는 일부 업스트림 거부 후 자동으로 재시도하고 거부된 기능을 나머지 대화에 대해 비활성화합니다.thinking 필드 거부, 사고 서명 거부, 및 중간 대화 시스템 메시지 거부는 모두 이러한 방식으로 복구됩니다. 컨텍스트 관리 및 도구 스키마 필드 거부는 재시도하지 않습니다. 해당 400 오류는 개발자에게 도달합니다.
재시도 로직은 업스트림의 오류 표현과 일치하므로 오류 응답 본문을 수정하지 않고 전달합니다. 업스트림 오류를 자체 봉투로 래핑하는 게이트웨이는 상태 코드를 유지하더라도 복구 경로를 손상시킵니다.
사전 릴리스 기능 비활성화
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1은 Claude Code가 모든 제공자 (컨텍스트 관리 및 베타 도구 필드 포함)에서 사전 릴리스 기능 및 해당 본문 필드를 전송하는 것을 중지합니다. 이는 모델에 의해 선택되는 적응형 추론에는 영향을 주지 않으며, 구독 인증이 요구하는 OAuth 기능을 억제하지 않습니다.
Claude Code가 전송하는 기능 집합은 릴리스에 따라 증가합니다. 현재 베타 헤더 문자열은 베타 헤더 참조를 참조하십시오. 관찰된 목록에 고정하기보다는 새로운 Claude Code 릴리스에 대해 게이트웨이를 테스트합니다.
모델 검색
ANTHROPIC_BASE_URL이 Anthropic Messages 형식을 노출하는 게이트웨이를 가리킬 때, Claude Code는 시작 시 게이트웨이의 /v1/models 엔드포인트를 쿼리하고 반환된 모델을 /model 선택기에 추가할 수 있습니다.
개발자는 자신의 환경 또는 관리되는 설정을 통해 CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1을 설정하여 이를 활성화합니다. 검색은 기본적으로 꺼져 있으므로 공유 API 키로 지원되는 게이트웨이가 키가 액세스할 수 있는 모든 모델을 모든 사용자에게 표시하지 않습니다. 이를 위해서는 Claude Code v2.1.129 이상이 필요합니다.
검색이 실행되는 경우
검색은 Anthropic Messages 형식에만 적용됩니다. 다음의 경우 실행되지 않습니다:ANTHROPIC_BASE_URL도 설정되어 있더라도CLAUDE_CODE_USE_*제공자 변수가 설정된 경우ANTHROPIC_BASE_URL이 설정되지 않았거나api.anthropic.com을 가리키는 경우- 비필수 트래픽이 비활성화된 경우.
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC또는 조직 정책을 통해
요청 및 응답
요청은 3초 타임아웃을 포함한GET /v1/models?limit=1000이며, 모든 리디렉션은 자격 증명이 리디렉션 대상으로 유출되지 않도록 실패로 취급됩니다. 느리게 응답하거나 /v1/models를 리디렉션하는 게이트웨이 (예: http에서 https로)는 검색을 조용히 실패합니다. 구성된 기본 URL에서 직접 엔드포인트를 제공합니다.
검색 요청은 정확히 하나의 자격 증명 헤더를 전송합니다:
- 설정된 경우
ANTHROPIC_AUTH_TOKEN을 베어러 토큰으로 - 그렇지 않으면
apiKeyHelper값을 포함한 해결된 API 키를x-api-key헤더에
/v1/models를 인증하는 게이트웨이는 도우미 배포를 위해 x-api-key를 수락해야 합니다. ANTHROPIC_CUSTOM_HEADERS의 모든 헤더도 포함됩니다.
Claude Code는 응답의 data 배열의 각 항목에서 id 및 선택 사항인 display_name을 읽고, id가 claude 또는 anthropic으로 시작하지 않는 항목을 무시합니다:
선택기 항목 및 캐싱
선택기는 개발자가 Claude Code에서/model을 실행할 때 열리는 대화형 모델 목록입니다. 각 검색된 항목은 “게이트웨이에서” 레이블이 지정되고 제공된 경우 display_name을 사용합니다. 검색된 ID는 선택기에 이미 있는 행과 정확히 일치하거나 검색된 ID와 기존 ID가 모두 Fable로 해결될 때만 건너뜁니다. 기본 제공 행은 sonnet과 같은 별칭으로 키가 지정되므로, claude-sonnet-4-6과 같은 검색된 ID는 기본 제공 항목 옆에 자체 “게이트웨이에서” 행을 추가합니다. availableModels 관리되는 설정은 검색이 추가할 수 있는 것을 제한합니다.
결과는 ~/.claude/cache/gateway-models.json 또는 Windows의 %USERPROFILE%\.claude\cache\gateway-models.json으로 캐시되고 각 시작 시 새로 고쳐집니다. 요청이 실패하거나 게이트웨이가 /v1/models를 구현하지 않으면, 선택기는 이전 시작의 캐시된 목록 또는 기본 제공 모델 목록으로 돌아갑니다. 게이트웨이가 검색 필터와 일치하지 않는 별칭 아래에서 Claude 모델을 제공하면, 개발자는 모델 구성 변수를 사용하여 해당 별칭을 수동으로 추가할 수 있습니다.
관련 리소스
게이트웨이 문서 집합의 나머지 부분 및 기본 API 참조:- LLM 게이트웨이 개요: 게이트웨이가 무엇이고 claude.ai 구독과 어떻게 상호작용하는지
- 조직을 위해 LLM 게이트웨이 배포: 이 계약을 사용하는 관리자 체크리스트
- Claude Code를 LLM 게이트웨이에 연결: 개발자별 구성 및 문제 해결 표
- 베타 헤더 참조: 현재
anthropic-beta값 집합 - Messages API: Anthropic 형식 게이트웨이가 구현하는 API 형식