Claude Code와 Codex API: 프로토콜 설정과 첫 테스트 점검
Claude Code와 Codex의 서로 다른 API 계약을 짧은 테스트로 검증하는 실무 체크리스트입니다.
목차
Claude Code와 Codex API: 프로토콜 설정과 첫 테스트 점검
“OpenAI-compatible”이라는 표기만으로 두 클라이언트에 같은 설정을 적용할 수 있는 것은 아닙니다. Claude Code는 Anthropic Messages 계약을 기대하고, Codex의 custom provider는 OpenAI Responses를 사용합니다. 가격을 비교하기 전에 도구별 가이드, Base URL, 인증 필드, 현재 Model ID를 확인해야 합니다.
BetterToken에서 두 경로를 시험하려면 최신 Claude Code 가이드 또는 Codex 가이드부터 보세요. 프로토콜별 endpoint가 분리되어 있고 API Key는 자신의 계정에서 만듭니다. 짧은 요청 뒤 Dashboard에서 상태, 모델, input/output/cache token, 청구를 확인할 수 있습니다.
두 가지 클라이언트 계약
| 클라이언트 | 확인할 계약 | BetterToken에서 확인할 값 |
|---|---|---|
| Claude Code | Anthropic-compatible Messages와 문서화된 인증 변수 | https://bettertoken.ai; Claude Code가 /v1/messages를 추가 |
| Codex CLI/App | Chat Completions만이 아닌 Responses를 쓰는 custom provider | https://www.bettertoken.ai/v1, wire_api = "responses" |
현재 Claude Code 가이드는 ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN을 사용합니다. Base URL에 /v1을 붙이지 마세요. Messages 경로는 클라이언트가 붙입니다. Codex는 ~/.codex/config.toml에서 provider를 읽고 BETTERTOKEN_API_KEY에서 키를 읽습니다.
OpenAI Codex 구성 참조와 Claude Code 문서는 클라이언트에 관한 1차 자료입니다. provider별 값은 해당 provider의 최신 문서에서 다시 확인해야 합니다.
최소 구성 확인
Codex를 시작하기 전에 Responses 패턴인지 확인합니다.
model_provider = "custom"
model = "YOUR_MODEL_ID"
[model_providers.custom]
base_url = "https://www.bettertoken.ai/v1"
env_key = "BETTERTOKEN_API_KEY"
wire_api = "responses"
requires_openai_auth = false
YOUR_MODEL_ID는 의도적인 자리표시자입니다. 모델 제공 여부와 ID는 바뀌므로 오래된 글이 아니라 현재 설정 화면이나 모델 카탈로그에서 완전한 ID를 복사하세요. custom provider 키를 ~/.codex/auth.json에 넣으면 안 됩니다.
Claude Code에서는 Codex 표를 재사용하지 말고 다음 변수를 확인합니다.
{
"env": {
"ANTHROPIC_BASE_URL": "https://bettertoken.ai",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY"
}
}
설정 파일 위치와 선택 변수는 최신 가이드를 따릅니다. API Key는 prompt, issue, 스크린샷, 저장소에 넣지 마세요.
실제 작업 전에 짧게 시험하기
- 사용할 정확한 클라이언트 버전의 최신 가이드를 엽니다.
- 공유 계정이 아닌 자신의 테스트 API Key를 만듭니다.
- 문서나 Dashboard에서 Base URL과 현재 Model ID를 복사합니다.
- Claude Code에서는 route와 인증 변수를, Codex에서는 provider, 환경 변수,
wire_api = "responses"를 확인합니다. - 운영 secret이 없는 빈 저장소에서 시작합니다.
- 범위가 작은 작업 하나를 보냅니다.
- 상태, 모델, token, 표시되는 retry, 최종 청구를 기록하고 같은 대표 작업을 같은 조건으로 반복합니다.
비용과 첫 오류 읽기
input token 가격만으로 agent task 비용을 알 수는 없습니다. 프로젝트 문맥, 도구 출력, cache, retry, 출력 길이가 합계를 바꿉니다. 후보마다 Model ID, input/output/cache token, 요청 수, 오류, retry, 최종 청구를 같은 작업으로 기록하세요. BetterToken의 변동 모델과 가격은 현재 가격 페이지에서 확인하며, 예전 글의 숫자는 과거 기록일 뿐입니다.
| 증상 | 먼저 확인할 항목 |
|---|---|
401 | 키, 문서화된 필드명, 붙어 있는 공백 |
404 / 연결 실패 | 프로토콜에 맞는 Base URL, 클라이언트가 붙일 전체 HTTP 경로를 입력하지 않았는지 |
model not found | 같은 provider와 key group의 완전하고 현재인 Model ID |
| Codex API mode error | wire_api = "responses"; Chat Completions만으로는 부족 |
429 | endpoint 제한, Retry-After, 안전한 재시도 여부 |
| streaming 중단 | 이 프로토콜의 streaming 지원, 네트워크, 요청 상태 |
| 청구가 불명확함 | 모델, token 기록, usage history의 retry |
한 번에 하나의 변수만 바꾸세요. URL, 키, 모델, 클라이언트 설정 가운데 원인을 가려낼 수 있습니다.
기록한 테스트로 결정하기
이 목록은 속도, 안정성, 최저가 순위가 아닙니다. 서로 다른 두 클라이언트 계약을 검증하는 방법입니다. 테스트 당일 문서를 다시 읽고, 같은 저장소 작업의 설정 결과, 오류, token 기록, 최종 청구를 보고 결정하세요.
운영 작업 전에 BetterToken Claude Code 가이드 또는 Codex 가이드를 열고 별도 API Key를 만든 뒤 첫 요청을 Dashboard에서 확인하세요.