Overstappen van MiniMax M2.5/M2.7 vóór 18 november: de 400-fout ‘requires adaptive thinking’ van M3.1 Flash oplossen

AIHubMix9 min leestijd
Overstappen van MiniMax M2.5/M2.7 vóór 18 november: de 400-fout ‘requires adaptive thinking’ van M3.1 Flash oplossen

MiniMax neemt M2.5 en M2.7 op 18 november 2026 uit gebruik, en de overstap is al begonnen. Sinds 19 oktober zijn de twee oudere modelreeksen gesloten voor nieuwe gebruikers. Verzoeken via abonnementen waarin deze modellen worden opgegeven, worden afgehandeld door M3.1 Flash. Gebruik je betalen per gebruik, dan heb je vier weken om de model-ID zelf te wijzigen.

De meeste code voor M2.7 werkt ongewijzigd met M3.1 Flash. Het probleem komt voort uit één ontwerpkeuze: M3.1 Flash denkt altijd, en denkt op het diepste niveau tenzij je iets anders aangeeft. Dat levert één duidelijke fout op, een paar minder opvallende kostenstijgingen en enkele instellingen die nu helemaal niets meer doen.

AIHubMix heeft op 19 oktober 2026 elk verzoek in dit artikel via zijn gateway naar minimax-m3.1-flash gestuurd. De foutmeldingen zijn rechtstreeks overgenomen uit de antwoorden. De regels van MiniMax zijn geciteerd uit de API-documentatie.

Wie wordt geraakt, en hoe?

Je gebruikt M2.5/M2.7 via Wat er gebeurt Deadline
MiniMax M Plan / Token Plan Verzoeken worden onder de oude naam afgehandeld door M3.1 Flash Is al gebeurd (19 okt)
MiniMax betalen per gebruik Oude ID's blijven werken en worden daarna buiten gebruik gesteld 18 nov 2026
Nieuw MiniMax-account M2.5/M2.7 niet beschikbaar 19 okt 2026

Op de modellenpagina van MiniMax staat het voor gebruikers met een abonnement als volgt: ‘alle verzoeken aan de modellen M2.5 en M2.7 binnen deze abonnementen worden automatisch doorgestuurd naar M3.1 Flash Preview’ en ‘bestaande modelnamen blijven werken’. Voor gebruikers die per gebruik betalen: ‘Na beëindiging werken API-verzoeken aan deze modellen niet meer.’ De melding vermeldt geen automatische doorverwijzing voor betalen per gebruik, dus verwacht fouten in plaats van een terugvaloptie.

Gebruikers met een abonnement moeten goed begrijpen wat ‘doorgestuurd’ betekent. In je logs staat nog steeds M2.7, maar de gewichten zijn anders, de context is 5× groter en de standaarddiepte voor het denken is max. Behandel dit als een modelwijziging en voer je evaluaties opnieuw uit.

Wat duidelijke fouten oplevert

400: ‘requires adaptive thinking’

Wat je ziet. Een verzoek waarbij denken is uitgeschakeld, wordt afgewezen:

{"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}}

Waarom. In de referentie voor de Messages API staat dat het model ‘altijd denkt’: als thinking.type wordt meegestuurd, moet de waarde adaptive zijn; met disabled krijg je HTTP 400. Code die voor M3 is geschreven, kan deze fout veroorzaken, omdat je bij M3 het denken kunt uitschakelen. Frameworks die het model als niet-redenerend markeren en standaard ‘thinking off’ meesturen, krijgen de fout bij elke aanroep; de projecten kodus-ai en 9router-go hebben zulke gevallen allebei gemeld.

Minimaal verzoek dat de fout veroorzaakt (Chat Completions via AIHubMix):

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"}}'

Oplossing. Verwijder het veld thinking of stel het in op {"type": "adaptive"}. Als je denken uitschakelde om tijd te besparen, gebruik dan in plaats daarvan "reasoning_effort": "low".

400 met dezelfde code 2013 voor afbeeldings-URL's

Wat je ziet. invalid param: remote returned status 400 (2013). We kregen dit bij een afbeeldings-URL op upload.wikimedia.org. Hetzelfde verzoek met een afbeelding in base64, of met een afbeeldings-URL van een andere host, gaf status 200.

Waarom. Code 2013 is de algemene foutcode van MiniMax voor ‘ongeldige parameters’, niet een specifieke fout over denken. In dit geval kon de upstreamserver de externe afbeelding blijkbaar niet ophalen. Dat is onze interpretatie van de melding; MiniMax documenteert dit geval niet.

Oplossing. Stuur afbeeldingen als base64 (data:image/png;base64,…) of host ze ergens waar gewone HTTP-verzoeken worden afgehandeld. Zoek je in logs naar 2013, lees dan de volledige melding voordat je ervan uitgaat dat het om de fout met denken gaat.

Na 18 november: model-ID's buiten gebruik

Aanroepen via MiniMax' API naar MiniMax-M2.5, MiniMax-M2.5-highspeed, MiniMax-M2.7 en MiniMax-M2.7-highspeed voor betalen per gebruik werken vanaf die datum niet meer. M2.1 en M2 staan niet in de aankondiging. Wijzig de model-ID vóór die tijd. Op AIHubMix is de nieuwe ID minimax-m3.1-flash.

Wat ongemerkt misgaat

Al deze verzoeken leveren status 200 op. Het verschil zie je terug op je factuur, in de latentie of in de uitvoer.

1. Schakelaars voor ‘denken uit’ die nu niets meer doen

Via AIHubMix worden drie manieren om geen denkproces aan te vragen zonder fout geaccepteerd, maar het model denkt toch:

Verzoek Resultaat via AIHubMix
Messages API, thinking uitgeschakeld 200; 469–622 denktokens voor een korte puzzel
Chat, reasoning_effort none 200; 265–372 redeneertokens voor dezelfde puzzel
Chat, reasoning_effort minimal 200; model denkt nog steeds

De eerste twee rijen zijn elk gebaseerd op drie uitvoeringen van dezelfde logische puzzel met drie dozen; bij low waren dat 173–251 redeneertokens. De test met minimal was één uitvoering met een rekensom van één regel.

Alleen Chat Completions met thinking: {"type": "disabled"} levert de bovenstaande 400 op. Als je M2.x- of M3-code op een van deze schakelaars vertrouwde om aanroepen snel te houden, denkt het model nu ongemerkt toch. De enige echte instelling is het redeneerniveau, waarvan low het laagste is.

2. Het standaardredenieniveau is max

M2.7 had geen niveaus voor het denken. M3.1 Flash heeft er vijf, en volgens de documentatie van MiniMax wordt het veld standaard ingesteld op max als je het weglaat. Bij een kleine reparatie van twee bugs in één Python-functie heeft AIHubMix het volgende gemeten:

Instelling Gem. redeneertokens Gem. tijd Gem. kosten per reparatie
Redeneerniveau niet opgegeven 6,364 56 s $0.0045
Redeneerniveau low 591 9.5 s $0.0006

Elke uitvoering met beide instellingen slaagde voor alle 215 verborgen tests. De kosten zijn berekend op basis van de tarieven van AIHubMix: $0.165 per miljoen invoertokens en $0.66 per miljoen uitvoertokens, met drie uitvoeringen per instelling. Als je migreert zonder een redeneerniveau in te stellen, duurt dezelfde taak ongeveer 6× zo lang. De volledige meting van alle vijf niveaus staat in het artikel over redeneerniveaus in deze reeks.

3. Denkproces verbruikt max_tokens

Denktokens tellen mee voor max_tokens. Code voor M2.x stelt vaak lage limieten in voor korte antwoorden. Met max_tokens: 64 en een vraag waarop een antwoord van twee zinnen wordt verwacht, verbruikte het model de volledige limiet aan denken en gaf het vervolgens finish_reason: "length" terug, met het antwoord ‘Zonlicht bevat veel kleuren,’ dat halverwege de zin werd afgebroken. MiniMax beveelt 131,072 aan en staat maximaal 524,288 toe. Verhoog lage limieten of controleer finish_reason voordat je de tekst vertrouwt.

4. Caching en serviceniveaus zijn veranderd

  • Volgens de API-referentie van MiniMax wordt cache_control niet ondersteund in M3.1 Flash (of M3). Voor expliciete cachewrites bracht M2.7 $0.375 per miljoen in rekening. In M3.1 Flash verloopt caching automatisch. AIHubMix rekent $0.0165 per miljoen voor cachelezingen, en ongeveer 175–195 prompttokens in elk verzoek dat we verstuurden werden uit de cache geleverd, zelfs bij het eerste verzoek. Dit lijkt een vaste preamble aan de kant van MiniMax; tegen dat tarief kost het ongeveer een derde van een cent per duizend verzoeken. Verwijder blokken met cache_control; die doen hier niets.
  • service_tier wordt niet ondersteund. Als je de Priority-laag van M3 gebruikte voor lagere latentie, bestaat er geen equivalent in Flash.

5. Dezelfde naam, andere sampling

De standaardwaarde van MiniMax voor top_p is gewijzigd van 0.9 in M2.x naar 0.95 in M3.1 Flash, en het contextvenster groeide van 204,800 naar 1,000,000 tokens. Prompts die op M2.7 waren afgestemd, kunnen langere of minder strakke uitvoer opleveren. Een model met een ongewijzigde naam is nog steeds een nieuw model: voer je evaluaties opnieuw uit.

Factureringsregels die je makkelijk over het hoofd ziet

  • Denken wordt als uitvoer gefactureerd. Bij AIHubMix kost dat $0.66 per miljoen. Bij het standaardredenieniveau was denken goed voor 95% van de uitvoer bij onze bugfix (6,364 van 6,673 tokens).
  • MiniMax heeft nog geen officiële prijs per token bekendgemaakt. Op de prijspagina staan M3 en M2.x, maar niet M3.1 Flash. AIHubMix rekent $0.165 / $0.66 / $0.0165 (invoer / uitvoer / cachelezing).
  • De officiële prijs van M3 verdubbelt boven 512K invoertokens. AIHubMix vermeldt één tarief voor M3.1 Flash. Verstuur je zeer lange prompts, controleer dan je eerste factuur aan de hand van je eigen schatting.

Stappen om de kosten te verlagen:

  1. Stel standaard reasoning_effort: "low" (Chat), output_config.effort: "low" (Messages) of reasoning.effort: "low" (Responses) in en verhoog het niveau per taak.
  2. Zet stabiele instructies aan het begin van de prompt, zodat automatische caching ze kan leveren.
  3. Stel max_tokens hoog genoeg in, zodat het denken het antwoord niet afkapt. Een afgekapt antwoord dat je opnieuw moet opvragen, kost immers meer dan wat extra ruimte.

Agents met echte rechten

Drie gedragingen zijn belangrijk wanneer het model opdrachten kan uitvoeren of bestanden kan bewerken:

  • Het redeneert altijd voordat het handelt, zelfs op low. Dat helpt bij het kiezen van tools. Het betekent ook dat elke toolstap vertraging door het denkproces heeft; bij onze korte toolaanroepen duurde een stap op low ongeveer 2 tot 7 seconden.
  • Het doet precies wat je zegt. Een van de eerste testers noemde het ‘bizar snel, maar je moet duidelijke en specifieke instructies geven, anders is het te lui’. Geef agents expliciete stopvoorwaarden en verificatiestappen (‘voer de tests uit en plak de uitvoer’) in plaats van open opdrachten.
  • tool_choice is officieel alleen auto. AIHubMix accepteerde "required" (Chat) en {"type": "any"} (Messages), en het model riep de tool aan, maar MiniMax documenteert niet dat het afdwingen hiervan werkt. Bouw er geen veiligheidscontrole op.

MiniMax zegt dat je denkblokken ongewijzigd moet terugsturen in latere beurten (Messages) en reasoning_content intact moet laten (Chat). In onze test werkte een korte tooluitwisseling ook nadat het denkblok was verwijderd, maar houd je bij lange agentloops aan de gedocumenteerde regel.

Codeertools

AIHubMix biedt minimax-m3.1-flash aan via alle drie de protocollen die veelgebruikte codeertools nodig hebben. Elk daarvan is op 19 oktober getest met tekst, een toolaanroep en een volledige heen-en-teruguitwisseling met toolresultaten.

Tool Benodigd protocol Werkt via AIHubMix Veld voor redeneerniveau
Claude Code Anthropic Messages Ja output_config.effort
Codex CLI OpenAI Responses Ja reasoning.effort
OpenCode OpenAI-compatible Ja reasoning_effort

Het contextvenster in MiniMax' API is 1,000,000. Volgens een citaat van de documentatie van MiniMax door een maintainer in het magpie-project stelt MiniMax Code de client standaard in op 512K ‘om de gebruikservaring en kosten in balans te houden’; de API heeft geen parameter voor het contextvenster.

Claude Code. Stel AIHubMix in als provider volgens de AIHubMix-handleiding voor Claude Code en stel het model in op 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

De twee denkmodi die clients in Anthropic-stijl versturen, enabled met een budget en adaptive, gaven in onze tests allebei een 200-statuscode, dus je krijgt geen 400-fout. Bekend probleem: het is niet gedocumenteerd of Claude Codes instelling voor de redeneerinspanning bij een model dat geen Claude is aankomt als output_config.effort. Zo niet, dan draait het model op de standaardwaarde max en duren beurten langer dan met M2.7. In de rooktest hieronder zie je hoe je dat kunt vaststellen.

Codex CLI. Codex gebruikt de Responses API, die met dit model werkt: functieaanroepen komen terug als function_call-items. Configureer een aangepaste provider zoals in de AIHubMix Codex-gids, met wire_api = "responses", stel vervolgens model = "minimax-m3.1-flash" in en configureer model_reasoning_effort. Zowel xhigh als minimal werd geaccepteerd; minimal is geen van de redeneerinspanningniveaus van MiniMax, maar het model denkt nog steeds.

OpenCode. OpenCode-issue #54801 (gereproduceerd op v2.0.27) meldt dat OpenCode voor dit model geen varianten voor redeneerinspanning herkent, waardoor ctrl+t niets doet. De workaround in de issue is om de vijf varianten zelf te definiëren in opencode.json. Bij de OpenAI-compatibele provider van AIHubMix moet het requestveld dat elke variant instelt reasoning_effort (low … max) zijn, niet output_config.effort uit de issue. Voeg geen variant none toe.

Een rooktest van 15 minuten voor elk van de drie:

  1. Maak een tijdelijke map met een functie die één bekende bug bevat en een testbestand dat daardoor faalt.
  2. Vraag de agent: "Voer de tests uit, los de bug op, voer de tests opnieuw uit en laat me de uitvoer zien."
  3. Dit is een geslaagde test: de agent voert de tests zowel vóór als na de wijziging uit, de laatste test slaagt, de taak is binnen een paar beurten klaar en geen enkele beurt geeft een 400-fout.
  4. Controleer het gebruikslogboek van AIHubMix. Je zou requests voor minimax-m3.1-flash met redeneertokens moeten zien. Duurt elke beurt bijna een minuut, dan wordt je instelling voor redeneerinspanning niet aan het model doorgegeven en draait het op max.

Migratiechecklist

  • Vervang de MiniMax-M2.5- / M2.7-ID's vóór 18 november door minimax-m3.1-flash (op AIHubMix).
  • Verwijder thinking disabled, effort none en effort minimal uit requests.
  • Voeg aan elk request expliciet een niveau voor redeneerinspanning toe; begin met low.
  • Verhoog max_tokens zodat het denken antwoorden niet afkapt; controleer finish_reason.
  • Verwijder de velden cache_control en service_tier.
  • Verstuur afbeeldingen als base64 of vanaf een host die de upstream kan bereiken.
  • Behoud thinking blocks en reasoning_content ongewijzigd tijdens toolbeurten.
  • Voer je evaluaties opnieuw uit: dezelfde naam, nieuw model, nieuwe standaardwaarden voor sampling.
  • Controleer bij programmeertools of de instelling voor redeneerinspanning het model bereikt (de beurtduur is een snelle indicatie).

Veelgestelde vragen

Waarom krijg ik de melding "requires adaptive thinking"?
Je request heeft denken uitgeschakeld, meestal met thinking type disabled op het Chat Completions-endpoint. M3.1 Flash denkt altijd. Verwijder het veld of stel het in op adaptive, en gebruik effort low als je snelheid wilt.

Mijn M2.7-requests zijn niet veranderd, maar de antwoorden wel. Hoe kan dat?
Als je een MiniMax M Plan of Token Plan hebt, worden requests met M2.5 of M2.7 als modelnaam sinds 19 oktober 2026 uitgevoerd door M3.1 Flash, onder de oude naam.

Wat is de deadline voor gebruikers die per gebruik betalen?
18 november 2026. Daarna werken MiniMax API-requests voor M2.5 en M2.7 niet meer.

Werkt reasoning_effort none op AIHubMix?
Het geeft een 200-statuscode terug, maar het model denkt nog steeds. Het laagste effectieve niveau is low.

Heb ik cache_control nog nodig?
Nee. MiniMax ondersteunt dit niet in M3.1 Flash. Caching gebeurt automatisch en AIHubMix rekent $0.0165 per miljoen tokens voor gecachte invoer.

Kan ik M3.1 Flash gebruiken in Claude Code en Codex?
Ja. AIHubMix biedt het aan via de Anthropic Messages API voor Claude Code en via de Responses API voor Codex. Beide doorstonden op 19 oktober 2026 tests met tekst, toolaanroepen en toolresultaten.

Waarom worden mijn antwoorden afgekapt?
Denktokens tellen mee voor max_tokens. Is finish_reason gelijk aan length, verhoog dan max_tokens. MiniMax raadt 131,072 aan.

Lees verder: de MiniMax M3.1 Flash-reeks

Bronnen