Claude Code "invalid x-api-key": 요청이 Anthropic으로 전송된 것입니다

Wokey Team · 2026-09-24

짧은 답: invalid x-api-key가 보인다면 요청이 설정한 게이트웨이가 아니라 Anthropic 자체의 api.anthropic.com으로 간 것입니다. Wokey는 이 메시지를 반환하지 않습니다. Wokey의 키 오류는 밑줄이 들어간 invalid_api_key입니다. 그러니 아직 키를 교체하지 마세요. base URL이 적용되지 않은 이유를 찾아야 합니다.

먼저 누가 응답했는지 확인하기

오류의 JSON을 아래 표와 비교해 요청이 실제로 어디에 도착했는지 확인하세요. 모든 행은 curl로 받은 원본 응답입니다.

응답에 포함된 내용 응답한 곳 의미
"message":"invalid x-api-key" Anthropic sk- 키가 Authorization: Bearer로 전송되었거나, x-api-key 값이 키 형식이 아님
"message":"API key is invalid." Anthropic Anthropic이 발급하지 않은 sk- 키가 x-api-key로 전송됨
"message":"x-api-key header is required" Anthropic 키가 전혀 전송되지 않음
"message":"Invalid bearer token" Anthropic Bearer 값이 sk-로 시작하지 않음
"code":"invalid_api_key" Wokey 요청은 Wokey에 도착했지만 키가 없거나, 잘못 입력되었거나, 삭제됨

Anthropic의 전체 응답은 다음과 같습니다. 바깥쪽 "type":"error"와 대개 함께 있는 request_id를 확인하세요.

{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011C..."}

Wokey의 응답에는 바깥쪽 type: "error"가 없고, code에는 밑줄이 쓰입니다.

{"error":{"code":"invalid_api_key","message":"Invalid API key. Make sure you copied the complete Wokey API key, or create a new one at https://wokey.ai/api.","type":"invalid_request_error"}}

Wokey 키는 sk-로 시작합니다. 이 키를 ANTHROPIC_AUTH_TOKEN(Bearer 토큰으로 전송)에 넣었는데 요청이 Anthropic으로 가면 invalid x-api-key가 나옵니다. ANTHROPIC_API_KEY(x-api-key로 전송)에 넣으면 API key is invalid.가 나옵니다. 두 경우 모두 원인은 같습니다.

base URL이 적용되지 않은 이유

1. claude를 실행하는 프로세스에 변수가 없습니다. export는 현재 터미널에서만 유효합니다. 다른 터미널에서 설정한 변수, ~/.zshrc에 추가했지만 새 터미널을 열지 않은 변수, Dock이나 시작 메뉴에서 실행한 에디터는 이를 보지 못합니다. claude를 실행하는 터미널에서 두 변수가 모두 있는지 확인하세요.

env | grep ANTHROPIC

2. 변수 이름이 틀렸습니다. Claude Code는 ANTHROPIC_BASE_URL만 읽습니다. ANTHROPIC_API_BASE, ANTHROPIC_BASE, CLAUDE_BASE_URL, OPENAI_BASE_URL은 모두 무시되며, 요청은 조용히 공식 주소로 갑니다.

3. settings.json에 키는 있지만 주소가 없습니다. ~/.claude/settings.json의 env 블록에 ANTHROPIC_BASE_URL 없이 ANTHROPIC_AUTH_TOKEN만 설정하면 키가 Anthropic으로 전송됩니다. 두 값을 항상 함께 두세요.

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.wokey.ai",
    "ANTHROPIC_AUTH_TOKEN": "your Wokey API key"
  }
}

4. VS Code 확장을 사용하고 있습니다. 확장의 로그인 확인은 셸 변수를 읽지 않습니다. VS Code 사용자 설정의 claudeCode.environmentVariables에 설정하세요. VS Code 확장 가이드를 참고하세요.

5. Claude 데스크톱 앱을 사용하고 있습니다. 데스크톱 앱은 ANTHROPIC_BASE_URL도 settings.json도 읽지 않습니다. Developer → Configure Third-Party Inference에서 게이트웨이를 설정하세요. 서드파티 API 사용 시 데스크톱 앱 문제 해결을 참고하세요.

6. 직접 작성한 코드에서 SDK를 호출하고 있습니다. Anthropic의 Python과 TypeScript SDK는 기본적으로 공식 주소를 사용합니다. base_url(TypeScript에서는 baseURL)을 명시적으로 전달하세요. 여기서도 /v1은 붙이지 않습니다.

from anthropic import Anthropic

client = Anthropic(base_url="https://api.wokey.ai", api_key="your Wokey API key")

Claude Code 안에서 확인하기

Claude Code에서 /status를 실행하세요. Status 탭에 https://api.wokey.ai로 설정된 Anthropic base URL 줄이 있어야 합니다. 이 줄이 없다면 Claude Code는 공식 주소를 쓰고 있으며 위 원인 중 하나에 해당합니다.

curl로 비교하기

claude를 실행하는 같은 터미널에서 다음을 실행하세요.

curl -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":1,"messages":[{"role":"user","content":"."}]}'

결과로 알 수 있는 것:

  • curl: (3) URL rejected: No host part in the URL: ANTHROPIC_BASE_URL이 비어 있습니다. 변수가 설정된 적이 없습니다.
  • {"id":"msg_로 시작: 게이트웨이와 키는 정상입니다. 문제는 Claude Code가 읽는 설정에 있으니 위의 원인 3~5를 차례로 확인하세요.
  • invalid_api_key: 요청이 Wokey에 도착했으므로 이제는 정말 키 문제입니다. 콘솔에서 키가 완전히 복사되었는지, 삭제되지 않았는지 확인하세요.

공식 API에서 보이는 경우

Anthropic API를 직접 사용하고 있다면 invalid x-api-key는 말 그대로의 뜻입니다. 키가 틀렸거나 폐기되었거나, 불필요한 줄바꿈이나 공백이 붙은 채 복사된 것입니다. Claude Code는 줄바꿈이 포함된 키를 전송 전에 차단하고 Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break 같은 오류를 표시합니다.

자주 묻는 질문

"invalid x-api-key"는 Wokey가 반환하는 건가요?

아닙니다. 이 메시지는 Anthropic 자체 API가 반환합니다. 키가 없거나 틀리면 Wokey는 {"error":{"code":"invalid_api_key",...}}가 담긴 401을 반환합니다. "invalid x-api-key"가 보인다면 ANTHROPIC_BASE_URL이 적용되지 않아 요청이 Wokey에 도달하지 않은 것입니다.

Claude Code가 어떤 base URL을 쓰는지 어떻게 확인하나요?

Claude Code에서 /status를 실행하고 Anthropic base URL을 확인하세요. Wokey라면 https://api.wokey.ai로 표시되어야 합니다. 이 줄이 없거나 Anthropic 주소가 표시된다면 변수가 실행 중인 프로세스에 전달되지 않은 것입니다.

echo로는 변수가 보이는데 왜 여전히 실패하나요?

대개 변수를 export 없이 설정했거나, 그 변수를 볼 수 없는 다른 터미널, IDE, 바탕화면 아이콘에서 Claude Code를 실행한 경우입니다. 가장 확실한 방법은 ANTHROPIC_BASE_URL과 ANTHROPIC_AUTH_TOKEN을 ~/.claude/settings.json의 env 블록에 넣는 것입니다.

VS Code 확장이나 데스크톱 앱에서 이 오류가 나타나면 어떻게 하나요?

VS Code 확장은 사용자 설정의 claudeCode.environmentVariables에 변수를 설정하세요. Claude 데스크톱 앱은 환경 변수를 무시하므로 Developer → Configure Third-Party Inference에서 게이트웨이를 설정한 뒤 Save & Restart를 클릭하세요.

Wokey 키를 Anthropic에서 바로 쓸 수 있나요?

아닙니다. Wokey 키는 sk- 뒤에 16진수 32자가 붙은 형식이며 api.wokey.ai에서만 작동합니다. Anthropic으로 보내면 401이 반환됩니다.