확인일 2026-11-12

Codex CLI를 API 키로 쓰기: config.toml 설정

~/.codex/config.toml에 model provider 블록 하나를 추가하고 base_url을 https://api.relayswitch.io/v1로 지정한 뒤 키를 환경 변수에 넣으면 됩니다. Codex의 사용법은 그대로이고, 요청은 Responses 경로로 나가며 요금은 토큰당 선불 잔액에서 차감됩니다.

01Codex가 요청을 보내는 곳 바꾸기

Codex CLI는 OpenAI의 커맨드라인 코딩 에이전트입니다. 설정 항목 model_provider의 기본값은 openai이고 요청은 OpenAI의 엔드포인트로 갑니다. 이 항목은 바꿀 수 있습니다. config.toml에 직접 provider를 정의해 엔드포인트 주소와 키가 들어 있는 환경 변수를 적고 model_provider가 그것을 가리키게 하면, Codex의 명령과 사용법은 그대로인 채 과금 주체만 바뀝니다.

Codex가 쓰는 프로토콜은 OpenAI의 Responses API 하나입니다. 설정 레퍼런스에는 wire_api가 responses 값 하나만 지원한다고 적혀 있습니다. 그래서 Codex에 연결할 게이트웨이는 /v1/chat/completions만이 아니라 /v1/responses를 제공해야 합니다. RelaySwitch에는 두 경로가 모두 있고 Codex는 /v1/responses를 씁니다.

이 도구는 GPT 모델과 Responses API를 중심으로 설계되어 이 페이지의 가격표도 GPT만 다룹니다. 터미널에서 Claude로 코딩하려면 Claude Code를 쓰십시오. 두 도구는 같은 키와 같은 잔액을 씁니다.

02config.toml: provider 블록 하나

항목 네 개를 적으며 키 값 자체는 파일에 넣지 않습니다. provider는 사용자 수준의 ~/.codex/config.toml에 적습니다. 이 디렉터리는 환경 변수 CODEX_HOME으로 정해지고 기본값이 ~/.codex입니다.

  • model_provider: 아래 블록을 테이블 이름으로 선택합니다. 이름은 직접 정하되 openai, ollama, lmstudio, amazon-bedrock, amazon-bedrock-runtime, gcp는 Codex가 예약한 내장 id여서 덮어쓸 수 없습니다.
  • base_url: https://api.relayswitch.io/v1를 /v1까지 넣습니다. Codex가 그 뒤에 /responses를 붙입니다.
  • env_key: 키가 들어 있는 환경 변수의 이름이며 키 자체가 아닙니다. 키는 환경 변수에 남으므로 설정 파일은 커밋하거나 동기화해도 됩니다.
  • wire_api: 쓸 수 있는 값이 responses 하나뿐이고 기본값이기도 해서 이 줄은 생략할 수 있습니다. 예전 글에 나오는 wire_api = "chat"은 더 이상 동작하지 않습니다.
  • requires_openai_auth: 기본값이 false이므로 적지 않습니다. 사용자 정의 provider는 env_key의 키로 인증하며 OpenAI 계정 로그인을 거치지 않습니다.
toml
1# ~/.codex/config.toml
2model = "gpt-6.1-sol"
3model_provider = "relayswitch"
4
5[model_providers.relayswitch]
6name = "RelaySwitch"
7base_url = "https://api.relayswitch.io/v1"
8env_key = "RELAYSWITCH_API_KEY"
9wire_api = "responses"

03키를 환경 변수에 넣고 실행

Codex를 실행할 터미널에서 키를 내보낸 뒤 시작합니다. export 줄을 셸 설정 파일에 추가해 두어야 새로 여는 터미널에도 적용됩니다.

codex를 실행해 첫 지시를 보내면 그 요청이 몇 초 안에 콘솔의 Usage 페이지에 토큰 수, 차감 금액과 함께 나타납니다. 모델을 잠시 바꿔 쓰려면 codex --model 뒤에 다른 GPT id를 넣습니다.

bash
1export RELAYSWITCH_API_KEY="sk-relay-..."
2codex

04Responses 요청으로 먼저 확인

Codex를 시작하기 전에 Codex가 보내는 형식대로 최소 크기의 Responses 요청을 하나 보내 키와 주소가 맞는지 확인하십시오. -i는 상태 줄과 응답 헤더를 출력하며, 헤더에 이 요청의 id가 들어 있습니다. 200이 돌아오면 준비가 끝난 것입니다.

bash
1curl -i https://api.relayswitch.io/v1/responses \
2 -H "Authorization: Bearer sk-relay-..." \
3 -H "content-type: application/json" \
4 -d '{"model": "gpt-6.1-sol", "input": "Reply with ok"}'

05GPT 모델 가격과 Codex 작업 비용

GPT 계열 모델의 백만 토큰당 달러 가격이며 카탈로그에서 실시간으로 읽습니다. 입력, 캐시 입력, 출력이 따로 계산되고 표의 단가가 그대로 차감됩니다. config.toml의 model에는 Responses 경로에 응답하는 id를 넣어야 하며, 위 예시의 id가 그런 id입니다.

Codex는 매 턴마다 세션과 도구 출력을 다시 보냅니다. 이 토큰이 캐시에 적중하면 캐시 입력 단가로 계산되고, 응답에 캐시된 토큰 수가 보고됩니다. 적중 여부는 모델과 요청에 따라 달라지므로 실제 비용은 전부 적중한 경우와 전혀 적중하지 않은 경우 사이에 놓입니다. 비용을 줄이는 방법은 세 가지입니다.

  • 평소 수정은 단가가 낮은 모델로 하고, 어려운 리뷰와 리팩터링에서만 상위 모델로 올립니다.
  • 작업 하나가 끝나면 새 세션을 열어 컨텍스트가 계속 길어지지 않게 합니다.
  • Codex 전용 키를 따로 만들어 달러 예산과 일일 사용 한도를 겁니다. 한도에 닿으면 게이트웨이가 402를 반환하고 그 키만 멈추며 계정의 나머지 잔액은 그대로입니다.
모델개발사입력출력컨텍스트
GPT-6.1 Solgpt-6.1-solOpenAI$0.582≈ ₩794$2.91≈ ₩3,9691,050,000
GPT-6 Lunagpt-6-lunaOpenAI$0.0625≈ ₩85$0.20≈ ₩2731,050,000
GPT-6 Solgpt-6-solOpenAI$0.60≈ ₩818$3.00≈ ₩4,0921,050,000
GPT-6 Astragpt-6-astraOpenAI$3.00≈ ₩4,092$15.00≈ ₩20,4581,050,000
GPT-5.6 Lunagpt-5.6-lunaOpenAI$0.12≈ ₩164$0.72≈ ₩9821,050,000
GPT-5.6 Solgpt-5.6-solOpenAI$1.20≈ ₩1,637$3.00≈ ₩4,0921,050,000
GPT-5.6 Terragpt-5.6-terraOpenAI$1.20≈ ₩1,637$3.60≈ ₩4,9101,050,000
GPT-5.5gpt-5.5OpenAI$1.80≈ ₩2,455$9.00≈ ₩12,2751,050,000
GPT-5.4 Minigpt-5.4-miniOpenAI$0.75≈ ₩1,023$4.50≈ ₩6,137400,000
GPT-5.4gpt-5.4OpenAI$1.50≈ ₩2,046$9.00≈ ₩12,2751,050,000
GPT-5.3-Codexgpt-5.3-codexOpenAI$1.75≈ ₩2,387$14.00≈ ₩19,094400,000
GPT-4o minigpt-4o-miniOpenAI$0.15≈ ₩205$0.60≈ ₩818128,000
GPT-4ogpt-4oOpenAI$2.50≈ ₩3,410$10.00≈ ₩13,639128,000
GPT-4.1 Nanogpt-4.1-nanoOpenAI$0.10≈ ₩136$0.40≈ ₩5461,048,576
GPT 5.4 Nanogpt-5.4-nanoOpenAI$0.40≈ ₩546$2.50≈ ₩3,410400,000
GPT 5.6gpt-5.6OpenAI$0.9412≈ ₩1,284$4.7059≈ ₩6,4181,050,000
GPT 6.1 Terragpt-6.1-terraOpenAI$0.2941≈ ₩401$1.4706≈ ₩2,0061,000,000
gpt-oss-120bgpt-oss-120bOpenAI$0.20≈ ₩273$1.80≈ ₩2,455
gpt-oss-20bgpt-oss-20bOpenAI$0.16≈ ₩218$0.72≈ ₩982

백만 토큰당 가격(USD) · ≈ 는 유럽중앙은행 2026-11-13 환율로 환산한 원화 참고 가격이며, 과금은 미국 달러로 이루어집니다

06profile 파일과 /model 메뉴

profile은 ~/.codex/<name>.config.toml이라는 이름의 파일이며, config.toml과 다른 항목만 적어 두고 codex --profile <name>으로 시작하면 그 위에 덮어씁니다. Codex 0.134.0부터는 config.toml 안의 [profiles.<name>] 테이블을 읽지 않고 최상위의 profile 선택 항목도 없어졌습니다. 그 이전에 쓰인 글의 방식은 그대로 따라 해도 적용되지 않습니다.

model_reasoning_effort 값은 선택한 모델이 지원하는 단계를 따릅니다. Codex가 요청마다 이 값을 보내고 게이트웨이는 그대로 모델에 전달합니다.

사용자 정의 provider를 쓸 때 Codex 안의 /model 메뉴는 여전히 내장된 OpenAI 모델을 나열합니다. 항목을 고르면 현재 profile 파일이 고쳐져 모델은 바뀌지만 provider는 그대로입니다. 그렇게 적힌 id가 카탈로그에 있으면 그 모델의 가격으로 계속 실행되고, 없으면 404가 반환됩니다. 모델은 --profile이나 --model로 바꾸십시오.

07자주 나오는 오류

401부터 404까지는 요청이 모델에 도달하기 전에 반환되고 429, 502, 503은 응답 내용이 없으므로 모두 과금되지 않습니다. 상태 코드별 전체 표는 OpenAI API 사용법 페이지에 있습니다.

401키가 틀렸거나 폐기되었거나, Codex를 시작한 터미널에서 환경 변수가 비어 있습니다. 다시 export한 뒤 시작하십시오.
402잔액이 부족하거나 이 키의 예산을 다 썼습니다. 충전하거나 예산을 올리면 바로 복구됩니다.
404모델 id가 카탈로그에 없습니다. 대부분 /model 메뉴가 profile을 고친 경우이니 model 줄을 되돌리십시오.
429키가 속도 제한에 닿았습니다. retry-after 헤더의 초만큼 기다리거나 콘솔에서 이 키의 분당 요청 수를 올리십시오.
provider 블록이 적용되지 않음테이블 이름에 예약된 id를 썼거나 model_provider에 적은 값이 테이블 이름과 다릅니다.
profile이 적용되지 않음아직 config.toml 안의 [profiles.<name>] 테이블로 남아 있습니다. 그 안의 항목을 별도 파일로 옮기십시오.

자주 묻는 질문

Codex를 API 키로 쓰려면 무엇을 설정하나요?
~/.codex/config.toml에 [model_providers.relayswitch] 블록을 추가해 name, base_url(https://api.relayswitch.io/v1), env_key(RELAYSWITCH_API_KEY)를 적고, 최상위 model_provider를 relayswitch로, model을 카탈로그의 GPT id로 지정합니다. 키는 export로 환경 변수에 넣은 뒤 codex를 실행합니다.
ChatGPT 계정이나 OpenAI API key가 따로 필요한가요?
Codex 설정 레퍼런스에 따르면 사용자 정의 provider의 requires_openai_auth 기본값은 false이고, 요청은 env_key가 가리키는 환경 변수의 키로 인증됩니다. 계정과 잔액은 RelaySwitch에 있으며 키는 sk-relay- 로 시작합니다.
base_url에 /v1을 넣어야 하나요? wire_api에는 무엇을 적나요?
base_url에는 https://api.relayswitch.io/v1 를 /v1까지 넣고, Codex가 그 뒤에 /responses를 붙입니다. wire_api는 쓸 수 있는 값이 responses 하나뿐이고 기본값이어서 생략해도 됩니다. 예전 글의 wire_api = "chat"은 더 이상 동작하지 않습니다.
Codex와 Claude Code는 무엇이 다른가요?
Codex는 GPT 모델과 OpenAI의 Responses API를 중심으로 설계된 도구이고, Claude Code는 Claude 모델을 Anthropic Messages 형식으로 호출하는 도구입니다. 설정 방식도 달라서 Codex는 config.toml의 provider 블록을, Claude Code는 환경 변수 두 개를 씁니다. 두 도구 모두 같은 RelaySwitch 키와 같은 잔액으로 동작합니다.
모델이 몰래 바뀌지 않았는지 어떻게 확인하나요?
두 가지를 직접 볼 수 있습니다. 모든 모델에 매일 같은 점검 프롬프트를 보내 이전 응답과 비교한 결과가 https://api.relayswitch.io/v1/proof 에 공개되고, 요청마다 모델 id, 과금 토큰, 비용이 적힌 서명된 영수증이 발급됩니다. model_reasoning_effort는 Codex가 요청과 함께 보내며 게이트웨이는 그대로 모델에 전달합니다.
Codex 토큰 비용을 줄이려면 어떻게 하나요?
Codex는 매 턴마다 세션과 도구 출력을 다시 보내므로 비용은 주로 입력과 캐시 입력에서 나옵니다. 평소 수정은 단가가 낮은 모델로 하고 어려운 문제에서만 상위 모델로 바꾸고, 작업이 끝나면 새 세션을 열고, Codex 전용 키에 달러 예산과 일일 한도를 걸어 한도에서 멈추게 하십시오.

provider 블록 하나, 환경 변수 하나

Codex에서 GPT 모델을 실시간 단가로, 토큰당 선불로 쓰십시오. 모든 모델은 매일 공개 점검됩니다.