MiniMax는 2026년 11월 18일 M2.5와 M2.7을 서비스 종료할 예정이며, 전환은 이미 시작됐습니다. 10월 19일부터 두 구형 모델군은 신규 사용자에게 제공되지 않으며, 해당 모델명을 지정한 플랜 요청은 M3.1 Flash로 처리됩니다. 종량제 사용자라면 직접 모델 ID를 변경할 수 있는 기간이 4주 남았습니다.
대부분의 M2.7 코드가 수정 없이 M3.1 Flash에서 실행됩니다. 문제는 설계상의 한 가지 선택에서 비롯됩니다. M3.1 Flash는 항상 추론하며, 따로 지정하지 않으면 가장 높은 수준으로 추론합니다. 그 결과 눈에 띄는 오류 하나, 조용히 늘어나는 비용 몇 가지, 그리고 이제는 아무 효과도 없는 설정 몇 가지가 생깁니다.
AIHubMix는 이 글의 모든 요청을 2026년 10월 19일 게이트웨이를 통해 minimax-m3.1-flash에 전송해 실행했습니다. 오류 메시지는 응답에서 그대로 옮겼습니다. MiniMax의 규칙은 API 문서에서 인용했습니다.
영향을 받는 사용자와 발생하는 문제
| 다음 경로로 M2.5/M2.7을 사용 중인 경우 | 발생하는 일 | 기한 |
|---|---|---|
| MiniMax M Plan / Token Plan | 이전 이름으로 요청해도 M3.1 Flash가 처리 | 이미 적용됨 (10월 19일) |
| MiniMax 종량제 | 기존 ID가 계속 작동하다가 중단됨 | 2026년 11월 18일 |
| 신규 MiniMax 계정 | M2.5/M2.7을 사용할 수 없음 | 2026년 10월 19일 |
MiniMax의 모델 페이지에는 플랜 사용자에 대해 이렇게 나와 있습니다. "이 플랜에서 M2.5 및 M2.7 모델로 보내는 모든 요청은 자동으로 M3.1 Flash Preview로 라우팅됩니다." 또한 "기존 모델명은 계속 사용할 수 있습니다." 종량제 사용자에 대해서는 "서비스 종료 후에는 해당 모델로 보내는 API 요청이 더 이상 작동하지 않습니다."라고 안내합니다. 공지에는 종량제 사용자의 요청이 자동으로 다른 모델로 전환된다는 내용이 없으므로, 대체 모델로 연결되기보다 오류가 발생할 것으로 예상해야 합니다.
플랜 사용자는 "라우팅"의 의미를 알아두어야 합니다. 로그에는 계속 M2.7이라고 표시되지만, 가중치가 다르고 컨텍스트가 5× 더 크며 추론 깊이 기본값은 max입니다. 모델이 변경된 것으로 보고 평가를 다시 실행하세요.
명확하게 드러나는 오류
400: "requires adaptive thinking"
표시되는 오류. 추론을 비활성화하는 요청은 거부됩니다.
{"error": {"message": "invalid params, model \"MiniMax-M3.1-Flash\" requires adaptive thinking; thinking.type=\"disabled\" (including reasoning.effort=none) is not allowed (2013) (tid: …)", "type": "bad_request_error", "param": "", "code": null}}
원인. MiniMax의 Messages API 참조 문서에 따르면 이 모델은 "항상 추론합니다". thinking.type을 전송한다면 값은 adaptive여야 하며, disabled를 지정하면 HTTP 400이 반환됩니다. M3에서는 추론을 끌 수 있으므로 M3용으로 작성한 코드에서도 이 오류가 발생할 수 있습니다. 모델을 비추론형으로 표시하고 기본적으로 "thinking off"를 전송하는 프레임워크는 모든 호출에서 이 오류를 만납니다. kodus-ai와 9router-go 프로젝트에서도 이와 같은 사례가 보고됐습니다.
오류를 발생시키는 최소 요청 (AIHubMix의 Chat Completions):
curl https://aihubmix.com/v1/chat/completions \
-H "Authorization: Bearer $AIHUBMIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "minimax-m3.1-flash",
"messages": [{"role": "user", "content": "hi"}],
"thinking": {"type": "disabled"}}'
해결 방법. thinking 필드를 삭제하거나 {"type": "adaptive"}로 설정하세요. 시간을 절약하려고 추론을 비활성화한 것이라면 대신 "reasoning_effort": "low"를 사용하세요.
이미지 URL에서 동일한 코드 2013을 반환하는 400 오류
표시되는 오류. invalid param: remote returned status 400 (2013). upload.wikimedia.org에 호스팅된 이미지 URL에서 이 오류가 발생했습니다. 같은 요청에서 이미지를 base64로 보내거나 다른 호스트의 이미지 URL을 사용하면 200이 반환됐습니다.
원인. 코드 2013은 추론 관련 오류 코드가 아니라 MiniMax의 일반적인 "잘못된 매개변수" 코드입니다. 이 사례에서는 업스트림에서 원격 이미지를 가져오지 못한 것으로 보입니다. 이는 메시지를 토대로 한 저희의 해석이며, MiniMax는 이 사례를 문서화하지 않았습니다.
해결 방법. 이미지를 base64(data:image/png;base64,…)로 보내거나 일반 HTTP 요청을 처리하는 곳에 호스팅하세요. 로그에서 2013을 검색할 때는 추론 오류라고 단정하기 전에 전체 메시지를 확인하세요.
11월 18일 이후: 서비스 종료된 모델 ID
해당 날짜부터 MiniMax API에서 종량제로 사용하는 MiniMax-M2.5, MiniMax-M2.5-highspeed, MiniMax-M2.7, MiniMax-M2.7-highspeed 호출은 작동을 멈춥니다. M2.1과 M2는 공지에 포함되지 않았습니다. 그전에 모델 ID를 변경하세요. AIHubMix에서 새 ID는 minimax-m3.1-flash입니다.
조용히 발생하는 문제
이 요청은 모두 200을 반환합니다. 차이는 요금, 지연 시간 또는 출력에서 드러납니다.
1. 이제 아무 효과도 없는 "추론 끄기" 스위치
AIHubMix에서는 추론을 끄는 세 가지 방법이 오류 없이 처리되지만, 모델은 여전히 추론합니다.
| 요청 | AIHubMix에서의 결과 |
|---|---|
| Messages API, thinking 비활성화 | 200; 짧은 퍼즐에서 추론 토큰 469–622개 |
| Chat, reasoning_effort none | 200; 같은 퍼즐에서 추론 토큰 265–372개 |
| Chat, reasoning_effort minimal | 200; 모델이 여전히 추론함 |
앞의 두 행은 세 상자 논리 퍼즐을 동일하게 실행한 세 번의 결과이며, low에서는 추론 토큰을 173–251개 사용했습니다. minimal 설정은 한 줄짜리 산술 프롬프트로 한 번 확인했습니다.
Chat Completions에서 thinking: {"type": "disabled"}를 지정할 때만 위의 400 오류가 발생합니다. M2.x 또는 M3 코드에서 이 스위치 중 하나를 사용해 호출 속도를 높였다면, 이제 호출은 아무런 표시 없이 추론을 수행합니다. 실제로 조정할 수 있는 것은 추론 수준뿐이며, 가장 낮은 수준은 low입니다.
2. 기본 추론 수준은 max
M2.7에는 추론 수준이 없었습니다. M3.1 Flash에는 5단계가 있으며, MiniMax 문서에 따르면 필드를 생략하면 max가 적용됩니다. Python 함수 하나에서 작은 버그 두 개를 수정하는 작업을 대상으로 AIHubMix에서 측정한 결과는 다음과 같습니다.
| 설정 | 평균 추론 토큰 수 | 평균 소요 시간 | 수정 1회당 평균 비용 |
|---|---|---|---|
| 추론 수준 생략 | 6,364 | 56 s | $0.0045 |
| 추론 수준 low | 591 | 9.5 s | $0.0006 |
두 설정 모두 모든 실행에서 숨겨진 테스트 215개를 통과했습니다. 비용은 AIHubMix의 입력 토큰 100만 개당 $0.165, 출력 토큰 100만 개당 $0.66 요금을 기준으로 하며, 각 설정을 세 번씩 실행했습니다. 추론 수준을 추가하지 않고 마이그레이션하면 같은 작업에 약 6× 더 오래 걸립니다. 5단계 전체 측정 결과는 이 시리즈의 추론 수준 관련 글에서 확인할 수 있습니다.
3. 추론 토큰도 max_tokens를 소모함
추론 토큰은 max_tokens에 포함됩니다. M2.x 코드에서는 짧은 답변에 작은 제한을 설정하는 경우가 많습니다. max_tokens: 64로 설정하고 두 문장으로 답할 질문을 했더니, 모델은 추론에 토큰 예산을 모두 사용한 뒤 finish_reason: "length"를 반환했고, 답변은 "Sunlight contains many colors,"에서 문장이 중간에 끊겼습니다. MiniMax는 131,072를 권장하며 최대 524,288까지 허용합니다. 작은 제한은 높이거나, 텍스트를 신뢰하기 전에 finish_reason을 확인하세요.
4. 캐싱 및 서비스 등급이 변경됨
- MiniMax API 참조 문서에 따르면 M3.1 Flash(및 M3)에서는
cache_control을 지원하지 않습니다. M2.7은 명시적 캐시 쓰기에 토큰 100만 개당 $0.375를 청구했습니다. M3.1 Flash에서는 캐싱이 자동으로 이루어집니다. AIHubMix는 캐시 읽기에 토큰 100만 개당 $0.0165를 청구하며, 처음 보낸 요청을 포함해 저희가 전송한 모든 요청에서 프롬프트 토큰 약 175–195개가 캐시에서 처리됐습니다. MiniMax 측의 고정 프리앰블로 보이며, 해당 요금 기준으로 요청 1,000건당 약 1/3센트가 듭니다.cache_control블록은 여기서 아무 효과도 없으므로 제거하세요. service_tier는 지원되지 않습니다. M3의 Priority 등급을 사용해 지연 시간을 줄였다면 Flash에는 이에 해당하는 기능이 없습니다.
5. 이름은 같지만 샘플링은 다름
MiniMax의 기본값은 M2.x의 top_p 0.9에서 M3.1 Flash의 0.95로 바뀌었고, 컨텍스트 윈도우는 204,800에서 1,000,000 토큰으로 늘었습니다. M2.7에 맞춰 조정한 프롬프트에서는 더 길거나 느슨한 출력이 나올 수 있습니다. 이름이 그대로인 모델도 실제로는 새로운 모델입니다. 평가를 다시 실행하세요.
놓치기 쉬운 청구 규칙
- 추론은 출력으로 청구됩니다. AIHubMix 요금은 토큰 100만 개당 $0.66입니다. 기본 추론 수준으로 버그를 수정했을 때 출력 토큰의 95%가 추론 토큰이었습니다(6,673개 중 6,364개).
- 아직 MiniMax의 공식 토큰당 요금은 공개되지 않았습니다. MiniMax 요금 페이지에는 M3와 M2.x가 나와 있지만 M3.1 Flash는 없습니다. AIHubMix 요금은 $0.165 / $0.66 / $0.0165(입력 / 출력 / 캐시 읽기)입니다.
- 공식 M3 요금은 입력 토큰이 512K를 넘으면 두 배가 됩니다. AIHubMix에는 M3.1 Flash 요금이 단일 요금으로 표시되어 있습니다. 매우 긴 프롬프트를 보낸다면 첫 번째 청구서를 직접 계산한 예상 금액과 비교해 확인하세요.
비용을 줄이는 방법:
reasoning_effort: "low"(Chat),output_config.effort: "low"(Messages) 또는reasoning.effort: "low"(Responses)를 기본값으로 설정하고, 작업에 따라 높이세요.- 자동 캐싱을 활용할 수 있도록 프롬프트 앞부분에 자주 바뀌지 않는 지침을 배치하세요.
- 추론 때문에 답변이 잘리지 않도록
max_tokens를 충분히 크게 설정하세요. 잘린 답변을 재시도하는 비용이 여유 토큰을 추가하는 것보다 더 많이 들기 때문입니다.
실제 권한을 가진 에이전트
모델이 명령을 실행하거나 파일을 편집할 수 있을 때는 다음 세 가지 동작이 중요합니다.
- 항상 행동에 앞서 추론합니다.
low에서도 마찬가지입니다. 이는 도구 선택에 도움이 됩니다. 하지만 모든 도구 단계에서 추론 지연 시간이 발생한다는 뜻이기도 합니다. 짧은 도구 호출의 경우low설정에서도 한 단계에 약 2~7초가 걸렸습니다. - 지시한 내용을 좁은 범위에서 그대로 수행합니다. 초기 테스터 중 한 명은 "엄청나게 빠르지만, 명확하고 구체적으로 지시하지 않으면 너무 대충 하려 합니다."라고 평가했습니다. 에이전트에 막연한 목표를 주기보다 명시적인 중지 조건과 검증 단계를 지정하세요("테스트를 실행하고 결과를 붙여 넣으세요").
- 공식적으로 지원되는
tool_choice는auto뿐입니다. AIHubMix에서는"required"(Chat)와{"type": "any"}(Messages)가 허용됐고 모델이 도구를 호출했지만, MiniMax는 강제 호출 기능을 문서화하지 않았습니다. 이를 안전 검사에 의존하는 기능으로 사용하지 마세요.
MiniMax는 이후 요청에서도 추론 블록을 수정 없이 반환하고(Messages), reasoning_content를 그대로 유지하라고 안내합니다(Chat). 테스트에서는 추론 블록을 제거해도 짧은 도구 왕복이 작동했지만, 긴 에이전트 루프에서는 문서화된 규칙을 따르세요.
코딩 도구
AIHubMix는 일반적인 코딩 도구에 필요한 세 가지 프로토콜 모두에서 minimax-m3.1-flash를 제공합니다. 각 도구는 10월 19일에 텍스트 요청, 도구 호출, 도구 결과 왕복을 테스트했습니다.
| 도구 | 필요한 프로토콜 | AIHubMix를 통한 사용 가능 여부 | 추론 수준 필드 |
|---|---|---|---|
| Claude Code | Anthropic Messages | 예 | output_config.effort |
| Codex CLI | OpenAI Responses | 예 | reasoning.effort |
| OpenCode | OpenAI-compatible | 예 | reasoning_effort |
MiniMax API의 컨텍스트 윈도우는 1,000,000입니다. 관리자가 magpie 프로젝트에서 MiniMax 문서를 인용한 바에 따르면, MiniMax Code 자체는 "사용 경험과 비용의 균형을 위해" 클라이언트 기본값을 512K로 설정합니다. API에는 윈도우를 지정하는 매개변수가 없습니다.
Claude Code. AIHubMix Claude Code 가이드에 나온 대로 AIHubMix를 연결하고, 모델을 minimax-m3.1-flash로 설정하세요.
export ANTHROPIC_BASE_URL="https://aihubmix.com"
export ANTHROPIC_AUTH_TOKEN="$AIHUBMIX_API_KEY"
export ANTHROPIC_MODEL="minimax-m3.1-flash"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="minimax-m3.1-flash" # background tasks too
Anthropic 스타일 클라이언트가 전송하는 두 가지 thinking 형태인 예산이 포함된 enabled와 adaptive는 모두 테스트에서 200을 반환했으므로 400 오류가 발생하지 않습니다. 알려진 문제는 Claude Code의 effort 설정이 output_config.effort로 Claude 이외의 모델에 전달되는지 문서화되어 있지 않다는 점입니다. 전달되지 않으면 모델은 기본값인 max로 실행되어 M2.7보다 응답이 느려집니다. 아래 스모크 테스트로 확인할 수 있습니다.
Codex CLI. Codex는 Responses API를 사용하며, 이 모델에서 작동합니다. 함수 호출은 function_call 항목으로 반환됩니다. AIHubMix Codex 가이드에 따라 사용자 지정 제공자를 설정하고 wire_api = "responses"를 지정한 다음, model = "minimax-m3.1-flash"와 model_reasoning_effort를 설정하세요. xhigh와 minimal은 모두 허용되었습니다. minimal은 MiniMax의 단계 중 하나가 아니지만 모델은 여전히 사고합니다.
OpenCode. OpenCode 이슈 #54801(v2.0.27에서 재현됨)에 따르면 OpenCode는 이 모델의 effort 변형을 찾지 못하므로 ctrl+t가 작동하지 않습니다. 이슈에서 제안하는 우회 방법은 opencode.json에 변형 5개를 직접 선언하는 것입니다. AIHubMix의 OpenAI 호환 제공자를 사용하는 경우, 각 변형에 설정할 요청 필드는 이슈의 output_config.effort가 아니라 reasoning_effort(low … max)입니다. none 변형은 추가하지 마세요.
세 가지 도구 중 무엇이든 적용할 수 있는 15분 스모크 테스트:
- 알려진 버그가 하나 있는 함수와 그 버그 때문에 실패하는 테스트 파일을 임시 폴더에 만듭니다.
- 에이전트에게 이렇게 요청하세요. "테스트를 실행하고, 버그를 수정하고, 테스트를 다시 실행한 다음 출력 결과를 보여줘."
- 성공 기준은 다음과 같습니다. 에이전트가 수정 전후에 테스트를 실행하고, 마지막 테스트가 통과하며, 몇 번의 턴 안에 작업을 마치고, 어느 턴에서도 400 오류가 반환되지 않아야 합니다.
- AIHubMix 사용량 로그를 확인하세요. reasoning 토큰이 포함된
minimax-m3.1-flash요청이 보여야 합니다. 각 턴에 1분 가까이 걸린다면 effort 설정이 모델에 전달되지 않아max로 실행되고 있는 것입니다.
마이그레이션 체크리스트
- 11월 18일 전에 MiniMax-M2.5 / M2.7 ID를 minimax-m3.1-flash(AIHubMix)로 교체하세요.
- 요청에서 thinking disabled, effort none, effort minimal을 제거하세요.
- 모든 요청에 명시적인 effort 단계를 추가하세요. low부터 시작하세요.
- thinking으로 인해 답변이 잘리지 않도록 max_tokens를 높이고 finish_reason을 확인하세요.
- cache_control 및 service_tier 필드를 제거하세요.
- 이미지는 base64로 전송하거나 업스트림에서 가져올 수 있는 호스트에 올려 전송하세요.
- 도구 호출 턴 간에 thinking 블록과 reasoning_content를 그대로 유지하세요.
- 평가를 다시 실행하세요. 이름은 같아도 모델과 기본 샘플링 설정은 달라졌습니다.
- 코딩 도구에서는 effort 설정이 모델에 전달되는지 확인하세요(턴 소요 시간이 빠른 확인 기준입니다).
자주 묻는 질문
왜 "requires adaptive thinking" 오류가 발생하나요?
요청에서 thinking을 비활성화했기 때문이며, 보통 Chat Completions 엔드포인트에서 thinking type을 disabled로 설정한 경우입니다. M3.1 Flash는 항상 사고합니다. 해당 필드를 제거하거나 adaptive로 설정하고, 속도를 높이고 싶다면 effort를 low로 설정하세요.
M2.7 요청은 바뀌지 않았는데 답변은 달라졌어요. 왜 그런가요?
MiniMax M Plan 또는 Token Plan을 사용 중이라면, M2.5 또는 M2.7을 지정한 요청은 2026년 10월 19일부터 이전 이름으로 M3.1 Flash가 처리하고 있습니다.
종량제 사용자의 마감일은 언제인가요?
2026년 11월 18일입니다. 그 이후에는 M2.5 및 M2.7에 대한 MiniMax API 요청이 작동하지 않습니다.
AIHubMix에서 reasoning_effort none을 사용할 수 있나요?
200을 반환하지만 모델은 여전히 사고합니다. 실질적으로 적용 가능한 가장 낮은 단계는 low입니다.
cache_control이 여전히 필요한가요?
아니요. MiniMax는 M3.1 Flash에서 이를 지원하지 않습니다. 캐싱은 자동으로 처리되며, AIHubMix는 캐시된 입력 토큰 100만 개당 $0.0165를 청구합니다.
Claude Code와 Codex에서 M3.1 Flash를 사용할 수 있나요?
네. AIHubMix는 Claude Code용 Anthropic Messages API와 Codex용 Responses API를 통해 모델을 제공합니다. 두 API 모두 2026년 10월 19일에 텍스트, 도구 호출, 도구 결과 테스트를 통과했습니다.
답변이 잘리는 이유는 무엇인가요?
thinking 토큰도 max_tokens에 포함됩니다. finish_reason이 length라면 max_tokens를 높이세요. MiniMax는 131,072를 권장합니다.
계속 읽기: MiniMax M3.1 Flash 시리즈
- 전환을 결정하기 전에 Space Bunny 출시부터 M2.7 및 M3 대비 가격까지, 새로 도입할 모델을 살펴보세요: MiniMax M3.1 Flash는 Space Bunny: M2.7 및 M3에서 달라진 점과 비용
- 마이그레이션 후 가장 중요한 설정은 effort입니다. 이 글에서는 하나의 버그 수정 작업에서 다섯 가지 단계를 모두 측정합니다: MiniMax M3.1 Flash Effort 단계: 같은 버그 수정에서 기본값이 Low보다 7× 비싼 이유
- 마이그레이션을 계기로 MiniMax를 다시 고려하게 되었다면, 가장 가까운 경쟁 모델 두 가지로 같은 작업을 수행했을 때의 결과와 비용을 확인해 보세요: MiniMax M3.1 Flash vs DeepSeek V4.1 Flash vs Claude Haiku 5.5: 버그 수정 하나, 비용 세 가지



