GPT-6 Astra API 오류: model_not_found, 401, 그리고 max_tokens 함정
GPT-6 Astra 엔드포인트에서 직접 받아낸 오류 본문과, 측정으로 확인한 사실 하나 — Astra는 max_tokens를 완전히 무시한다. 16을 요청했는데 2,614개가 청구됐다.
아래의 모든 오류 본문은 2026년 9월 6일 GPT-6 Astra 엔드포인트에 실제 요청을 보내 받아낸 것이다. 바꿔 쓴 문장도, 지어낸 오류 문구도 없다. 그리고 오류는 아니지만 위의 어떤 것보다 돈이 더 드는 발견이 하나 있다. Astra는 max_tokens를 무시한다.
model_not_found 404 → 모델 문자열이 존재하지 않음
invalid_api_key 401 → 키가 틀렸거나 없거나 폐기됨
invalid_request_error 400 → 필수 필드 누락
invalid_request_error --- → 파라미터 값이 허용되지 않음
max_tokens ⚠️ 조용히 무시됨 — 아래 참고
비싼 쪽: max_tokens가 먹히지 않는다
16 토큰을 요청했는데 2,614개가 청구됐다. finish_reason은 length가 아니라 stop으로 돌아오므로, 응답 어디에도 상한이 무시됐다는 신호가 없다.
openai/gpt-6-astra에서 매번 같은 프롬프트로 측정했다:
| 요청값 | 실제 반환 | finish_reason |
|---|---|---|
max_tokens: 16 | 2,614 | stop |
max_tokens: 50 | 2,913 | stop |
max_tokens: 100 | 2,667 | stop |
max_completion_tokens: 50 | 2,944 | stop |
반환량과 요청값 사이에 아무 관계가 없다. OpenAI의 추론 모델이 보통 요구하는 파라미터인 max_completion_tokens로 바꿔도 달라지는 게 없다.
이건 게이트웨이가 아니라 Astra 고유의 동작이다. 같은 엔드포인트에 같은 요청을 GPT-5.6 Sol로 보내면 정상 작동한다:
| 모델 | max_tokens: 50 | finish_reason |
|---|---|---|
openai/gpt-5.6-sol | 50 반환 | length |
openai/gpt-6-astra | 2,913 반환 | stop |
Sol은 잘라내고 length로 보고한다. Astra는 무시하고 stop으로 보고한다.
비용으로 따지면. 출력 100만 토큰당 $50이므로, 50 토큰($0.0025)으로 잡아둔 요청이 2,900개($0.145)를 반환하면 예상의 58배다. 그런 호출을 1만 번 도는 루프라면 예산 $25에 청구 $1,450이 된다. max_tokens 위에 비용 가드를 세워뒀다면, 이 모델에서 그건 아무것도 지키지 못한다.
지금 당장 쓸 대안:
- 프롬프트에서 길이를 제한한다. “한 문장으로 답하라”는 실제로 먹힌다.
max_tokens는 안 먹힌다. reasoning.effort를 낮춘다. 추론 토큰은 출력 단가로 청구되며 초과분의 대부분이 여기서 나온다.- 요청이 아니라
usage에 알림을 건다. 모든 응답에서completion_tokens를 읽고 총량에 경보를 설정한다. 여기서 요청 파라미터는 지출 통제 수단이 아니다. - 제공자가 지원한다면 게이트웨이나 계정 수준에서 상한을 건다. 요청 단위 레버가 작동하지 않으니 그렇게 할 수밖에 없다.
이 동작이 문서화된 곳을 어디서도 찾지 못했으므로, 사양이 아니라 측정 결과로 다뤄주기 바란다. 이걸 전제로 설계하기 전에 직접 다시 확인하고, 예고 없이 바뀔 수 있다고 가정하는 게 좋다.
오류 목록과 실제 본문
model_not_found
{"error":{"message":"Model 'gpt-6' not found","type":"model_not_found","code":404}}
그 문자열은 카탈로그에 없다. 유효한 식별자:
openai/gpt-6-astra- 별칭
gpt-6-astra와gpt-6-astra-2026-09-03
여기에 도달하는 전형적인 두 가지 경로:
그냥 gpt-6. 404다. OpenAI 자체 API는 경우에 따라 짧은 이름을 별칭으로 풀어주지만, 게이트웨이는 추측하지 않는다.
등급 접미사. gpt-6-astra-sol도 같은 404를 낸다:
{"error":{"message":"Model 'gpt-6-astra-sol' not found","type":"model_not_found","code":404}}
GPT-5.6은 Sol, Terra, Luna로 출시됐다. GPT-6에는 등급이 없다. Astra와 Astra Pro뿐이다. 등급을 덧붙여 모델 문자열을 만드는 라우터나 설정 템플릿은 이 세대에서 반드시 실패한다. 이 명명 변경이 그 밖에 무엇을 깨뜨리는지는 세대 간 비교에서 다룬다.
invalid_api_key
{"error":{"message":"Invalid or expired API key","type":"invalid_api_key","code":401}}
키가 틀렸거나 폐기됐거나 다른 계정의 것이다. Authorization이 Bearer <key> 형태인지, 그리고 그 키가 환경에서 실제로 읽혔는지 — 조용히 빈 값이 된 건 아닌지 확인하자. 빈 변수는 헤더 누락 오류가 아니라 이 오류를 내며, 그래서 사람들이 엉뚱한 계층을 뒤지게 된다.
문제가 원시 API 호출이 아니라 Codex CLI 쪽이라면, 그쪽 인증 경로의 차이는 Codex CLI 401 Unauthorized에서 다룬다.
invalid_request_error — 필드 누락
{"error":{"message":"Missing required parameter: 'messages' is required. [ofox.ai]","type":"invalid_request_error","code":400}}
필수 필드가 없다. 끝의 [ofox.ai]를 눈여겨보자. 상류에서 중계된 게 아니라 게이트웨이에서 생성된 오류라는 표시다. 어느 계층이 요청을 거절했는지 가릴 때, 이 태그는 요청이 애초에 게이트웨이를 떠나지 않았음을 알려준다.
invalid_request_error — 잘못된 파라미터 값
{"error":{"code":null,"message":"Unsupported value: 'reasoning_effort' does not support 'ultra' with this model. Supported values are: 'none', 'low', 'medium', 'high', and 'xhigh'.","param":null,"type":"invalid_request_error"}}
모델이 받지 않는 값을 보냈다. 필드 누락과는 다르다. 필드는 있고 값이 없는 경우다.
하지만 그 목록을 믿지는 말자. 오류는 다섯 개 값을 나열하면서 max를 빠뜨렸다. 여섯 개를 모두 실시간 엔드포인트에 시험해봤고, 전부 정상 응답을 반환했다:
| effort | 결과 |
|---|---|
none | ✅ 응답 반환 |
low | ✅ |
medium | ✅ |
high | ✅ |
xhigh | ✅ |
max | ✅ 오류 메시지에 없는데도 동작함 |
즉 이 오류 문구는 권위 있는 게 아니라 낡았거나 불완전하다. max는 실재하는 설정이며, 우리 리뷰에서 그것이 왜 대개 원하는 설정이 아닌지 다룬다. 제3자 측정에서 high보다 지수 1점 위인데 비용은 대략 두 배다.
오류가 아닌 것들
응답이 길다고 실패인 건 아니다. 위의 max_tokens 동작을 감안하면, 이 모델에서 가장 흔한 “뭔가 잘못됐다”는 보고는 예상보다 훨씬 긴 응답이다. 그건 현재 모델이 정상 작동하는 모습이고, 청구도 그대로 따라간다.
추론 토큰만 있고 content가 비어 있는 것도 실패가 아니다. 추론 모델에서는 상한이 낮으면 눈에 보이는 텍스트가 나오기 전에 추론이 전부 소모해버려 content는 비고 completion_tokens_details.reasoning_tokens만 채워질 수 있다. 재시도가 아니라 상한을 올려야 한다. 다만 Astra에서는 그 상한 자체가 지켜지지 않으므로, 이 증상을 봤다면 원인을 단정하기 전에 usage부터 확인하자.
정상 동작하는 요청
curl -X POST https://api.ofox.io/v1/chat/completions \
-H "Authorization: Bearer $OFOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-6-astra",
"messages": [{"role": "user", "content": "Answer in one sentence: what is quicksort?"}],
"reasoning": {"effort": "high"}
}'
무엇이 실제로 일을 하는지 보자. 길이 제약은 max_tokens가 아니라 프롬프트에 들어 있다. 이걸 루프로 확장하기 전에 응답의 usage.completion_tokens를 읽고 예상과 맞춰보자.
무엇을 호출할 수 있고 얼마인지는 이 페이지가 아니라 GET https://api.ofox.io/v1/models가 기준이다.
관련 글
- GPT-6 Astra API 가격 — 위의 토큰들이 실제로 얼마인지, 272K 장문 컨텍스트 할증 포함.
- GPT-6 Astra 리뷰 — 독립 벤치마크 전반과 effort 단계별 비용 곡선.
- Codex, Cursor, Cline, DSH의 GPT-6 Astra — 에이전트별로 동작하는 설정.
- GPT-5.6 model not available — 이전 세대의 같은 명명 문제. Codex를 ChatGPT 계정과 쓰는 경우도 포함.
출처
이 페이지의 모든 오류 본문은 2026년 9월 6일 Ofox /v1/chat/completions 엔드포인트에 실제 요청을 보내 받아낸 것이다. max_tokens 측정은 openai/gpt-6-astra에 대한 네 번의 요청과 openai/gpt-5.6-sol에 대한 한 번의 대조 요청이며, 프롬프트는 동일하고 검증 대상 파라미터만 달리했다. 하루 동안 한 경로에서 얻은 작은 표본이지 사양이 아니므로, 이를 바탕으로 비용 모델을 세우기 전에 자신의 계정에서 확인하길 권한다. OpenAI 직결을 포함한 다른 경로에서는 오류 문구가 다른 형식을 쓴다.
자주 묻는 질문
- GPT-6 Astra가 model_not_found를 반환하는 이유는?
- 해당 모델 문자열이 카탈로그에 없기 때문입니다. 응답은 {"error":{"message":"Model 'gpt-6' not found","type":"model_not_found","code":404}}입니다. Ofox에서 유효한 문자열은 openai/gpt-6-astra이며 별칭은 gpt-6-astra와 gpt-6-astra-2026-09-03입니다. 그냥 gpt-6은 404를 내고, gpt-6-astra-sol 같은 등급 접미사도 마찬가지입니다. GPT-6에는 Sol, Terra, Luna 같은 등급이 없습니다.
- GPT-6 Astra는 max_tokens를 지키나요?
- 지키지 않으며, 이 페이지에서 가장 비싼 이야기입니다. max_tokens 16을 요청했는데 응답 토큰 2,614개가 청구됐고 finish_reason은 length가 아니라 stop이었습니다. max_completion_tokens도 같아서 50을 요청했는데 2,944개가 왔습니다. 같은 게이트웨이의 GPT-5.6 Sol은 max_tokens를 정확히 지켜 50 토큰을 finish_reason length로 반환하므로, 이건 엔드포인트가 아니라 Astra 고유의 동작입니다.
- GPT-6 Astra는 어떤 reasoning effort 값을 받나요?
- 2026년 9월 6일 테스트에서 none, low, medium, high, xhigh, max 전부가 정상적으로 응답을 반환했습니다. 잘못된 값을 보내면 오류가 나는데, 그 메시지에는 'none', 'low', 'medium', 'high', 'xhigh'만 나열됩니다. 그런데 max는 그 목록에 없는데도 동작하므로, 이 오류 문구는 권위 있는 정보가 아니라 불완전한 것으로 다뤄야 합니다.
- GPT-6 Astra 엔드포인트의 invalid_api_key는 무슨 뜻인가요?
- 키가 틀렸거나 폐기됐거나 다른 계정의 것이라는 뜻입니다. 응답은 {"error":{"message":"Invalid or expired API key","type":"invalid_api_key","code":401}}입니다. 환경 변수가 비어 있어도 헤더 누락 오류가 아니라 같은 오류가 나오기 때문에, 엉뚱한 데를 뒤지게 되는 경우가 많습니다.
- Missing required parameter messages is required는 어떻게 고치나요?
- 요청 본문에 messages 배열이 없습니다. 응답은 {"error":{"message":"Missing required parameter: 'messages' is required. [ofox.ai]","type":"invalid_request_error","code":400}}입니다. 끝의 [ofox.ai]에 주목하세요. 상류에서 전달된 게 아니라 게이트웨이에서 생성된 오류라는 표시이며, 어느 계층이 요청을 거절했는지 가릴 때 유용한 신호입니다.
- Ofox에서 GPT-6 Astra를 쓸 수 있나요?
- 네, 2026년 9월 5일부터 openai/gpt-6-astra로 제공됩니다. 100만 토큰당 입력 $10.00, 출력 $50.00, 캐시 읽기 $1.00, 쓰기 $12.50이며 /v1/chat/completions와 /v1/responses에서 사용할 수 있습니다.


