<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hassann</title>
    <description>The latest articles on DEV Community by Hassann (@hassann).</description>
    <link>https://dev.to/hassann</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3890506%2F89a141f2-4995-48b3-b5f2-e00ba5055afb.png</url>
      <title>DEV Community: Hassann</title>
      <link>https://dev.to/hassann</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hassann"/>
    <language>en</language>
    <item>
      <title>Gemini 3.7 Flash to 3.8 Flash: API migration guide</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Thu, 03 Sep 2026 08:35:09 +0000</pubDate>
      <link>https://dev.to/hassann/gemini-37-flash-to-38-flash-api-migration-guide-5cp3</link>
      <guid>https://dev.to/hassann/gemini-37-flash-to-38-flash-api-migration-guide-5cp3</guid>
      <description>&lt;h1&gt;
  
  
  Migrating from Gemini 3.7 Flash to Gemini 3.8 Flash: A Practical Checklist
&lt;/h1&gt;

&lt;p&gt;Google shipped Gemini 3.8 Flash on September 2, 2026—three weeks after Gemini 3.7 Flash—with the same introductory price and roughly the same speed. The model ID is &lt;code&gt;gemini-3.8-flash&lt;/code&gt;, without a preview suffix, and the model card describes it as “based on Gemini 3.7 Flash.” A plain chat prompt usually needs only a one-line model swap. However, configurations that control thinking, sampling, or tool loops require nine migration checks—two of which can produce errors that 3.7 Flash did not.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;This checklist is based on Google’s &lt;a href="https://ai.google.dev/gemini-api/docs/latest-model" rel="noopener noreferrer"&gt;What’s new in Gemini 3.8 Flash&lt;/a&gt; page and the Gemini 3 developer guide. The examples cover both the Interactions API, which Google now treats as the primary path, and the legacy &lt;code&gt;generateContent&lt;/code&gt; endpoint used by much existing 3.7 Flash code. You can paste the requests into Apidog and test them against the live endpoint before changing production.&lt;/p&gt;

&lt;p&gt;Google says 3.8 Flash “works harder” by taking smaller reasoning steps, verifying its work, and calling tools iteratively on complex tasks. That improves capability but can also increase token usage, so migration requires a budget review—not just a configuration diff.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes—and what doesn’t
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Gemini 3.7 Flash&lt;/th&gt;
&lt;th&gt;Gemini 3.8 Flash&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gemini-3.7-flash&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gemini-3.8-flash&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context / output&lt;/td&gt;
&lt;td&gt;1,048,576 / 65,536&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Introductory price through Dec. 31, 2026&lt;/td&gt;
&lt;td&gt;$0.75 / $3.75 per 1M tokens&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Price from Jan. 1, 2027&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;$1.50 / $7.50 per 1M tokens for both models&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thinking levels&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Same; &lt;code&gt;minimal&lt;/code&gt; returns a validation error; default is &lt;code&gt;medium&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokens per task&lt;/td&gt;
&lt;td&gt;Baseline&lt;/td&gt;
&lt;td&gt;About 30% more output tokens on average, according to Artificial Analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Function results&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;call_id&lt;/code&gt; + &lt;code&gt;name&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Both required and enforced&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Support status&lt;/td&gt;
&lt;td&gt;Fully supported; no deprecation date&lt;/td&gt;
&lt;td&gt;Current&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The pricing rows come from Google’s &lt;a href="https://ai.google.dev/gemini-api/docs/pricing" rel="noopener noreferrer"&gt;Gemini API pricing page&lt;/a&gt;, where the 3.6, 3.7, and 3.8 Flash rows are identical.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 0: Decide whether to migrate
&lt;/h2&gt;

&lt;p&gt;Migration is optional. Google says Gemini 3.7 Flash “remains fully supported,” and no sunset date has been published.&lt;/p&gt;

&lt;p&gt;Per-token pricing is unchanged, so the main cost difference is usage. Artificial Analysis measured Gemini 3.8 Flash at high thinking with approximately 48,000 output tokens per task—30% more than 3.7 Flash. At identical rates, that moved the estimated cost per task from $0.40 to $0.58. The index score increased from 56 to 59, while tool-use accuracy on τ³-Banking increased 12 points to 45%.&lt;/p&gt;

&lt;p&gt;The trade-off is more capability per task in exchange for more tokens per task. If your workload is short, latency-sensitive, or already passes its evaluations on 3.7 Flash, staying on 3.7 may be reasonable. See the &lt;a href="http://apidog.com/blog/gemini-3-8-flash-vs-gemini-3-7-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash vs. 3.7 Flash comparison&lt;/a&gt; for a workload decision matrix.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Swap the model ID in both API shapes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Interactions API
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gemini-3.7-flash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gemini-3.8-flash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Legacy &lt;code&gt;generateContent&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /v1beta/models/gemini-3.7-flash:generateContent
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /v1beta/models/gemini-3.8-flash:generateContent
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Python SDK
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;interactions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-3.8-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;...,&lt;/span&gt;
    &lt;span class="n"&gt;generation_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thinking_level&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;medium&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-3.8-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;...,&lt;/span&gt;
    &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerateContentConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;thinking_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ThinkingConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;thinking_level&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;low&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you have not used the Interactions API, the &lt;a href="http://apidog.com/blog/how-to-use-gemini-3-8-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash API guide&lt;/a&gt; covers both request shapes. The older &lt;a href="http://apidog.com/blog/how-to-use-gemini-3-7-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;3.7 Flash walkthrough&lt;/a&gt; covered only &lt;code&gt;generateContent&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The nine-item migration checklist
&lt;/h2&gt;

&lt;p&gt;Work through these in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Update &lt;code&gt;thinking_level&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Remove sampling parameters&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;thinking_budget&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Remove &lt;code&gt;candidate_count&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Include &lt;code&gt;call_id&lt;/code&gt; and &lt;code&gt;name&lt;/code&gt; in function results&lt;/li&gt;
&lt;li&gt;Preserve thought signatures&lt;/li&gt;
&lt;li&gt;Increase token budgets where needed&lt;/li&gt;
&lt;li&gt;Test media resolution by input type&lt;/li&gt;
&lt;li&gt;Remove unsupported image-segmentation paths&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  1. Map &lt;code&gt;thinking_level: "minimal"&lt;/code&gt; to &lt;code&gt;"low"&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Gemini 3.8 Flash accepts &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, and &lt;code&gt;high&lt;/code&gt;. Sending &lt;code&gt;minimal&lt;/code&gt; returns a validation error. If you omit the setting, the default is &lt;code&gt;medium&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Gemini 3 Pro defaults to &lt;code&gt;high&lt;/code&gt;, so do not copy a Pro configuration without checking the intended behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"generation_config"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"thinking_level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"minimal"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;After, Interactions API:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"generation_config"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"thinking_level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"low"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;After, legacy API:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"generationConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"thinkingConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"thinkingLevel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"low"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google’s &lt;a href="https://ai.google.dev/gemini-api/docs/thinking" rel="noopener noreferrer"&gt;thinking documentation&lt;/a&gt; describes &lt;code&gt;low&lt;/code&gt; as the latency-oriented setting and &lt;code&gt;medium&lt;/code&gt; as the default for complex code and agentic work. For migration purposes, &lt;code&gt;low&lt;/code&gt; is the direct replacement for &lt;code&gt;minimal&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Remove &lt;code&gt;temperature&lt;/code&gt;, &lt;code&gt;topP&lt;/code&gt;, and &lt;code&gt;topK&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Google recommends leaving temperature at its default of &lt;code&gt;1.0&lt;/code&gt; for every Gemini 3 model. Lower values may cause looping or degraded performance.&lt;/p&gt;

&lt;p&gt;Many 3.7 Flash configurations still contain values such as &lt;code&gt;temperature: 0.2&lt;/code&gt; from earlier model generations. Delete the sampling parameters instead of tuning them for 3.8 Flash.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"generationConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"temperature"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"topP"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"topK"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"generationConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"thinkingConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"thinkingLevel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"medium"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For repeatable JSON, use structured outputs rather than low temperature. Structured outputs are supported on 3.8 Flash and return schema-shaped data without changing sampling behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Replace &lt;code&gt;thinking_budget&lt;/code&gt; with &lt;code&gt;thinking_level&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;thinking_budget&lt;/code&gt; was an integer token cap. &lt;code&gt;thinking_level&lt;/code&gt; is a string enum, and there is no direct arithmetic mapping between them.&lt;/p&gt;

&lt;p&gt;Choose based on intent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;low&lt;/code&gt; for latency-sensitive routes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;medium&lt;/code&gt; for default routes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;high&lt;/code&gt; for the hardest multi-step tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"generationConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"thinkingConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"thinkingBudget"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4096&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"generationConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"thinkingConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"thinkingLevel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"low"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thinking tokens are still billed as output tokens and reported in &lt;code&gt;usageMetadata.thoughtsTokenCount&lt;/code&gt;. Cost control now comes from the thinking level plus assertions in your regression tests.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Remove &lt;code&gt;candidate_count&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Gemini 3 and later do not support multiple candidates. Remove the parameter and any code that accesses &lt;code&gt;candidates[1]&lt;/code&gt; or later entries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"generationConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"candidateCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"generationConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you previously sampled several candidates and selected the best one, try a higher thinking level instead. The model performs verification within a single response.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Include &lt;code&gt;call_id&lt;/code&gt; and &lt;code&gt;name&lt;/code&gt; in every function result
&lt;/h3&gt;

&lt;p&gt;This is the second breaking change. Every function result sent to Gemini 3.8 Flash must include both the function call ID and function name.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://ai.google.dev/gemini-api/docs/function-calling" rel="noopener noreferrer"&gt;Gemini 3 developer guide&lt;/a&gt; requires all &lt;code&gt;FunctionResponse&lt;/code&gt; objects to include these fields.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interactions API:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"previous_interaction_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;id from the function_call step&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"function_result"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"get_weather"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"call_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;id from the function_call step&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"result"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;temp_c&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: 24}"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model’s &lt;code&gt;function_call&lt;/code&gt; step provides &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, and &lt;code&gt;arguments&lt;/code&gt;. Copy the ID and name into the function result.&lt;/p&gt;

&lt;p&gt;In the legacy shape, the &lt;code&gt;functionResponse&lt;/code&gt; part uses a field named &lt;code&gt;id&lt;/code&gt;, matching the model’s &lt;code&gt;functionCall&lt;/code&gt; ID, alongside &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;response&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://apidog.com/blog/gemini-3-8-flash-function-calling?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash function-calling guide&lt;/a&gt; shows the complete two-turn loop and explains why 3.8 Flash may call tools more times per task.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Preserve thought signatures exactly
&lt;/h3&gt;

&lt;p&gt;Gemini 3 models attach thought signatures to response parts. When constructing the next turn, return every response part unchanged, including signatures and non-text parts.&lt;/p&gt;

&lt;p&gt;Do not strip or reserialize signatures. Doing so can degrade continuity on the next step.&lt;/p&gt;

&lt;p&gt;The Interactions API handles this automatically when you use server-side state:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"previous_interaction_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;interaction-id&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you set &lt;code&gt;store: false&lt;/code&gt;, you must manage the history yourself and return the thought blocks and signatures. With legacy &lt;code&gt;generateContent&lt;/code&gt;, your application always owns the history, so audit code that rebuilds &lt;code&gt;contents&lt;/code&gt; from a trimmed response.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Increase token budgets per route
&lt;/h3&gt;

&lt;p&gt;This change does not produce an error, so it is easy to miss. Artificial Analysis measured approximately 30% more output tokens on average at high thinking. Google also notes that the model can use more tokens on long-running and complex tasks, especially at higher effort levels.&lt;/p&gt;

&lt;p&gt;Budget by route:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Latency-sensitive:&lt;/strong&gt; Use &lt;code&gt;low&lt;/code&gt;. Artificial Analysis measured about 0.8 minutes and $0.24 per task at low versus 2.5 minutes and $0.58 at high.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Default routes:&lt;/strong&gt; Use &lt;code&gt;medium&lt;/code&gt;, measured at approximately $0.41 per task on the same index.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent loops:&lt;/strong&gt; Expect more tool-call turns. Cap loops by turn count, not only by token count.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recheck the 65,536-token output ceiling. A 3.7 Flash prompt that returned 40,000 tokens with thinking may approach the limit on 3.8 Flash. The &lt;a href="http://apidog.com/blog/gemini-3-8-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;3.8 Flash pricing breakdown&lt;/a&gt; includes per-task estimates for all three thinking levels.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Test &lt;code&gt;media_resolution_high&lt;/code&gt; separately for PDFs and video
&lt;/h3&gt;

&lt;p&gt;Gemini 3.8 Flash accepts text, image, video, audio, and PDF input. Media resolution changes token consumption, and the cost differs by media type.&lt;/p&gt;

&lt;p&gt;Do not carry a global high-resolution setting from 3.7 Flash without measuring it. Test one representative PDF and one representative video at each resolution, then compare:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;usageMetadata.promptTokenCount
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A setting that is affordable for a PDF page may be expensive for a long video.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Remove image-segmentation calls
&lt;/h3&gt;

&lt;p&gt;Image segmentation is not supported on Gemini 3 models. If an older pipeline routed segmentation through another Gemini model, that path is separate from this migration.&lt;/p&gt;

&lt;p&gt;Prompts asking Gemini 3.8 Flash for segmentation masks should be expected to fail rather than return usable masks. The &lt;a href="https://ai.google.dev/gemini-api/docs/models/gemini-3.8-flash" rel="noopener noreferrer"&gt;model page&lt;/a&gt; also lists image generation, audio generation, and the Live API as unsupported.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build a regression plan in Apidog
&lt;/h2&gt;

&lt;p&gt;A migration with two breaking changes and a token-usage shift needs repeatable comparisons rather than a one-off &lt;code&gt;curl&lt;/code&gt; request. &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; works well here as an API client and test runner: it sends requests, validates responses, and schedules tests. It does not run the model itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure the environment
&lt;/h3&gt;

&lt;p&gt;Create a Gemini environment with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GEMINI_API_KEY&lt;/code&gt; stored as a secret variable&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MODEL&lt;/code&gt; as an environment variable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use &lt;code&gt;{{MODEL}}&lt;/code&gt; in the &lt;code&gt;generateContent&lt;/code&gt; URL and in the Interactions API &lt;code&gt;model&lt;/code&gt; field. The same saved requests can then run against either model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create golden prompts
&lt;/h3&gt;

&lt;p&gt;Save 10–20 prompts representing your production routes, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A short chat turn&lt;/li&gt;
&lt;li&gt;A structured-output extraction&lt;/li&gt;
&lt;li&gt;A two-turn function call with a mocked tool&lt;/li&gt;
&lt;li&gt;A representative PDF input&lt;/li&gt;
&lt;li&gt;A representative video input&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Make each prompt a request in a test scenario.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add assertions
&lt;/h3&gt;

&lt;p&gt;Add at least three assertions per request:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The status is &lt;code&gt;200&lt;/code&gt;, and the response matches a JSON schema. For structured-output routes, validate the fields consumed downstream.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;usageMetadata.thoughtsTokenCount&lt;/code&gt; remains below a route-specific ceiling, such as 8,000 for a low-thinking route.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;usageMetadata.totalTokenCount&lt;/code&gt; remains below the route budget.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For function calls, also assert that the &lt;code&gt;call_id&lt;/code&gt; sent in the function result equals the ID from the previous step’s &lt;code&gt;function_call&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Compare both models
&lt;/h3&gt;

&lt;p&gt;Duplicate the scenario:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;MODEL&lt;/code&gt; to &lt;code&gt;gemini-3.7-flash&lt;/code&gt; in one copy.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;MODEL&lt;/code&gt; to &lt;code&gt;gemini-3.8-flash&lt;/code&gt; in the other.&lt;/li&gt;
&lt;li&gt;Run both scenarios.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apidog’s test reports show assertion results and response bodies side by side, making token deltas visible per prompt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Schedule the test
&lt;/h3&gt;

&lt;p&gt;Turn the 3.8 Flash scenario into a scheduled run so token ceilings are checked daily during rollout. Follow the &lt;a href="http://apidog.com/blog/how-to-schedule-api-tests-apidog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;scheduled API tests guide&lt;/a&gt; for setup instructions.&lt;/p&gt;

&lt;p&gt;You can also &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;download Apidog&lt;/a&gt; and import the request fragments above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roll back with a configuration flag
&lt;/h2&gt;

&lt;p&gt;Because Gemini 3.7 Flash remains fully supported and has the same price, rollback is inexpensive. Keep model IDs in configuration rather than hard-coding them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"gemini_model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gemini-3.8-flash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"gemini_fallback_model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gemini-3.7-flash"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow three rules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Keep one request shape for both models.&lt;/strong&gt; The migrated shape—no &lt;code&gt;minimal&lt;/code&gt;, no sampling parameters, &lt;code&gt;thinking_level&lt;/code&gt; instead of &lt;code&gt;thinking_budget&lt;/code&gt;, no &lt;code&gt;candidate_count&lt;/code&gt;, complete function results, and preserved signatures—is valid on 3.7 Flash too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Roll out by route.&lt;/strong&gt; Start with low-thinking latency routes, where the token delta is smallest. Move agent loops last, after side-by-side tests pass for several days.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor tokens as well as errors.&lt;/strong&gt; A 3.8 Flash regression is more likely to appear as a cost or latency increase than as a 4xx response. Feed token-ceiling assertions into alerting.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does Gemini 3.8 Flash cost more than 3.7 Flash?
&lt;/h3&gt;

&lt;p&gt;Not per token. Both cost $0.75 per 1M input tokens and $3.75 per 1M output tokens through December 31, 2026. Both increase to $1.50 and $7.50 on January 1, 2027.&lt;/p&gt;

&lt;p&gt;Per task, 3.8 Flash uses more tokens by design. Artificial Analysis measured approximately 30% more output tokens at high thinking.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens if I leave &lt;code&gt;thinking_level: "minimal"&lt;/code&gt; in place?
&lt;/h3&gt;

&lt;p&gt;The request fails with a validation error on 3.8 Flash. Replace it with &lt;code&gt;low&lt;/code&gt;. The &lt;a href="https://ai.google.dev/gemini-api/docs/thinking" rel="noopener noreferrer"&gt;thinking-level documentation&lt;/a&gt; explains the remaining levels and how to measure them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I have to use the Interactions API?
&lt;/h3&gt;

&lt;p&gt;No. &lt;code&gt;generateContent&lt;/code&gt; is described as legacy but remains fully supported, with no published sunset date.&lt;/p&gt;

&lt;p&gt;The Interactions API provides server-side conversation state through &lt;code&gt;previous_interaction_id&lt;/code&gt;, which removes much of the thought-signature bookkeeping described in item 6.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Gemini 3.7 Flash deprecated?
&lt;/h3&gt;

&lt;p&gt;No. Google says it “remains fully supported” and has not published a deprecation date. That makes a configuration-flag rollback practical.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I keep the temperature tuned for 3.7 Flash?
&lt;/h3&gt;

&lt;p&gt;Google recommends leaving temperature at &lt;code&gt;1.0&lt;/code&gt; for all Gemini 3 models. If you override it on 3.7 Flash, use this migration to remove the override and rerun your evaluations. Use structured outputs when you need deterministic response shapes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ship in stages
&lt;/h2&gt;

&lt;p&gt;The code migration is small:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One model ID change&lt;/li&gt;
&lt;li&gt;Four configuration deletions or renames&lt;/li&gt;
&lt;li&gt;Two function-result fields&lt;/li&gt;
&lt;li&gt;A thought-signature audit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The time-consuming part is proving that token budgets and latency still hold for every route. Save golden prompts, assert response schemas and token ceilings, compare 3.7 and 3.8 Flash side by side until the numbers stabilize, and switch one route at a time.&lt;/p&gt;

&lt;p&gt;If a route regresses, the configuration flag can send it back to 3.7 Flash without another code change.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ai.google.dev/gemini-api/docs/latest-model" rel="noopener noreferrer"&gt;What’s new in Gemini 3.8 Flash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/what-is-gemini-3-8-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;What Gemini 3.8 Flash is&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ai.google.dev/gemini-api/docs/pricing" rel="noopener noreferrer"&gt;Gemini API pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/" rel="noopener noreferrer"&gt;Gemini 3.8 Flash launch post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/gemini-3-8-flash-vs-gemini-3-7-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash vs. Gemini 3.7 Flash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/how-to-use-gemini-3-8-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;How to use the Gemini 3.8 Flash API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/how-to-use-gemini-3-7-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;How to use the Gemini 3.7 Flash API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ai.google.dev/gemini-api/docs/thinking" rel="noopener noreferrer"&gt;Thinking documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/gemini-3-8-flash-thinking-levels?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Which thinking level to use per route&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ai.google.dev/gemini-api/docs/function-calling" rel="noopener noreferrer"&gt;Function-calling reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/gemini-3-8-flash-function-calling?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash function calling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://artificialanalysis.ai/articles/gemini-3-8-flash" rel="noopener noreferrer"&gt;Artificial Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/gemini-3-8-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash pricing breakdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ai.google.dev/gemini-api/docs/models/gemini-3.8-flash" rel="noopener noreferrer"&gt;Gemini 3.8 Flash model page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/how-to-schedule-api-tests-apidog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;How to schedule API tests in Apidog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Gemini 3.8 Flash pricing: intro rates, thinking tokens, and the real cost per task</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Thu, 03 Sep 2026 08:21:08 +0000</pubDate>
      <link>https://dev.to/hassann/gemini-38-flash-pricing-intro-rates-thinking-tokens-and-the-real-cost-per-task-31lf</link>
      <guid>https://dev.to/hassann/gemini-38-flash-pricing-intro-rates-thinking-tokens-and-the-real-cost-per-task-31lf</guid>
      <description>&lt;p&gt;Gemini 3.8 Flash costs $0.75 per million input tokens and $3.75 per million output tokens—the same introductory rate Google set for 3.7 Flash. This rate runs through December 31, 2026. On January 1, 2027, it doubles to $1.50 and $7.50. The same increase applies to 3.6 Flash and 3.7 Flash. The per-token price did not change with this release.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;What changed is how many tokens the model uses. Google says 3.8 Flash “works harder”: it takes more reasoning steps, calls tools iteratively, and “can use more tokens on longer running and complex tasks, by design.” Artificial Analysis measured the impact independently: its Intelligence Index cost $0.58 per task on 3.8 Flash at high thinking versus $0.40 on 3.7 Flash, with approximately 30% more output tokens per task.&lt;/p&gt;

&lt;p&gt;Same sticker price, higher bill.&lt;/p&gt;

&lt;p&gt;This guide covers the &lt;a href="https://ai.google.dev/gemini-api/docs/pricing" rel="noopener noreferrer"&gt;official Gemini API pricing page&lt;/a&gt;, explains the impact of each thinking level, and compares Gemini 3.8 Flash with Flash-Lite, Claude Sonnet 5, and GPT-5.6 Luna. For a model overview, start with &lt;a href="http://apidog.com/blog/what-is-gemini-3-8-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;what Gemini 3.8 Flash is&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini 3.8 Flash pricing at a glance
&lt;/h2&gt;

&lt;p&gt;All prices are per 1 million tokens on the paid tier.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Rate&lt;/th&gt;
&lt;th&gt;Intro (through Dec 31, 2026)&lt;/th&gt;
&lt;th&gt;Standard (from Jan 1, 2027)&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Input (text, image, video, audio, PDF)&lt;/td&gt;
&lt;td&gt;$0.75&lt;/td&gt;
&lt;td&gt;$1.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output (includes thinking tokens)&lt;/td&gt;
&lt;td&gt;$3.75&lt;/td&gt;
&lt;td&gt;$7.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context cache read&lt;/td&gt;
&lt;td&gt;$0.075&lt;/td&gt;
&lt;td&gt;$0.15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache storage (per 1M tokens per hour)&lt;/td&gt;
&lt;td&gt;$0.50&lt;/td&gt;
&lt;td&gt;$1.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch API input (50% off)&lt;/td&gt;
&lt;td&gt;$0.375&lt;/td&gt;
&lt;td&gt;$0.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch API output (50% off)&lt;/td&gt;
&lt;td&gt;$1.875&lt;/td&gt;
&lt;td&gt;$3.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google Search grounding&lt;/td&gt;
&lt;td&gt;5,000 free requests/month shared across Gemini 3.x, then $14 per 1,000&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free tier&lt;/td&gt;
&lt;td&gt;$0, rate-limited, data used to improve Google products&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three details matter:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Thinking tokens are billed as output at $3.75 per million, not as input.&lt;/li&gt;
&lt;li&gt;The introductory rate ends on December 31, 2026.&lt;/li&gt;
&lt;li&gt;3.7 Flash and 3.6 Flash have the same January 1 price increase, so switching to an older Flash model does not avoid it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;a href="http://apidog.com/blog/gemini-3-7-flash-pricing-explained?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;3.7 Flash pricing breakdown&lt;/a&gt; covers the same rates for a model that uses fewer tokens per task.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thinking tokens count as output tokens
&lt;/h2&gt;

&lt;p&gt;Gemini 3.8 Flash reasons before answering, and every reasoning token is metered as output. A &lt;code&gt;generateContent&lt;/code&gt; response reports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;usageMetadata.thoughtsTokenCount&lt;/code&gt;: internal reasoning tokens&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;usageMetadata.candidatesTokenCount&lt;/code&gt;: visible answer tokens&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;usageMetadata.promptTokenCount&lt;/code&gt;: input tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both output counters use the same $3.75-per-million rate.&lt;/p&gt;

&lt;p&gt;You control reasoning effort with &lt;code&gt;thinking_level&lt;/code&gt;: &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, or &lt;code&gt;high&lt;/code&gt;. On 3.8 Flash, the default is &lt;code&gt;medium&lt;/code&gt;; Gemini 3 Pro defaults to &lt;code&gt;high&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;minimal&lt;/code&gt; is no longer supported and returns a validation error. Configurations migrated from earlier models should map &lt;code&gt;minimal&lt;/code&gt; to &lt;code&gt;low&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Google’s &lt;a href="https://ai.google.dev/gemini-api/docs/thinking" rel="noopener noreferrer"&gt;thinking documentation&lt;/a&gt; describes these settings as relative effort levels rather than fixed token budgets. Unlike the older integer &lt;code&gt;thinking_budget&lt;/code&gt;, you cannot directly cap the number of thinking tokens. See the &lt;a href="http://apidog.com/blog/gemini-3-8-flash-thinking-levels?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;3.8 Flash thinking levels guide&lt;/a&gt; for the latency and cost trade-offs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example request cost
&lt;/h3&gt;

&lt;p&gt;Suppose a request uses 10,000 input tokens and returns 2,000 visible output tokens plus 6,000 thinking tokens.&lt;/p&gt;

&lt;p&gt;At the introductory rate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input: &lt;code&gt;10,000 × $0.75 / 1,000,000 = $0.0075&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Output: &lt;code&gt;(2,000 + 6,000) × $3.75 / 1,000,000 = $0.03&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Total: &lt;code&gt;$0.0375&lt;/code&gt; per request&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thinking accounts for 75% of the output charge and 60% of the total request cost.&lt;/p&gt;

&lt;p&gt;From January 1, the same request costs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input: &lt;code&gt;$0.015&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Output: &lt;code&gt;$0.06&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Total: &lt;code&gt;$0.075&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;“Same price as 3.7” is true but incomplete: the rate stayed the same while token usage increased.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why cost per task increased
&lt;/h2&gt;

&lt;p&gt;Google’s &lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/" rel="noopener noreferrer"&gt;launch post&lt;/a&gt; describes the trade-off directly. On complex tasks, 3.8 Flash “executes extra reasoning steps, and calls tools iteratively,” verifying its work along the way.&lt;/p&gt;

&lt;p&gt;More reasoning steps create more thinking tokens. Agent loops can also create additional tool-call turns.&lt;/p&gt;

&lt;p&gt;Google’s recommended mitigations are to lower &lt;code&gt;thinking_level&lt;/code&gt; or remain on 3.7 Flash.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://artificialanalysis.ai/articles/gemini-3-8-flash" rel="noopener noreferrer"&gt;Artificial Analysis&lt;/a&gt; measured the difference using nine evaluations in its Intelligence Index. Gemini 3.8 Flash at high scored 59 versus 56 for 3.7 Flash at high, while using approximately 48,000 output tokens per task—30% more than 3.7 Flash.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;th&gt;Cost per task (AA, intro rates)&lt;/th&gt;
&lt;th&gt;Time per task&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.8 Flash, high&lt;/td&gt;
&lt;td&gt;$0.58&lt;/td&gt;
&lt;td&gt;2.5 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.8 Flash, medium&lt;/td&gt;
&lt;td&gt;$0.41&lt;/td&gt;
&lt;td&gt;not published&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.8 Flash, low&lt;/td&gt;
&lt;td&gt;$0.24&lt;/td&gt;
&lt;td&gt;0.8 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.7 Flash, high&lt;/td&gt;
&lt;td&gt;$0.40&lt;/td&gt;
&lt;td&gt;2.2 min&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The results support two conclusions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3.8 Flash at high costs 45% more per task than 3.7 Flash at high: &lt;code&gt;$0.58 / $0.40 = 1.45&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;On 3.8 Flash, medium reduces cost by 29% compared with high: &lt;code&gt;$0.41 / $0.58 = 0.71&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Low reduces cost by 59% compared with high: &lt;code&gt;$0.24 / $0.58 = 0.41&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Medium on 3.8 Flash costs within one cent of high on 3.7 Flash, which is a useful benchmark when deciding whether to upgrade. The &lt;a href="http://apidog.com/blog/gemini-3-8-flash-vs-gemini-3-7-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;3.8 Flash vs. 3.7 Flash comparison&lt;/a&gt; compares the models by workload.&lt;/p&gt;

&lt;p&gt;Artificial Analysis also reports a blended price of $0.58 per million tokens at a 3:1 input-to-output ratio. Its matching the high-level cost per task is coincidental: the blended price is a per-token calculation, while task cost depends on how many tokens the model chooses to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use the introductory rate before December 31
&lt;/h2&gt;

&lt;p&gt;“Lock in” does not mean signing a contract. Google bills tokens at the rate in effect when they are consumed, so you cannot prepay 2027 usage at 2026 prices. Switching to 3.7 or 3.6 Flash also does not avoid the increase.&lt;/p&gt;

&lt;p&gt;You can, however, move discretionary work into the introductory-rate window:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Run backfills and one-off document processing through the Batch API.&lt;/strong&gt; A 100-million-token backfill with 75 million input tokens and 25 million output tokens costs:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;75 × $0.375 + 25 × $1.875 = $28.13 + $46.88 = $74.99&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;in batch during 2026. The same workload costs twice as much—$149.98—in January.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Build your evaluation set now.&lt;/strong&gt; Establish baseline token counts before the price change, so you can distinguish increased usage from increased rates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose a thinking level per route.&lt;/strong&gt; Every production route left on &lt;code&gt;medium&lt;/code&gt; by default is a route whose cost has not been evaluated. Routes that pass your tests at &lt;code&gt;low&lt;/code&gt; should use &lt;code&gt;low&lt;/code&gt; before January.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If price is the deciding factor, see the &lt;a href="http://apidog.com/blog/cheapest-llm-api-providers?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;cheapest LLM API providers roundup&lt;/a&gt;. The &lt;a href="http://apidog.com/blog/gemini-3-8-flash-vs-claude-fable-5-1-vs-gpt-5-6-sol?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Fable 5.1 and GPT-5.6 Sol comparison&lt;/a&gt; covers the premium tiers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini 3.8 Flash vs. Flash-Lite, Sonnet 5, and GPT-5.6 Luna
&lt;/h2&gt;

&lt;p&gt;Per-token rates, per 1 million tokens:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.8 Flash (intro)&lt;/td&gt;
&lt;td&gt;$0.75&lt;/td&gt;
&lt;td&gt;$3.75&lt;/td&gt;
&lt;td&gt;Thinking billed as output; cache read $0.075&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.8 Flash (from Jan 1)&lt;/td&gt;
&lt;td&gt;$1.50&lt;/td&gt;
&lt;td&gt;$7.50&lt;/td&gt;
&lt;td&gt;Cache read $0.15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.5 Flash-Lite&lt;/td&gt;
&lt;td&gt;$0.30&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;About 350 tok/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Sonnet 5&lt;/td&gt;
&lt;td&gt;$2&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;Permanent; the Sep 1 rise was cancelled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.6 Luna&lt;/td&gt;
&lt;td&gt;$1&lt;/td&gt;
&lt;td&gt;$6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At introductory rates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3.8 Flash input costs 2.5 times Flash-Lite’s input rate.&lt;/li&gt;
&lt;li&gt;3.8 Flash output costs 1.5 times Flash-Lite’s output rate.&lt;/li&gt;
&lt;li&gt;3.8 Flash is approximately 2.7 times cheaper than Sonnet 5 for both input (&lt;code&gt;$2 / $0.75&lt;/code&gt;) and output (&lt;code&gt;$10 / $3.75&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;3.8 Flash is cheaper than Luna for input (&lt;code&gt;$0.75 vs. $1&lt;/code&gt;) and output (&lt;code&gt;$3.75 vs. $6&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On January 1, the comparison changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3.8 Flash becomes more expensive than Luna for both input and output.&lt;/li&gt;
&lt;li&gt;The gap with Sonnet 5 narrows to approximately 1.3 times (&lt;code&gt;$2 / $1.50&lt;/code&gt; and &lt;code&gt;$10 / $7.50&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Flash-Lite remains cheaper throughout.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the introductory rate is why you selected 3.8 Flash, schedule a January re-evaluation now.&lt;/p&gt;

&lt;p&gt;Per-token pricing is only half the calculation. A model with a higher rate can still cost less per task if it uses fewer tokens. Run the same task set through each candidate and compare the returned usage counts. The &lt;a href="http://apidog.com/blog/how-to-use-gemini-3-8-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;3.8 Flash API guide&lt;/a&gt; shows how to read &lt;code&gt;usageMetadata&lt;/code&gt; from both the Interactions API and legacy &lt;code&gt;generateContent&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Catch cost regressions with Apidog token assertions
&lt;/h2&gt;

&lt;p&gt;The main failure mode is not necessarily an incorrect answer. It is a correct answer that quietly uses 40% more tokens after a prompt or thinking-level change—until the invoice exposes the regression.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; lets you treat token usage as an assertion target, just like an HTTP status code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft6krjwynapm4g69cnkwj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft6krjwynapm4g69cnkwj.png" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Store the API key securely
&lt;/h3&gt;

&lt;p&gt;Create &lt;code&gt;GEMINI_API_KEY&lt;/code&gt; in an Apidog environment and reference it as &lt;code&gt;{{GEMINI_API_KEY}}&lt;/code&gt; in the &lt;code&gt;x-goog-api-key&lt;/code&gt; header. The key never needs to be stored in the saved request.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Send a representative prompt
&lt;/h3&gt;

&lt;p&gt;Save a &lt;code&gt;POST&lt;/code&gt; request to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use a representative production prompt and set an explicit &lt;code&gt;thinkingConfig.thinkingLevel&lt;/code&gt; for each route.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Assert on usage fields
&lt;/h3&gt;

&lt;p&gt;Add a post-processor script that reads &lt;code&gt;usageMetadata&lt;/code&gt; and fails when usage exceeds your baseline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;usage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;usageMetadata&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;thinking tokens within budget&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;thoughtsTokenCount&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;below&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;visible output within budget&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;candidatesTokenCount&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;below&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2500&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;request cost within budget&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;promptTokenCount&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.75&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;e6&lt;/span&gt;
    &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;thoughtsTokenCount&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;candidatesTokenCount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;3.75&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;e6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;below&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Schedule the test
&lt;/h3&gt;

&lt;p&gt;Put the requests in a test scenario and run it on a schedule. A token-usage increase then appears as a failed run the same day. The guide to &lt;a href="http://apidog.com/blog/how-to-schedule-api-tests-apidog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;scheduling API tests in Apidog&lt;/a&gt; covers the setup.&lt;/p&gt;

&lt;p&gt;Update the two rate constants on January 1; the cost assertion will continue tracking the actual bill.&lt;/p&gt;

&lt;p&gt;The same scenario can power a provider bake-off. Point copies at Flash-Lite, Sonnet 5, or Luna and compare usage fields side by side. &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt; to build the first scenario; the free plan supports this workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does Gemini 3.8 Flash cost more than 3.7 Flash?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Per token, no. Both cost $0.75 per million input tokens and $3.75 per million output tokens through December 31, followed by $1.50 and $7.50 from January 1. Per task, yes: Artificial Analysis measured $0.58 per Intelligence Index task on 3.8 Flash at high versus $0.40 on 3.7 Flash because 3.8 Flash generates approximately 30% more output tokens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are thinking tokens billed separately?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. They are billed as output tokens at $3.75 per million during the introductory period and appear in &lt;code&gt;usageMetadata.thoughtsTokenCount&lt;/code&gt;. You control them indirectly through &lt;code&gt;thinking_level&lt;/code&gt;; 3.8 Flash has no hard token budget, and &lt;code&gt;minimal&lt;/code&gt; returns an error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a free tier for Gemini 3.8 Flash?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. The AI Studio free tier charges nothing for input or output, subject to rate limits shown in AI Studio. Google uses free-tier data to improve its products.&lt;/p&gt;

&lt;p&gt;The consumer Gemini app provides 3.8 Flash only to AI Pro and Ultra subscribers. See the &lt;a href="http://apidog.com/blog/how-to-use-gemini-3-8-flash-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;free-usage guide&lt;/a&gt; for details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens to costs on January 1, 2027?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Input, output, cache-read, cache-storage, and batch rates all double. If token usage per task remains constant, your bill doubles as well. The 3.6 and 3.7 Flash rates increase on the same date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which thinking level keeps costs down?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start with Artificial Analysis’s measurements: $0.24 per task at low, $0.41 at medium, and $0.58 at high. Run your own evaluations at each level, keep the lowest setting that passes, and assert on token counts so the configuration cannot drift.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do this week
&lt;/h2&gt;

&lt;p&gt;Gemini 3.8 Flash is priced like 3.7 Flash but uses tokens like a larger model.&lt;/p&gt;

&lt;p&gt;This week:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set &lt;code&gt;thinking_level&lt;/code&gt; per production route instead of accepting the default.&lt;/li&gt;
&lt;li&gt;Move batch-friendly work into the introductory-rate window before December 31.&lt;/li&gt;
&lt;li&gt;Establish token baselines now.&lt;/li&gt;
&lt;li&gt;Add assertions for thinking tokens, visible output tokens, and estimated request cost.&lt;/li&gt;
&lt;li&gt;Schedule a provider and pricing re-evaluation for January 1, 2027.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That turns the January price increase into a planned variable instead of an invoice surprise.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Gemini 3.8 Flash vs Claude Fable 5.1 vs GPT-5.6 Sol: which API should developers use?</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Thu, 03 Sep 2026 08:06:06 +0000</pubDate>
      <link>https://dev.to/hassann/gemini-38-flash-vs-claude-fable-51-vs-gpt-56-sol-which-api-should-developers-use-48b5</link>
      <guid>https://dev.to/hassann/gemini-38-flash-vs-claude-fable-51-vs-gpt-56-sol-which-api-should-developers-use-48b5</guid>
      <description>&lt;h1&gt;
  
  
  Gemini 3.8 Flash vs Claude Fable 5.1 vs GPT-5.6 Sol: Which API Should You Use?
&lt;/h1&gt;

&lt;p&gt;Three frontier APIs shipped or changed pricing within a week of one another, landing in three distinct price bands. Google released Gemini 3.8 Flash on September 2, 2026, at $0.75 per million input tokens and $3.75 per million output tokens. Anthropic released Claude Fable 5.1 the day before at $10 and $50. OpenAI’s GPT-5.6 Sol sits between them at $5 and $30. On Artificial Analysis’ independent Intelligence Index, they score 59, 57, and 59 respectively. A model priced at roughly one-thirteenth of the top tier matches it on the only index that evaluates all three the same way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The catch is the word “index.” Benchmarks count answers per task; your bill counts tokens per task. Gemini 3.8 Flash is designed to spend more of them.&lt;/p&gt;

&lt;p&gt;This guide compares the three models by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Published specifications&lt;/li&gt;
&lt;li&gt;Google’s cross-vendor benchmark tables&lt;/li&gt;
&lt;li&gt;Artificial Analysis’ independent results&lt;/li&gt;
&lt;li&gt;Input, output, and cache pricing&lt;/li&gt;
&lt;li&gt;Cost per completed task&lt;/li&gt;
&lt;li&gt;Best-fit workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google’s launch post is the primary source for the Gemini claims below. For context, our August comparison used Claude Fable 5, not 5.1. Anthropic replaced that model on September 1, making this a new comparison rather than a refresh.&lt;/p&gt;

&lt;h2&gt;
  
  
  Specs at a glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Specification&lt;/th&gt;
&lt;th&gt;Gemini 3.8 Flash&lt;/th&gt;
&lt;th&gt;Claude Fable 5.1&lt;/th&gt;
&lt;th&gt;GPT-5.6 Sol&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Vendor&lt;/td&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context window&lt;/td&gt;
&lt;td&gt;1,048,576 tokens&lt;/td&gt;
&lt;td&gt;1M tokens&lt;/td&gt;
&lt;td&gt;1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maximum output&lt;/td&gt;
&lt;td&gt;65,536 tokens&lt;/td&gt;
&lt;td&gt;128K tokens&lt;/td&gt;
&lt;td&gt;128K tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input price per 1M tokens&lt;/td&gt;
&lt;td&gt;$0.75 introductory; $1.50 from Jan. 1, 2027&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;$5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output price per 1M tokens&lt;/td&gt;
&lt;td&gt;$3.75 introductory; $7.50 from Jan. 1, 2027&lt;/td&gt;
&lt;td&gt;$50&lt;/td&gt;
&lt;td&gt;$30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache read per 1M tokens&lt;/td&gt;
&lt;td&gt;$0.075 introductory; $0.15 from Jan. 1&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;td&gt;$0.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Knowledge cutoff&lt;/td&gt;
&lt;td&gt;March 2026&lt;/td&gt;
&lt;td&gt;June 2026&lt;/td&gt;
&lt;td&gt;Not listed here&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reasoning control&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;thinking_level&lt;/code&gt;: low, medium, high; medium default&lt;/td&gt;
&lt;td&gt;Extended thinking, always on&lt;/td&gt;
&lt;td&gt;Effort levels up to &lt;code&gt;xhigh&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Artificial Analysis Index&lt;/td&gt;
&lt;td&gt;59 at high&lt;/td&gt;
&lt;td&gt;57 at medium&lt;/td&gt;
&lt;td&gt;59 at &lt;code&gt;xhigh&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two specifications matter immediately:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Gemini 3.8 Flash has half the maximum output of the other two: 65,536 versus 128K tokens. That matters for single-shot long documents more than for agent loops that emit short steps.&lt;/li&gt;
&lt;li&gt;Gemini’s introductory pricing ends on December 31, 2026. Both rates double on January 1, 2027, changing every price ratio in this article.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;a href="http://apidog.com/blog/gemini-3-8-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash pricing guide&lt;/a&gt; covers the doubling, caching, batch, and grounding rates in detail.&lt;/p&gt;

&lt;h2&gt;
  
  
  The independent result: 59, 57, and 59
&lt;/h2&gt;

&lt;p&gt;Artificial Analysis runs the same nine evaluations against each model and publishes one Intelligence Index score:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemini 3.8 Flash at high thinking: &lt;strong&gt;59&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;GPT-5.6 Sol at &lt;code&gt;xhigh&lt;/code&gt; effort: &lt;strong&gt;59&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Claude Fable 5.1 at medium effort: &lt;strong&gt;57&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemini 3.8 Flash improved from 56 for 3.7 Flash and 52 for 3.6 Flash. Fable 5.1’s score of 57 also matches GPT-5.6 Terra at max effort and Muse Spark 1.2 at &lt;code&gt;xhigh&lt;/code&gt;. Grok 4.6 at medium is another model at 59.&lt;/p&gt;

&lt;p&gt;Read the reasoning settings before interpreting those numbers. Fable 5.1 was tested at medium, while Sol was tested at its top listed setting, &lt;code&gt;xhigh&lt;/code&gt;. A two-point difference across different effort levels is not a definitive ranking.&lt;/p&gt;

&lt;p&gt;The defensible conclusion is narrower: &lt;strong&gt;at the tested settings, Gemini 3.8 Flash matches the two premium models on this index and is the cheapest model with a score of 59 by a wide margin.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What that score costs
&lt;/h3&gt;

&lt;p&gt;Artificial Analysis also measured token usage and latency for Gemini 3.8 Flash at high thinking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Average output per task: &lt;strong&gt;48,000 tokens&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Output usage: &lt;strong&gt;30% more than Gemini 3.7 Flash&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;API spend: &lt;strong&gt;$0.58 per task&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Time per task: &lt;strong&gt;2.5 minutes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Output speed: &lt;strong&gt;about 300 tokens per second&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Time to first [REDACTED CREDENTIAL] seconds**&lt;/li&gt;
&lt;li&gt;τ³-Banking tool-use score: &lt;strong&gt;45%&lt;/strong&gt;, 12 points above Gemini 3.7 Flash&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model thinks before it writes, which explains the relatively high time to first token. Keep these measurements in mind when the per-token price appears too attractive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google’s benchmark tables—and the missing model
&lt;/h2&gt;

&lt;p&gt;Google’s Flash page publishes three cross-vendor benchmark rows in text form, but Claude Fable 5.1 is not included. The Anthropic entries are Claude Opus 5 and Claude Sonnet 5 instead. Fable 5.1 had been public for only one day when Google’s tables were published.&lt;/p&gt;

&lt;p&gt;The Anthropic results below are therefore proxies, not direct results for Fable 5.1:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Google-run benchmark&lt;/th&gt;
&lt;th&gt;Gemini 3.8 Flash&lt;/th&gt;
&lt;th&gt;Claude Opus 5&lt;/th&gt;
&lt;th&gt;Claude Sonnet 5&lt;/th&gt;
&lt;th&gt;GPT-5.6 Sol&lt;/th&gt;
&lt;th&gt;GPT-5.6 Terra&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HLE-Verified&lt;/td&gt;
&lt;td&gt;54.9%&lt;/td&gt;
&lt;td&gt;54.4%&lt;/td&gt;
&lt;td&gt;31.0%&lt;/td&gt;
&lt;td&gt;54.5%&lt;/td&gt;
&lt;td&gt;51.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vals Finance Agent v2&lt;/td&gt;
&lt;td&gt;61.4%&lt;/td&gt;
&lt;td&gt;58.6%&lt;/td&gt;
&lt;td&gt;53.9%&lt;/td&gt;
&lt;td&gt;53.8%&lt;/td&gt;
&lt;td&gt;54.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Harvey Legal Agent Benchmark&lt;/td&gt;
&lt;td&gt;10.0%&lt;/td&gt;
&lt;td&gt;6.7%&lt;/td&gt;
&lt;td&gt;5.0%&lt;/td&gt;
&lt;td&gt;2.5%&lt;/td&gt;
&lt;td&gt;0.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;HLE-Verified is effectively a three-way tie: Gemini 3.8 Flash, Opus 5, and Sol are within half a point of one another.&lt;/p&gt;

&lt;p&gt;Vals Finance Agent v2 is where Gemini 3.8 Flash separates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2.8 points above Opus 5&lt;/li&gt;
&lt;li&gt;7.6 points above Sol&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Harvey Legal is the outlier. Every model scores below 11%, so the ordering is more meaningful than the gaps.&lt;/p&gt;

&lt;p&gt;Google did not publish text results for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SWE-Bench Pro&lt;/li&gt;
&lt;li&gt;Terminal-bench&lt;/li&gt;
&lt;li&gt;OSWorld&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The DeepSWE v1.1 result appears only as an image-table claim that Gemini 3.8 Flash “outperforms most larger frontier models” at “a fraction of the cost.”&lt;/p&gt;

&lt;p&gt;For coding and computer-use comparisons, you must rely on separate vendor-run evaluations, which do not overlap. Anthropic’s results are in the &lt;a href="http://apidog.com/blog/claude-fable-5-1-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Fable 5.1 benchmarks breakdown&lt;/a&gt;, and OpenAI’s are in the &lt;a href="http://apidog.com/blog/gpt-5-6-sol-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.6 Sol benchmarks&lt;/a&gt;. Artificial Analysis remains the only like-for-like source in this comparison.&lt;/p&gt;

&lt;h2&gt;
  
  
  The price gap, line by line
&lt;/h2&gt;

&lt;p&gt;At introductory rates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fable 5.1 input is &lt;strong&gt;13.3×&lt;/strong&gt; Gemini 3.8 Flash input&lt;/li&gt;
&lt;li&gt;Fable 5.1 output is &lt;strong&gt;13.3×&lt;/strong&gt; Gemini 3.8 Flash output&lt;/li&gt;
&lt;li&gt;Sol input is &lt;strong&gt;6.7×&lt;/strong&gt; Gemini input&lt;/li&gt;
&lt;li&gt;Sol output is &lt;strong&gt;8×&lt;/strong&gt; Gemini output&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cache reads narrow the difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemini 3.8 Flash: &lt;strong&gt;$0.075 per 1M tokens&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fable 5.1: &lt;strong&gt;$0.25 per 1M tokens&lt;/strong&gt;, or 3.3× Gemini&lt;/li&gt;
&lt;li&gt;Sol: &lt;strong&gt;$0.50 per 1M tokens&lt;/strong&gt;, or 6.7× Gemini&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fable 5.1’s cache-read price is half of Sol’s—the one pricing line where the most expensive model is not the most expensive option.&lt;/p&gt;

&lt;h3&gt;
  
  
  Worked example
&lt;/h3&gt;

&lt;p&gt;Assume a request uses 1 million input tokens and 200,000 output tokens, with no cached input:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemini 3.8 Flash:&lt;/strong&gt; &lt;code&gt;$0.75 + $0.75 = $1.50&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPT-5.6 Sol:&lt;/strong&gt; &lt;code&gt;$5.00 + $6.00 = $11.00&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Fable 5.1:&lt;/strong&gt; &lt;code&gt;$10.00 + $10.00 = $20.00&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From January 1, 2027, the same Gemini request costs &lt;strong&gt;$3.00&lt;/strong&gt;. The gaps then compress to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sol: &lt;strong&gt;3.7×&lt;/strong&gt; Gemini’s cost&lt;/li&gt;
&lt;li&gt;Fable 5.1: &lt;strong&gt;6.7×&lt;/strong&gt; Gemini’s cost&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The price doubling also applies to Gemini 3.6 Flash and 3.7 Flash, so there is no cheaper Gemini Flash fallback at the same introductory rates.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="http://apidog.com/blog/claude-fable-5-1-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Fable 5.1 pricing guide&lt;/a&gt; and &lt;a href="http://apidog.com/blog/gpt-5-6-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.6 pricing guide&lt;/a&gt; for batch and cache tiers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure cost per task, not just cost per token
&lt;/h2&gt;

&lt;p&gt;Google says Gemini 3.8 Flash “can use more tokens on longer running and complex tasks, by design.”&lt;/p&gt;

&lt;p&gt;On difficult problems, the model may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Take smaller reasoning steps&lt;/li&gt;
&lt;li&gt;Verify intermediate results&lt;/li&gt;
&lt;li&gt;Call tools iteratively&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Artificial Analysis measured the impact:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gemini 3.8 Flash setting&lt;/th&gt;
&lt;th&gt;Cost per task&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;$0.58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;$0.41&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;$0.24&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At high, Gemini used an average of 48,000 output tokens per task—30% more than Gemini 3.7 Flash. As a result, its measured cost rose from $0.40 per task for 3.7 Flash to $0.58 for 3.8 Flash at unchanged token prices.&lt;/p&gt;

&lt;p&gt;Two conclusions follow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A 13.3× per-token gap does not guarantee a 13.3× bill reduction. A premium model may finish with fewer tokens or fewer tool turns.&lt;/li&gt;
&lt;li&gt;On Gemini, &lt;code&gt;thinking_level&lt;/code&gt; is a major cost control. Moving from high to low reduced measured cost by more than half.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Artificial Analysis has not published comparable per-task figures for Fable 5.1 or Sol in the available text. Benchmark your own prompts before assuming any multiplier.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://apidog.com/blog/gemini-3-8-flash-thinking-levels?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash thinking-levels guide&lt;/a&gt; explains how to configure the setting per endpoint. In some routes, Gemini 3.7 Flash may still be the better buy because its measured per-task cost is 31% lower; see the &lt;a href="http://apidog.com/blog/gemini-3-8-flash-vs-gemini-3-7-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;3.8 Flash vs. 3.7 Flash comparison&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to choose each model
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Choose Gemini 3.8 Flash for volume and cost-sensitive agents
&lt;/h3&gt;

&lt;p&gt;Use Gemini 3.8 Flash as the default for thousands of agent tasks per day. It matches the premium models on the independent index, leads Google’s finance and legal agent rows, and remains substantially cheaper per token after the January 2027 price increase.&lt;/p&gt;

&lt;p&gt;Additional advantages include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Native video, audio, and PDF inputs&lt;/li&gt;
&lt;li&gt;Batch processing at 50% off&lt;/li&gt;
&lt;li&gt;5,000 free Google Search grounding requests per month&lt;/li&gt;
&lt;li&gt;A free tier for prototyping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trade-offs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Text-only output&lt;/li&gt;
&lt;li&gt;No Live API&lt;/li&gt;
&lt;li&gt;65,536-token output ceiling&lt;/li&gt;
&lt;li&gt;Higher token usage on complex tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Set &lt;code&gt;thinking_level&lt;/code&gt; to medium or low where the workload does not require high-depth reasoning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Choose Claude Fable 5.1 for the hardest long-horizon reasoning
&lt;/h3&gt;

&lt;p&gt;Fable 5.1 is an escalation model rather than the default starting point. Use it when an incorrect result costs more than the additional tokens, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-hour research agents&lt;/li&gt;
&lt;li&gt;Long terminal sessions&lt;/li&gt;
&lt;li&gt;Reasoning chains where cheaper models fail your evaluations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Its 128K output limit and $0.25 cache reads are useful for prefix-heavy agent loops that reuse a large context on every turn. In those workloads, the effective cost multiplier can be much smaller than 13.3×.&lt;/p&gt;

&lt;p&gt;See &lt;a href="http://apidog.com/blog/what-is-claude-fable-5-1?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;what Claude Fable 5.1 is&lt;/a&gt; for its own specification and positioning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Choose GPT-5.6 Sol for OpenAI-based agent stacks
&lt;/h3&gt;

&lt;p&gt;Sol scores 59 at &lt;code&gt;xhigh&lt;/code&gt;, ties Gemini 3.8 Flash on HLE-Verified, and offers 128K output at $5 input and $30 output per million tokens.&lt;/p&gt;

&lt;p&gt;It is a practical premium option when your agents, evaluations, and tooling already use OpenAI’s ecosystem. The downside is its $0.50 cache-read price, the highest of the three. Sol is therefore a better fit for fresh-context workloads than for long cached sessions.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://apidog.com/blog/grok-4-6-vs-gpt-5-6-vs-claude-fable-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Grok 4.6 vs. GPT-5.6 vs. Claude Fable 5 comparison&lt;/a&gt; provides additional context on Sol versus the previous Anthropic flagship.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test all three in one Apidog workspace
&lt;/h2&gt;

&lt;p&gt;Every model argument should end with the same action: measure your own prompts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; is an API client and testing platform. It does not run these models, but it makes it fast to send the same request to all three providers and compare the results.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Create three environments
&lt;/h3&gt;

&lt;p&gt;Create one project with three environments. Store each provider’s base URL and API key as environment variables:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Environment&lt;/th&gt;
&lt;th&gt;Base URL variable&lt;/th&gt;
&lt;th&gt;API key variable&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gemini&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://generativelanguage.googleapis.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GEMINI_API_KEY&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude&lt;/td&gt;
&lt;td&gt;Anthropic’s base URL&lt;/td&gt;
&lt;td&gt;Your Claude key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;OpenAI’s base URL&lt;/td&gt;
&lt;td&gt;Your OpenAI key&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Keep keys in environment variables—not in request bodies or shared collections.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Create one test scenario
&lt;/h3&gt;

&lt;p&gt;Add three request steps with the same prompt.&lt;/p&gt;

&lt;p&gt;The Gemini request uses &lt;code&gt;/v1beta/interactions&lt;/code&gt; with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gemini-3.8-flash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"thinking_level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"medium"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Claude and OpenAI steps should use their respective messages or chat endpoints.&lt;/p&gt;

&lt;p&gt;Add assertions to every step:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP status is &lt;code&gt;200&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;A JSON path confirms that an answer is present&lt;/li&gt;
&lt;li&gt;The token-usage field stays below your cost ceiling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Gemini’s legacy endpoint, the reasoning-token field is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;usageMetadata.thoughtsTokenCount
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assert against the equivalent usage block for the other providers.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Run and schedule the comparison
&lt;/h3&gt;

&lt;p&gt;Run the scenario against a set of golden prompts, then schedule it daily. If a vendor changes a default or a model starts consuming more thinking tokens, the failed assertion alerts you before the invoice does.&lt;/p&gt;

&lt;p&gt;Use the &lt;a href="http://apidog.com/blog/how-to-test-ai-agents-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;AI agent API testing guide&lt;/a&gt; for multi-turn scenarios and &lt;a href="http://apidog.com/blog/how-to-schedule-api-tests-apidog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;scheduling API tests in Apidog&lt;/a&gt; for recurring runs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt; to create the three at $0.75 input and $3.75 output through December 31, 2026.&lt;/p&gt;

&lt;p&gt;Artificial Analysis measured its cost per task at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.58 at high&lt;/li&gt;
&lt;li&gt;$0.41 at medium&lt;/li&gt;
&lt;li&gt;$0.24 at low&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because token usage varies by model and prompt, measure cost per completed task—not just cost per token.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do all three models have a 1M-token context window?
&lt;/h3&gt;

&lt;p&gt;Yes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemini 3.8 Flash: 1,048,576 input tokens&lt;/li&gt;
&lt;li&gt;Claude Fable 5.1: 1M tokens&lt;/li&gt;
&lt;li&gt;GPT-5.6 Sol: 1M tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Maximum output differs. Gemini supports 65,536 tokens, while the other two support 128K.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is Claude Fable 5.1 missing from Google’s benchmark tables?
&lt;/h3&gt;

&lt;p&gt;Google’s published rows list Claude Opus 5 and Claude Sonnet 5. Fable 5.1 shipped on September 1, one day before Gemini 3.8 Flash, so it was not included.&lt;/p&gt;

&lt;p&gt;For Anthropic’s own results, see the &lt;a href="http://apidog.com/blog/claude-fable-5-1-vs-opus-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Fable 5.1 vs. Opus 5 comparison&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Gemini’s price advantage survive 2027?
&lt;/h3&gt;

&lt;p&gt;Partly. On January 1, 2027, Gemini 3.8 Flash moves to $1.50 input and $7.50 output per million tokens.&lt;/p&gt;

&lt;p&gt;It remains cheaper, but the gap falls to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fable 5.1: 6.7× Gemini on both input and output&lt;/li&gt;
&lt;li&gt;Sol: 3.3× Gemini on input and 4× on output&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Which model should you call first?
&lt;/h3&gt;

&lt;p&gt;Start with Gemini 3.8 Flash for high-volume workloads. Set &lt;code&gt;thinking_level&lt;/code&gt; per route and monitor tokens per task.&lt;/p&gt;

&lt;p&gt;Escalate to Claude Fable 5.1 when cheaper models fail your evaluations, especially when you reuse a large context across turns. Choose GPT-5.6 Sol when the rest of your stack is already OpenAI-based and you want a premium model without adding another vendor.&lt;/p&gt;

&lt;p&gt;Before committing, send the same golden prompts to all three models in one test scenario. The price ratio is public; the cost-per-task ratio for your prompts is yours to measure.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/what-is-gemini-3-8-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash pillar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/" rel="noopener noreferrer"&gt;Gemini 3.8 Flash launch post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/gemini-3-7-flash-vs-claude-vs-gpt?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.7 Flash vs. Claude vs. GPT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/gemini-3-8-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash pricing guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://artificialanalysis.ai/articles/gemini-3-8-flash" rel="noopener noreferrer"&gt;Artificial Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deepmind.google/models/gemini/flash/" rel="noopener noreferrer"&gt;Google Gemini Flash page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/claude-fable-5-1-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Fable 5.1 benchmarks breakdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/gpt-5-6-sol-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.6 Sol benchmarks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://platform.claude.com/docs/en/about-claude/pricing" rel="noopener noreferrer"&gt;Anthropic pricing page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/claude-fable-5-1-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Fable 5.1 pricing guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/gpt-5-6-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.6 pricing guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/gemini-3-8-flash-thinking-levels?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini thinking levels guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/gemini-3-8-flash-vs-gemini-3-7-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash vs. 3.7 Flash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/what-is-claude-fable-5-1?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;What Claude Fable 5.1 is&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/grok-4-6-vs-gpt-5-6-vs-claude-fable-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Grok 4.6 vs. GPT-5.6 vs. Claude Fable 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/how-to-test-ai-agents-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;AI agent API testing guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/how-to-schedule-api-tests-apidog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Scheduling API tests in Apidog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/claude-fable-5-1-vs-opus-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Fable 5.1 vs. Opus 5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>openai</category>
    </item>
    <item>
      <title>What is Gemini 3.8 Flash?</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Thu, 03 Sep 2026 05:14:43 +0000</pubDate>
      <link>https://dev.to/hassann/what-is-gemini-38-flash-4a3g</link>
      <guid>https://dev.to/hassann/what-is-gemini-38-flash-4a3g</guid>
      <description>&lt;h1&gt;
  
  
  Gemini 3.8 Flash: More Agentic Reasoning at the Same Token Price
&lt;/h1&gt;

&lt;p&gt;Gemini 3.8 Flash is Google’s newest Flash-tier model, released on September 2, 2026, alongside the gated security model Gemini 3.8 Flash Cyber. It is the third Flash release in six weeks, following &lt;a href="http://apidog.com/blog/what-is-gemini-3-6-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.6 Flash&lt;/a&gt; on July 21 and Gemini 3.7 Flash on August 13. Introductory pricing matches 3.7 Flash: $0.75 per million input tokens and $3.75 per million output tokens through December 31, 2026. Google describes it as “our most intelligent Flash model, engineered for long-horizon software engineering, autonomous agents, and complex enterprise workflows.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm5mcpnffjm0lishkhzf0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm5mcpnffjm0lishkhzf0.png" alt="Gemini 3.8 Flash" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The main change is behavior, not price or context size. Gemini 3.8 Flash takes smaller reasoning steps, verifies its work, and calls tools iteratively. This improves agentic benchmark results, but also increases token usage by design. Artificial Analysis measured approximately 30% more output tokens than Gemini 3.7 Flash.&lt;/p&gt;

&lt;p&gt;So the per-token price is unchanged, but the per-task cost can be higher.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini 3.8 Flash at a glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Specification&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API model ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gemini-3.8-flash&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Released&lt;/td&gt;
&lt;td&gt;September 2, 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Based on&lt;/td&gt;
&lt;td&gt;Gemini 3.7 Flash, according to the &lt;a href="https://deepmind.google/models/model-cards/gemini-3-8-flash/" rel="noopener noreferrer"&gt;DeepMind model card&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context window&lt;/td&gt;
&lt;td&gt;1,048,576 input tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maximum output&lt;/td&gt;
&lt;td&gt;65,536 tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input modalities&lt;/td&gt;
&lt;td&gt;Text, image, video, audio, PDF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output modalities&lt;/td&gt;
&lt;td&gt;Text only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thinking levels&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt; (default), &lt;code&gt;high&lt;/code&gt;; &lt;code&gt;minimal&lt;/code&gt; returns an error&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Introductory pricing&lt;/td&gt;
&lt;td&gt;$0.75 input / $3.75 output per million tokens through December 31, 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard pricing&lt;/td&gt;
&lt;td&gt;$1.50 input / $7.50 output per million tokens from January 1, 2027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context caching&lt;/td&gt;
&lt;td&gt;$0.075 per million cached tokens introductory; $0.15 standard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch API&lt;/td&gt;
&lt;td&gt;50% off: $0.375 input / $1.875 output introductory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Knowledge cutoff&lt;/td&gt;
&lt;td&gt;March 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Developer availability&lt;/td&gt;
&lt;td&gt;Gemini API, Google AI Studio, Android Studio, Google Antigravity, Stitch, Gemini Enterprise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consumer availability&lt;/td&gt;
&lt;td&gt;Gemini app for AI Pro and Ultra subscribers, AI Mode in Search, Gemini in Google Sheets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.7 Flash&lt;/td&gt;
&lt;td&gt;Fully supported; no deprecation date announced&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three details matter during migration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The default thinking level is &lt;code&gt;medium&lt;/code&gt;, not &lt;code&gt;high&lt;/code&gt; as with Gemini 3 Pro.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;minimal&lt;/code&gt; returns a validation error instead of falling back to &lt;code&gt;low&lt;/code&gt;. See the &lt;a href="http://apidog.com/blog/gemini-3-8-flash-thinking-levels?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;thinking levels guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Although the stated knowledge cutoff is March 2026, the model card notes that some domains may have knowledge limited to January 2025.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Gemini 3.8 Flash is
&lt;/h2&gt;

&lt;p&gt;Flash is Google’s workhorse tier: it is intended for most production traffic, while Pro targets the hardest problems. Google calls Gemini 3.8 Flash its “most intelligent workhorse model yet,” but the &lt;a href="https://deepmind.google/models/model-cards/gemini-3-8-flash/" rel="noopener noreferrer"&gt;DeepMind model card&lt;/a&gt; describes it as based on Gemini 3.7 Flash.&lt;/p&gt;

&lt;p&gt;A practical description is therefore: Gemini 3.7 Flash refined for long-running software engineering and agent workflows.&lt;/p&gt;

&lt;p&gt;The release cadence is unusually fast:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemini 3.6 Flash: July 21, 2026, at $1.50 / $7.50&lt;/li&gt;
&lt;li&gt;Gemini 3.7 Flash: August 13, 2026, at the $0.75 / $3.75 introductory rate&lt;/li&gt;
&lt;li&gt;Gemini 3.8 Flash: September 2, 2026, at the same introductory rate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google calls this the third Flash release in six weeks. Artificial Analysis counts a fourth Flash model in under four months because its tally includes Gemini 3.5 Flash-Lite. No Gemini 3.8 Pro, Gemini 4, or new Flash-Lite model shipped with this release.&lt;/p&gt;

&lt;p&gt;Gemini 3.7 Flash remains supported, and Google has not announced a deprecation date or a timeline for a Pro update. The previous &lt;a href="http://apidog.com/blog/whats-new-in-gemini-3-7-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.7 Flash what’s-new post&lt;/a&gt; is already describing the previous generation only three weeks after publication.&lt;/p&gt;

&lt;h2&gt;
  
  
  The “works harder” design—and its cost
&lt;/h2&gt;

&lt;p&gt;Google describes Gemini 3.8 Flash’s changes in concrete terms. On difficult tasks, it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Executes additional reasoning steps&lt;/li&gt;
&lt;li&gt;Breaks work into smaller reasoning steps&lt;/li&gt;
&lt;li&gt;Verifies intermediate results&lt;/li&gt;
&lt;li&gt;Calls tools iteratively&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google also warns that the model can use more tokens on long-running and complex tasks, especially at higher effort levels.&lt;/p&gt;

&lt;p&gt;Artificial Analysis measured the impact using its Intelligence Index:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Thinking level&lt;/th&gt;
&lt;th&gt;Cost per task&lt;/th&gt;
&lt;th&gt;Time per task&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;$0.58&lt;/td&gt;
&lt;td&gt;2.5 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;$0.41&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;$0.24&lt;/td&gt;
&lt;td&gt;0.8 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At high reasoning, Gemini 3.8 Flash averaged 48,000 output tokens per task—about 30% more than Gemini 3.7 Flash. The comparable 3.7 Flash high-reasoning task cost was $0.40 and took 2.2 minutes.&lt;/p&gt;

&lt;p&gt;This makes &lt;code&gt;thinking_level&lt;/code&gt; a routing decision rather than a global configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;low&lt;/code&gt; for latency-sensitive endpoints.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;medium&lt;/code&gt; for most agent workflows.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;high&lt;/code&gt; when task completion matters more than token or time budgets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Speed is otherwise similar to Gemini 3.7 Flash. Logan Kilpatrick of Google described it as “same price as 3.7, [and] ~the same speed.” Artificial Analysis measured 302.1 output tokens per second at high reasoning. Its 13.30-second time to first token reflects model-side thinking, not necessarily network latency.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="http://apidog.com/blog/gemini-3-8-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;pricing breakdown&lt;/a&gt; for examples across 1,000 agent tasks per day.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the benchmarks say
&lt;/h2&gt;

&lt;p&gt;Google published the following benchmark results on its &lt;a href="https://deepmind.google/models/gemini/flash/" rel="noopener noreferrer"&gt;DeepMind Flash page&lt;/a&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;Gemini 3.8 Flash&lt;/th&gt;
&lt;th&gt;Gemini 3.7 Flash&lt;/th&gt;
&lt;th&gt;Claude Opus 5&lt;/th&gt;
&lt;th&gt;GPT-5.6 Sol&lt;/th&gt;
&lt;th&gt;GPT-5.6 Terra&lt;/th&gt;
&lt;th&gt;Claude Sonnet 5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Vals Finance Agent v2&lt;/td&gt;
&lt;td&gt;61.4%&lt;/td&gt;
&lt;td&gt;59.0%&lt;/td&gt;
&lt;td&gt;58.6%&lt;/td&gt;
&lt;td&gt;53.8%&lt;/td&gt;
&lt;td&gt;54.4%&lt;/td&gt;
&lt;td&gt;53.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Harvey Legal Agent Benchmark&lt;/td&gt;
&lt;td&gt;10.0%&lt;/td&gt;
&lt;td&gt;8.8%&lt;/td&gt;
&lt;td&gt;6.7%&lt;/td&gt;
&lt;td&gt;2.5%&lt;/td&gt;
&lt;td&gt;0.8%&lt;/td&gt;
&lt;td&gt;5.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HLE-Verified&lt;/td&gt;
&lt;td&gt;54.9%&lt;/td&gt;
&lt;td&gt;53.6%&lt;/td&gt;
&lt;td&gt;54.4%&lt;/td&gt;
&lt;td&gt;54.5%&lt;/td&gt;
&lt;td&gt;51.1%&lt;/td&gt;
&lt;td&gt;31.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The gains over Gemini 3.7 Flash are 2.4, 1.2, and 1.3 percentage points. The finance and legal results place a Flash-priced model ahead of Opus 5 and GPT-5.6 Sol on these published tests.&lt;/p&gt;

&lt;p&gt;Claude Fable 5.1, released the day before, is not included in Google’s tables. The &lt;a href="http://apidog.com/blog/gemini-3-8-flash-vs-claude-fable-5-1-vs-gpt-5-6-sol?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;three-way comparison&lt;/a&gt; uses Anthropic’s Opus 5 and Sonnet 5 results as the closest published entries.&lt;/p&gt;

&lt;p&gt;Google also reports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On DeepSWE v1.1, Gemini 3.8 Flash outperforms most larger frontier models at a fraction of the cost. The model card includes image-based percentage tables; Google reports Gemini 3.7 Flash at 65.3%.&lt;/li&gt;
&lt;li&gt;On document-heavy, long-running workflows, an internal evaluation completed more than three times as many tasks as Gemini 3.7 Flash.&lt;/li&gt;
&lt;li&gt;On the Gray Swan prompt-injection evaluation, it achieved a “significant leap,” without a published figure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Text results for SWE-Bench Pro, Terminal-bench, and OSWorld were not published for Gemini 3.8 Flash.&lt;/p&gt;

&lt;p&gt;Artificial Analysis independently scored Gemini 3.8 Flash high at 59 on its Intelligence Index, compared with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemini 3.7 Flash: 56&lt;/li&gt;
&lt;li&gt;Gemini 3.6 Flash: 52&lt;/li&gt;
&lt;li&gt;GPT-5.6 Sol xhigh: 59&lt;/li&gt;
&lt;li&gt;Grok 4.6 medium: 59&lt;/li&gt;
&lt;li&gt;GPT-5.6 Terra max: 57&lt;/li&gt;
&lt;li&gt;Claude Fable 5.1 medium: 57&lt;/li&gt;
&lt;li&gt;Muse Spark 1.2 xhigh: 57&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the τ³-Banking tool-use evaluation, Gemini 3.8 Flash scored 45%, 12 points above Gemini 3.7 Flash. The &lt;a href="http://apidog.com/blog/gemini-3-8-flash-vs-gemini-3-7-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;3.8 versus 3.7 comparison&lt;/a&gt; weighs these gains against the added token consumption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing: same per token, more per task
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://ai.google.dev/gemini-api/docs/pricing" rel="noopener noreferrer"&gt;official pricing page&lt;/a&gt; lists Gemini 3.8 Flash alongside Gemini 3.6 and 3.7 Flash. Prices double on January 1, 2027.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Through December 31, 2026&lt;/th&gt;
&lt;th&gt;From January 1, 2027&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Input&lt;/td&gt;
&lt;td&gt;$0.75 / 1M tokens&lt;/td&gt;
&lt;td&gt;$1.50 / 1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output, including thinking&lt;/td&gt;
&lt;td&gt;$3.75 / 1M tokens&lt;/td&gt;
&lt;td&gt;$7.50 / 1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cached input&lt;/td&gt;
&lt;td&gt;$0.075 / 1M tokens&lt;/td&gt;
&lt;td&gt;$0.15 / 1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache storage&lt;/td&gt;
&lt;td&gt;$0.50 / 1M tokens / hour&lt;/td&gt;
&lt;td&gt;$1.00 / 1M tokens / hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch input / output&lt;/td&gt;
&lt;td&gt;$0.375 / $1.875&lt;/td&gt;
&lt;td&gt;$0.75 / $3.75&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two billing details are easy to miss:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Thinking tokens are billed as output tokens and reported separately as &lt;code&gt;usageMetadata.thoughtsTokenCount&lt;/code&gt;. A short high-reasoning answer can cost more than a longer low-reasoning answer.&lt;/li&gt;
&lt;li&gt;Google Search grounding has a separate meter: 5,000 free requests per month shared across Gemini 3.x models, then $14 per 1,000 requests.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;AI Studio and the API provide a rate-limited free tier. Google states that free-tier data is used to improve its products. Per-model rate limits are shown in AI Studio.&lt;/p&gt;

&lt;p&gt;Billing tiers unlock as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tier 1: link a billing account&lt;/li&gt;
&lt;li&gt;Tier 2: spend $100 and wait three days&lt;/li&gt;
&lt;li&gt;Tier 3: spend $1,000 and wait 30 days&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="http://apidog.com/blog/how-to-use-gemini-3-8-flash-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;free-access guide&lt;/a&gt; explains the free path, while the &lt;a href="http://apidog.com/blog/gemini-api-batch-mode?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Batch API guide&lt;/a&gt; covers the 50% discount for jobs that can wait.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to call Gemini 3.8 Flash
&lt;/h2&gt;

&lt;p&gt;Google now treats the Interactions API as the primary API for Gemini 3.x. &lt;code&gt;generateContent&lt;/code&gt; is considered legacy but remains fully supported with no announced sunset date.&lt;/p&gt;

&lt;p&gt;A minimal Interactions API request looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://generativelanguage.googleapis.com/v1beta/interactions"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"x-goog-[REDACTED CREDENTIAL] &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
  -H 'Content-Type: application/json' &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
  -d '{"&lt;/span&gt;model&lt;span class="s2"&gt;":"&lt;/span&gt;gemini-3.8-flash&lt;span class="s2"&gt;","&lt;/span&gt;input&lt;span class="s2"&gt;":"&lt;/span&gt;Explain HTTP caching &lt;span class="k"&gt;in &lt;/span&gt;3 sentences.&lt;span class="s2"&gt;","&lt;/span&gt;generation_config&lt;span class="s2"&gt;":{"&lt;/span&gt;thinking_level&lt;span class="s2"&gt;":"&lt;/span&gt;medium&lt;span class="s2"&gt;"}}'
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For multi-turn conversations, send &lt;code&gt;previous_interaction_id&lt;/code&gt; so the server can maintain state.&lt;/p&gt;

&lt;p&gt;Function calling uses a JSON Schema tool declaration. The model returns a &lt;code&gt;function_call&lt;/code&gt; step, and your application sends back a &lt;code&gt;function_result&lt;/code&gt; containing both &lt;code&gt;call_id&lt;/code&gt; and &lt;code&gt;name&lt;/code&gt;. Both fields are required for Gemini 3.8 Flash. In legacy &lt;code&gt;generateContent&lt;/code&gt;, the corresponding field is &lt;code&gt;id&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://apidog.com/blog/how-to-use-gemini-3-8-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API walkthrough&lt;/a&gt; includes REST and Python examples. The &lt;a href="http://apidog.com/blog/gemini-3-8-flash-function-calling?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;function calling guide&lt;/a&gt; explains iterative tool loops and how to cap them.&lt;/p&gt;

&lt;p&gt;When migrating from Gemini 3.7 Flash, watch for these incompatibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;minimal&lt;/code&gt; thinking is rejected.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;thinking_budget&lt;/code&gt; is replaced by &lt;code&gt;thinking_level&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;candidate_count&lt;/code&gt; is unsupported.&lt;/li&gt;
&lt;li&gt;Google recommends leaving &lt;code&gt;temperature&lt;/code&gt; at its default of &lt;code&gt;1.0&lt;/code&gt;; lowering it may cause looping or degraded performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use the &lt;a href="http://apidog.com/blog/gemini-3-7-to-3-8-flash-migration-guide?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;migration guide&lt;/a&gt; for before-and-after JSON examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Gemini 3.8 Flash cannot do
&lt;/h2&gt;

&lt;p&gt;Gemini 3.8 Flash does not support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Audio generation&lt;/li&gt;
&lt;li&gt;The Live API&lt;/li&gt;
&lt;li&gt;Image generation&lt;/li&gt;
&lt;li&gt;Image segmentation, which is not supported on Gemini 3 models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although the model accepts text, images, video, audio, and PDFs as input, its output is text only. For real-time voice or image output, use Gemini 3.8 Flash as the reasoning and tool-calling layer alongside other services.&lt;/p&gt;

&lt;p&gt;For inexpensive, high-throughput text generation without heavy reasoning, &lt;a href="http://apidog.com/blog/what-is-gemini-3-5-flash-lite?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.5 Flash-Lite&lt;/a&gt; remains available at $0.30 input / $2.50 output per million tokens.&lt;/p&gt;

&lt;p&gt;Supported features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Function calling&lt;/li&gt;
&lt;li&gt;Structured outputs&lt;/li&gt;
&lt;li&gt;Context caching&lt;/li&gt;
&lt;li&gt;Code execution&lt;/li&gt;
&lt;li&gt;Search and Maps grounding&lt;/li&gt;
&lt;li&gt;Batch API&lt;/li&gt;
&lt;li&gt;Computer use in preview&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Gemini 3.8 Flash Cyber: the gated twin
&lt;/h2&gt;

&lt;p&gt;Gemini 3.8 Flash Cyber shipped on the same day, but it is not publicly available. Access is limited to Google’s &lt;a href="https://deepmind.google/fairwind-program/" rel="noopener noreferrer"&gt;Fairwind Program&lt;/a&gt; for trusted government authorities, critical infrastructure operators, and software maintainers.&lt;/p&gt;

&lt;p&gt;The program requires background checks and controls such as phishing-resistant MFA. There is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No public API&lt;/li&gt;
&lt;li&gt;No public pricing&lt;/li&gt;
&lt;li&gt;No self-hosting option&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemini 3.8 Flash Cyber replaces the Gemini 3.5 Flash Cyber limited pilot.&lt;/p&gt;

&lt;p&gt;Google reports a vulnerability-discovery success rate above 70% across 20 programming languages. Google’s Chrome security team also reports that Cyber produced 2.6 times more correct vulnerability patches than the best much-larger commercial models. Both figures are Google-reported.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://apidog.com/blog/what-is-gemini-3-8-flash-cyber?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Cyber explainer&lt;/a&gt; covers eligibility, obligations, and the implications for teams without access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test Gemini 3.8 Flash in Apidog
&lt;/h2&gt;

&lt;p&gt;Because Gemini 3.8 Flash’s cost is driven by task-level token usage, a successful HTTP response is not enough. Test how many tokens each request consumes.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Store &lt;code&gt;GEMINI_API_KEY&lt;/code&gt; as an environment variable.&lt;/li&gt;
&lt;li&gt;Save both Interactions API and &lt;code&gt;generateContent&lt;/code&gt; requests as endpoints.&lt;/li&gt;
&lt;li&gt;Assert that the response status is &lt;code&gt;200&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Validate the JSON fields consumed by your application.&lt;/li&gt;
&lt;li&gt;Set a ceiling for &lt;code&gt;usageMetadata.thoughtsTokenCount&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run the same prompt at &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, and &lt;code&gt;high&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Compare token usage and latency for your own workload.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Streaming responses use SSE. Set &lt;code&gt;includeThoughts: true&lt;/code&gt; when debugging thought summaries, then follow the &lt;a href="http://apidog.com/blog/test-llm-ai-apis-sse?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;SSE testing guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Schedule the scenario daily so a token regression fails an assertion before it reaches your invoice. You can &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;download Apidog&lt;/a&gt; and set up the test on the free plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is Gemini 3.8 Flash a new model or an update to Gemini 3.7 Flash?
&lt;/h3&gt;

&lt;p&gt;The DeepMind model card says it is based on Gemini 3.7 Flash. Treat it as a tuned successor with the same price, speed, and context window, but more reasoning and tool-calling steps on difficult tasks. Gemini 3.7 Flash remains fully supported with no announced deprecation date.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why does Gemini 3.8 Flash use more tokens than Gemini 3.7 Flash?
&lt;/h3&gt;

&lt;p&gt;That behavior is intentional. Google says Gemini 3.8 Flash can use more tokens on long-running and complex tasks. Artificial Analysis measured approximately 30% more output tokens in its benchmark.&lt;/p&gt;

&lt;p&gt;Set &lt;code&gt;thinking_level&lt;/code&gt; to &lt;code&gt;medium&lt;/code&gt; or &lt;code&gt;low&lt;/code&gt; for routes that do not need maximum reasoning. The &lt;a href="http://apidog.com/blog/gemini-3-8-flash-thinking-levels?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;thinking levels guide&lt;/a&gt; includes per-level cost examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the Gemini 3.8 Flash context window?
&lt;/h3&gt;

&lt;p&gt;The model supports 1,048,576 input tokens and 65,536 output tokens. Context caching costs $0.075 per million cached tokens through December 31, 2026.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use Gemini 3.8 Flash in the free Gemini app?
&lt;/h3&gt;

&lt;p&gt;Launch coverage lists the Gemini app for Google AI Pro and Ultra subscribers, not the free app tier. Developers can use a rate-limited free tier in AI Studio and the API.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does Gemini 3.8 Flash compare with Claude Fable 5.1?
&lt;/h3&gt;

&lt;p&gt;Artificial Analysis scores Gemini 3.8 Flash at 59 and Claude Fable 5.1 at 57. Claude Fable 5.1 costs $10 input / $50 output per million tokens—approximately 13 times Gemini 3.8 Flash’s introductory rate for both token types.&lt;/p&gt;

&lt;p&gt;That gap narrows when you account for Gemini 3.8 Flash’s higher token consumption per task. See the &lt;a href="http://apidog.com/blog/what-is-claude-fable-5-1?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Fable 5.1 overview&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Gemini 3.8 Flash is a workhorse that reasons longer. The trade-off is explicit: modest gains on agentic benchmarks and a 12-point improvement on tool use, offset by approximately 30% more output tokens at high reasoning.&lt;/p&gt;

&lt;p&gt;If Gemini 3.7 Flash was hitting limits on complex agent tasks, Gemini 3.8 Flash offers the upgrade at the same per-token price. If your workload is latency-sensitive chat, use &lt;code&gt;low&lt;/code&gt; or stay on Gemini 3.7 Flash.&lt;/p&gt;

&lt;p&gt;Start with the &lt;a href="http://apidog.com/blog/how-to-use-gemini-3-8-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API walkthrough&lt;/a&gt;, send a request from Apidog with a token-count assertion, and choose the thinking level for each route based on your own workload—not only the launch benchmarks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/" rel="noopener noreferrer"&gt;Google launch post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ai.google.dev/gemini-api/docs/models/gemini-3.8-flash" rel="noopener noreferrer"&gt;Gemini 3.8 Flash model page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deepmind.google/models/model-cards/gemini-3-8-flash/" rel="noopener noreferrer"&gt;DeepMind model card&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://artificialanalysis.ai/articles/gemini-3-8-flash" rel="noopener noreferrer"&gt;Artificial Analysis independent write-up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deepmind.google/models/gemini/flash/" rel="noopener noreferrer"&gt;DeepMind Flash page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ai.google.dev/gemini-api/docs/pricing" rel="noopener noreferrer"&gt;Gemini API pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deepmind.google/fairwind-program/" rel="noopener noreferrer"&gt;Fairwind Program&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Claude Mythos 5.1 vs Fable 5.1: Same Model, Different Safeguards</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Wed, 02 Sep 2026 04:16:28 +0000</pubDate>
      <link>https://dev.to/hassann/claude-mythos-51-vs-fable-51-same-model-different-safeguards-5g3n</link>
      <guid>https://dev.to/hassann/claude-mythos-51-vs-fable-51-same-model-different-safeguards-5g3n</guid>
      <description>&lt;p&gt;Anthropic released Claude Fable 5.1 and Claude Mythos 5.1 together on September 1, 2026, describing them as “the same model but with different levels of safeguards.” They use the same weights, specifications, pricing, and API. Fable 5.1 is generally available, while Mythos 5.1 is limited to approved organizations in Project Glasswing through cybersecurity and life-sciences verification programs. Mythos 5.1 also powers Anthropic’s Claude Security product.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;This guide compares the models, explains their four practical differences, shows how Mythos 5.1 access works, and examines the only published benchmark gap. Sources include Anthropic’s &lt;a href="https://www.anthropic.com/claude-fable-and-mythos-5-1" rel="noopener noreferrer"&gt;launch post&lt;/a&gt; and the &lt;a href="https://platform.claude.com/docs/en/models/fable-5-1/migration-guide" rel="noopener noreferrer"&gt;Fable 5.1 migration guide&lt;/a&gt;, which covers both models.&lt;/p&gt;

&lt;p&gt;For more context, see &lt;a href="http://apidog.com/blog/mythos-class-model-explained?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;what “Mythos-class” means&lt;/a&gt; and &lt;a href="http://apidog.com/blog/fable-5-vs-mythos-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Fable 5 vs. Mythos 5&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side-by-side comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Claude Fable 5.1&lt;/th&gt;
&lt;th&gt;Claude Mythos 5.1&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Model ID&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude-fable-5-1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude-mythos-5-1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Availability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;All customers&lt;/td&gt;
&lt;td&gt;Project Glasswing participants only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access route&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sign up&lt;/td&gt;
&lt;td&gt;Cyber Verification Program or Life Sciences Verification Program; US organizations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pricing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$10 / $50; cache reads $0.25&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context / maximum output&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1M / 128K&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Knowledge cutoff&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;June 2026&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Thinking&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Adaptive, always on&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Forced &lt;code&gt;tool_choice&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Safety classifiers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Full Fable set: &lt;code&gt;cyber&lt;/code&gt;, &lt;code&gt;bio&lt;/code&gt;, &lt;code&gt;frontier_llm&lt;/code&gt;, &lt;code&gt;reasoning_extraction&lt;/code&gt;, &lt;code&gt;general_harms&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Program-specific safeguards; more permissive for approved defensive work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vulnerability work&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Can identify vulnerabilities but cannot develop exploits&lt;/td&gt;
&lt;td&gt;Can discover exploit paths for approved defensive research&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reads Fable 5.1 thinking blocks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes—the only other model that can&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;History-editing check&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Platforms&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Claude API, Bedrock, Claude Platform on AWS, Google Cloud, Foundry&lt;/td&gt;
&lt;td&gt;Claude API, Bedrock, Google Cloud, Foundry; not Claude Platform on AWS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Priority Tier&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data retention&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;30-day required; Covered Model&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Terminal-Bench 4.0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;55.8%&lt;/td&gt;
&lt;td&gt;60.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What is identical
&lt;/h2&gt;

&lt;p&gt;Anthropic describes Fable 5.1 and Mythos 5.1 as the same model with different safeguards. Both provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A 1M-token context window&lt;/li&gt;
&lt;li&gt;A 128K-token maximum output&lt;/li&gt;
&lt;li&gt;Always-on adaptive thinking&lt;/li&gt;
&lt;li&gt;Five effort levels&lt;/li&gt;
&lt;li&gt;A June 2026 knowledge cutoff&lt;/li&gt;
&lt;li&gt;$0.25 cache reads&lt;/li&gt;
&lt;li&gt;The same pricing and API behavior&lt;/li&gt;
&lt;li&gt;The same three Fable 5-generation breaking changes, except for the history-editing check described below&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="http://apidog.com/blog/what-is-claude-fable-5-1?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Fable 5.1 specification overview&lt;/a&gt; also applies to Mythos 5.1.&lt;/p&gt;

&lt;p&gt;Both models require 30-day data retention and are Covered Models. They are not available under zero data retention unless Anthropic explicitly authorizes it. Neither supports Priority Tier, and both include Anthropic’s statistical text watermark on every platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Difference 1: availability and access
&lt;/h2&gt;

&lt;p&gt;Fable 5.1 is generally available through the Claude API and every supported partner platform.&lt;/p&gt;

&lt;p&gt;Mythos 5.1 is limited to approved Project Glasswing customers. At launch, there were two access routes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The &lt;strong&gt;Cyber Verification Program&lt;/strong&gt; for defensive security professionals, with applications submitted through Anthropic’s portal.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Life Sciences Verification Program&lt;/strong&gt; for life-sciences organizations, operated in partnership with the US government with enrollment expanding over time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both programs were limited to US organizations at launch. Access is arranged through your Anthropic, AWS, or Google Cloud account team. Whether existing Mythos 5 access transfers automatically was still being confirmed.&lt;/p&gt;

&lt;p&gt;This differs from the Mythos 5 generation, which was invitation-only and ran no safety classifiers. Mythos 5.1 still has safeguards; they are calibrated to the access program rather than removed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Difference 2: safeguard behavior
&lt;/h2&gt;

&lt;p&gt;Fable 5.1 runs the complete Fable classifier set. When it declines a request, the API returns HTTP 200 with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"stop_reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"refusal"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response also includes a refusal category. Anthropic reports substantial reductions in false positives compared with Fable 5:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Biology classifiers trigger 85% less often on benign requests.&lt;/li&gt;
&lt;li&gt;Cyber safeguards produce approximately 60% fewer interventions per Claude Code session.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fable 5.1 can identify software vulnerabilities, but it will not develop exploits.&lt;/p&gt;

&lt;p&gt;Mythos 5.1 is intended for work that Fable 5.1 may decline, including exploit-path discovery for approved defensive research and life-sciences work that triggers the bio classifier. It still runs safeguards, so your integration should handle refusals on both models:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stop_reason&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;refusal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;category&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stop_details&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;category&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="c1"&gt;// Log, retry, or route to an approved fallback.&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Anthropic’s &lt;a href="https://www.anthropic.com/claude-fable-and-mythos-5-1" rel="noopener noreferrer"&gt;launch post&lt;/a&gt; and &lt;a href="https://www.anthropic.com/claude-fable-5-1-mythos-5-1-system-card" rel="noopener noreferrer"&gt;system card&lt;/a&gt; also describe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A real-time classifier for aggressive probing and sandbox-escape attempts&lt;/li&gt;
&lt;li&gt;Stronger isolation for high-risk cyber workloads&lt;/li&gt;
&lt;li&gt;New network-isolation requirements for external evaluators&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These measures follow incidents in earlier evaluations where models reached real systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Difference 3: history-editing validation
&lt;/h2&gt;

&lt;p&gt;Fable 5.1 thinking blocks are valid only in the exact conversation that produced them. On accounts created on or after August 31, 2026, editing any of the following invalidates subsequent thinking blocks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An earlier conversation turn&lt;/li&gt;
&lt;li&gt;The system prompt&lt;/li&gt;
&lt;li&gt;The tools array&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The API then returns a &lt;code&gt;400&lt;/code&gt; error because the blocks are bound to a different conversation. The &lt;a href="http://apidog.com/blog/claude-fable-5-1-preserved-thinking?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;preserved thinking guide&lt;/a&gt; covers this behavior in detail.&lt;/p&gt;

&lt;p&gt;Mythos 5.1 does not run this history-editing check. However, thinking blocks remain bound to their producing model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mythos 5.1 can read Mythos 5 thinking blocks.&lt;/li&gt;
&lt;li&gt;Mythos 5 cannot read Mythos 5.1 thinking blocks.&lt;/li&gt;
&lt;li&gt;Editing history still restarts the prompt cache.&lt;/li&gt;
&lt;li&gt;History edits do not produce the “bound to a different conversation” &lt;code&gt;400&lt;/code&gt; error.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mythos 5.1 is also the only model besides Fable 5.1 that can read Fable 5.1 thinking blocks. You can move a conversation between those two models without losing its reasoning. Switching to Opus 5 causes the API to drop the blocks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Difference 4: platforms and rate limits
&lt;/h2&gt;

&lt;p&gt;Fable 5.1 is available on Claude Platform on AWS. Mythos 5.1 is not.&lt;/p&gt;

&lt;p&gt;Mythos 5.1 is available through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Claude API&lt;/li&gt;
&lt;li&gt;Amazon Bedrock as &lt;code&gt;anthropic.claude-mythos-5-1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Google Cloud&lt;/li&gt;
&lt;li&gt;Microsoft Foundry&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On Bedrock, Mythos 5.1 is available in &lt;code&gt;us-east-1&lt;/code&gt; but is not publicly listed.&lt;/p&gt;

&lt;p&gt;The models also use separate rate-limit pools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fable 5.1 shares the &lt;strong&gt;Fable 5.x&lt;/strong&gt; pool with Fable 5.&lt;/li&gt;
&lt;li&gt;Mythos 5.1 shares the &lt;strong&gt;Mythos&lt;/strong&gt; pool with Mythos 5.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the benchmark gap shows
&lt;/h2&gt;

&lt;p&gt;Anthropic published one benchmark result for Mythos 5.1:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mythos 5.1:&lt;/strong&gt; 60.9% on Terminal-Bench 4.0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fable 5.1:&lt;/strong&gt; 55.8%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because the underlying model is the same, the five-point difference is the clearest public measurement of safeguard overhead on an agentic coding task unrelated to cyber or biology. The classifiers presumably intervene on some benign steps during long terminal sessions.&lt;/p&gt;

&lt;p&gt;In other words, Mythos 5.1 is a demonstrably stronger option for some workloads, even though it is not a different model. The &lt;a href="http://apidog.com/blog/claude-fable-5-1-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;complete benchmarks breakdown&lt;/a&gt; covers the rest of the results.&lt;/p&gt;

&lt;p&gt;Anthropic’s science claims were all made for Mythos 5.1, not Fable 5.1:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protein binders with affinities 10 times higher than the best competition submissions across three targets&lt;/li&gt;
&lt;li&gt;A nearly 50% hit rate across 12 targets, compared with a typical 10–15%&lt;/li&gt;
&lt;li&gt;A Venus elevation map with detail down to two or three kilometers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are the workloads targeted by the Life Sciences Verification Program.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which model should you use?
&lt;/h2&gt;

&lt;p&gt;For most developers, the answer is &lt;strong&gt;Fable 5.1&lt;/strong&gt; because it is generally available.&lt;/p&gt;

&lt;p&gt;Mythos 5.1 is relevant if your organization:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performs defensive security research that triggers the cyber classifier&lt;/li&gt;
&lt;li&gt;Conducts legitimate life-sciences research that triggers the bio classifier&lt;/li&gt;
&lt;li&gt;Has been approved for Project Glasswing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you qualify, migrating from Fable 5.1 should usually require only a model-ID change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"claude-mythos-5-1"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The API behavior is otherwise the same, apart from history-editing validation.&lt;/p&gt;

&lt;p&gt;Before applying for Mythos access, try these steps if Fable 5.1 is refusing legitimate defensive work:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Follow Anthropic’s phrasing guidance. Ask “are there any bugs?” instead of “does this compile?”&lt;/li&gt;
&lt;li&gt;Include documentation for lesser-known programming languages.&lt;/li&gt;
&lt;li&gt;Remove tools that inject base64 data into the context.&lt;/li&gt;
&lt;li&gt;Configure a fallback:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"fallbacks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"default"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows declined requests to fall through to Opus 5 or Opus 4.8. See the &lt;a href="http://apidog.com/blog/claude-fable-5-fallbacks-parameter?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;refusal handling guide&lt;/a&gt; for implementation details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test both model IDs
&lt;/h2&gt;

&lt;p&gt;Because the models are otherwise identical, the easiest comparison is to send the same request body to both IDs in &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;First, send a benign vulnerability-analysis prompt to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;claude-fable-5-1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;claude-mythos-5-1&lt;/code&gt;, if your organization has access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;stop_reason&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;stop_details.category&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then send a two-request sequence that edits the system prompt between turns while including the &lt;code&gt;thinking-binding-controls-2026-08-01&lt;/code&gt; header.&lt;/p&gt;

&lt;p&gt;Expected behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fable 5.1 reports &lt;code&gt;prefix_binding_mismatch&lt;/code&gt; in &lt;code&gt;input_transformations&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Mythos 5.1 does not run that history-editing check.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt; to run the comparison.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is Claude Mythos 5.1 more capable than Fable 5.1?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They use the same underlying model, so their capabilities are the same. The published Terminal-Bench 4.0 results—60.9% for Mythos 5.1 versus 55.8% for Fable 5.1—reflect safeguard interventions rather than different model weights.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I get access to Claude Mythos 5.1?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Apply through Project Glasswing’s Cyber Verification Program or Life Sciences Verification Program. Both programs were limited to US organizations at launch. You can also contact your Anthropic, AWS, or Google Cloud account team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Mythos 5.1 cost more than Fable 5.1?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Both cost $10 and $50 per million tokens, with the same cache and batch rates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Claude Mythos 5.1 refuse requests?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. Unlike Mythos 5, which ran no classifiers, Mythos 5.1 uses safeguards calibrated to the access program. Handle &lt;code&gt;stop_reason: "refusal"&lt;/code&gt; and &lt;code&gt;stop_details.category&lt;/code&gt; for both models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I switch a conversation between Fable 5.1 and Mythos 5.1?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. They are the only two models that can read each other’s thinking blocks, so switching between them does not discard the reasoning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Mythos 5.1 available on Amazon Bedrock?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. It is available as &lt;code&gt;anthropic.claude-mythos-5-1&lt;/code&gt; in &lt;code&gt;us-east-1&lt;/code&gt;, although it is not publicly listed. It is not available on Claude Platform on AWS.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Prompting Claude Fable 5.1: Every Behavior Shift and the Line That Fixes It</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Wed, 02 Sep 2026 03:00:20 +0000</pubDate>
      <link>https://dev.to/hassann/prompting-claude-fable-51-every-behavior-shift-and-the-line-that-fixes-it-1hga</link>
      <guid>https://dev.to/hassann/prompting-claude-fable-51-every-behavior-shift-and-the-line-that-fixes-it-1hga</guid>
      <description>&lt;h1&gt;
  
  
  Claude Fable 5.1 Prompting: What Changed and How to Adapt
&lt;/h1&gt;

&lt;p&gt;Anthropic says existing Fable 5 prompts should perform well on Claude Fable 5.1, but the behavior around those answers has changed: tool-call batching, progress updates, prose density, chat formatting, file-editing style, and autonomous task completion all behave differently. This guide maps each shift to a practical fix from the &lt;a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-1" rel="noopener noreferrer"&gt;official prompting guide&lt;/a&gt;. For the model overview, see &lt;a href="http://apidog.com/blog/what-is-claude-fable-5-1?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;what Claude Fable 5.1 is&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Tune effort before changing prompts
&lt;/h2&gt;

&lt;p&gt;Effort is the main control for intelligence, latency, and cost on Fable 5.1. Start with the default &lt;strong&gt;high&lt;/strong&gt; setting, then evaluate low, medium, xhigh, and max against your own test suite. Repeat the sweep even if you already tested Fable 5; effort levels do not represent the same amount of thinking across models.&lt;/p&gt;

&lt;p&gt;Anthropic recommends testing these hypotheses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Medium&lt;/strong&gt; may approximate Fable 5 quality at lower cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low&lt;/strong&gt; can be competitive with Opus and Sonnet on cost per task while scoring higher in some evaluations.&lt;/li&gt;
&lt;li&gt;Improvements over Fable 5 are largest at &lt;strong&gt;xhigh&lt;/strong&gt; and &lt;strong&gt;max&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also change effort mid-conversation without resetting the cache by sending an empty-content system message with &lt;code&gt;output_config&lt;/code&gt; and the &lt;code&gt;mid-conversation-output-config-2026-07-01&lt;/code&gt; beta header. See the &lt;a href="https://platform.claude.com/docs/en/build-with-claude/effort" rel="noopener noreferrer"&gt;Effort documentation&lt;/a&gt; and &lt;a href="http://apidog.com/blog/claude-fable-5-1-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API walkthrough&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Put per-turn instructions in the right place
&lt;/h2&gt;

&lt;p&gt;Fable 5.1 thinking blocks are valid only in the exact conversation that produced them. Editing an earlier turn—for example, injecting a reminder and deleting it on the next request—restarts the prompt cache and, for accounts created on or after August 31, 2026, invalidates every later thinking block.&lt;/p&gt;

&lt;p&gt;Use one of these patterns for turn-scoped instructions.&lt;/p&gt;

&lt;p&gt;With the &lt;code&gt;mid-conversation-system-clear-at-2026-08-21&lt;/code&gt; beta, append a system message after the tool result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"system"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"clear_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"next_user_message"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Your turn-scoped instruction goes here."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep earlier copies in the conversation array. After the next user message, the API clears the older copies, so the model sees only the newest instruction and cleared copies consume no tokens.&lt;/p&gt;

&lt;p&gt;Without the beta, place the instruction in a text block after the &lt;code&gt;tool_result&lt;/code&gt; blocks in the same user message. Again, keep every earlier copy. Never delete or rewrite text that has already been sent.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://platform.claude.com/docs/en/build-with-claude/preserved-thinking" rel="noopener noreferrer"&gt;preserved thinking documentation&lt;/a&gt; and the &lt;a href="http://apidog.com/blog/claude-fable-5-1-preserved-thinking?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;turn-scoped system message guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Use the system prompt or first user turn for session-level instructions. Anthropic reports that style instructions hold more reliably in the first user turn than in the system prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Restore parallel tool calls in agent loops
&lt;/h2&gt;

&lt;p&gt;When a request explicitly names several independent items, Fable 5.1 usually calls the tools in parallel. In coding and computer-use loops, however, it may issue one implied read per turn when Fable 5 batched several calls.&lt;/p&gt;

&lt;p&gt;Measure before changing the [REDACTED PROMPT] assistant turns containing more than one tool call.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add the instruction only if parallelism has declined.&lt;/li&gt;
&lt;li&gt;Measure round trips, token usage, and wall-clock time as well.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Append this instruction after each tool-result message as a turn-scoped system message:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;First privately list what you need next; then request every item that doesn't depend on another's result in this one response.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Keep the word &lt;strong&gt;“privately.”&lt;/strong&gt; Without it, the model may answer the reminder instead of continuing the task. A sentence near the end of the current request generally has more effect than the same sentence in the system prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make progress updates visible
&lt;/h2&gt;

&lt;p&gt;Fable 5.1 often produces fewer user-facing updates during long tool-calling turns than Fable 5, especially at higher effort. Users may see no updates for several minutes or receive a final message that mentions only the last step.&lt;/p&gt;

&lt;p&gt;Apply these fixes in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm that progress updates are being returned. Between-tool notes arrive as thinking blocks and are displayed as &lt;code&gt;"omitted"&lt;/code&gt; by default.&lt;/li&gt;
&lt;li&gt;Enable &lt;code&gt;display: "updates"&lt;/code&gt; with the &lt;code&gt;thinking-display-updates-2026-08-18&lt;/code&gt; beta header.&lt;/li&gt;
&lt;li&gt;Render each non-empty thinking block as a status line.&lt;/li&gt;
&lt;li&gt;Remove old instructions such as “hold all findings for the final response.”&lt;/li&gt;
&lt;li&gt;If needed, add this to the system [REDACTED PROMPT]&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If your product hides tool output, tell the model explicitly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Only you see that command’s output. If the user needs to read any of it, put it in your reply.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Otherwise, it may run extra commands to “show” output the user cannot actually see.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prevent premature turn endings
&lt;/h2&gt;

&lt;p&gt;On complex asynchronous tasks, Fable 5.1 may describe the next action instead of taking it, or ask permission for work already covered by the request. This forces the user to reply “continue” and limits long-horizon execution.&lt;/p&gt;

&lt;p&gt;Add this system-prompt block:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You are operating autonomously. The user is not watching in real time and cannot answer questions mid-task, so asking 'Want me to...?' or 'Shall I...?' will block the work. For reversible actions that follow from the original request, proceed without asking. Stop only for destructive actions or genuine scope changes the user must decide. Offering follow-ups after the task is done is fine; asking permission before doing the work is not.&lt;/p&gt;

&lt;p&gt;Before ending your turn, check your last paragraph. If it is a plan, an analysis, a question, a list of next steps, or a promise about work you have not done, do that work now with tool calls. End your turn only when the task is complete or you are blocked on input only the user can provide.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pair it with a scope rule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Treat the user’s request as the complete scope.&lt;/li&gt;
&lt;li&gt;Do not narrow, widen, or replace it.&lt;/li&gt;
&lt;li&gt;Finish every unblocked part and report anything omitted.&lt;/li&gt;
&lt;li&gt;Treat unrequested observations as suggestions, not changes.&lt;/li&gt;
&lt;li&gt;Add a separate sentence listing the confirmations that still require user input.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike the &lt;a href="http://apidog.com/blog/prompting-claude-opus-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Opus 5 prompting advice&lt;/a&gt;, keep instructions that tell Fable 5.1 to verify its work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prevent unrequested fixes and extra tests
&lt;/h2&gt;

&lt;p&gt;Open-ended feature requests can produce nearby bug fixes, performance changes, extended behavior, or more test files than necessary.&lt;/p&gt;

&lt;p&gt;Use this instruction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If, while working or testing, you find a pre-existing bug, a performance concern, or behavior the task doesn't mention, don't fix, optimize or extend it in this change unless the requested behavior cannot work without it; report it as a follow-up in your summary. Verify your work however you like; scratch scripts and quick checks need not be kept. Commit tests only where the task asks for them or this repository already keeps tests for this kind of change, sized like the neighboring test files. This is about extras only: implement every behavior the task asks for, completely.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This reduces scope creep without discouraging complete implementation of the requested behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prefer targeted file edits
&lt;/h2&gt;

&lt;p&gt;Fable 5.1 is more likely than Fable 5 to rewrite an entire file for a small change. The result may be correct, but it costs more output tokens and creates noisier diffs.&lt;/p&gt;

&lt;p&gt;Add this to the system prompt or first user message:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The number of tokens used to edit files is best minimized, all else being equal. Therefore, when it will not affect the end result, try to surgically edit a file rather than rewrite the entire thing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Reduce dense, mannered prose
&lt;/h2&gt;

&lt;p&gt;Fable 5.1 generally writes better prose, but it can produce longer sentences and fewer paragraph breaks. Anthropic defines “mannered prose” as writing that uses metaphor and flourish to display the writer instead of conveying the idea directly.&lt;/p&gt;

&lt;p&gt;Use a direct instruction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Say what you mean and use the literal phrase when one is available. Please remove all mannered prose.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Restore useful formatting
&lt;/h2&gt;

&lt;p&gt;Older models often overused bullets and bold text, so many prompts contain anti-formatting rules. Fable 5.1 tends to use less formatting, which means those rules can now suppress structure the reader needs.&lt;/p&gt;

&lt;p&gt;Replace blanket anti-formatting instructions with a conditional rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use lists when asked or when the content is multifaceted enough that they aid clarity. Honor explicit requests for minimal formatting. Use plain prose in conversational or emotional exchanges.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Mark quotations in summaries
&lt;/h2&gt;

&lt;p&gt;When summarizing documents, Fable 5.1 is more likely than Fable 5 to reproduce source passages without clearly marking them as quotations.&lt;/p&gt;

&lt;p&gt;Add one complete example to the system prompt containing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The user’s request.&lt;/li&gt;
&lt;li&gt;A correct response that summarizes each source in the assistant’s own indirect speech.&lt;/li&gt;
&lt;li&gt;At most one short, clearly marked quotation.&lt;/li&gt;
&lt;li&gt;A one-sentence explanation of why the response is correct.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Replace any tool-call placeholders in Anthropic’s example with your own tool name.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make low-effort search behavior explicit
&lt;/h2&gt;

&lt;p&gt;At low effort, Fable 5.1 may search and retrieve less often than Fable 5, particularly for named products and models it recognizes but has stale knowledge of.&lt;/p&gt;

&lt;p&gt;Use either of these fixes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Raise effort for affected turns with per-message effort.&lt;/li&gt;
&lt;li&gt;Add this guidance to the system [REDACTED PROMPT] state. Search before answering, and include the name exactly as the user wrote it in at least one query.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Control long deliverables at xhigh and max
&lt;/h2&gt;

&lt;p&gt;At xhigh and especially max, Fable 5.1 may draft a long deliverable in its thinking and then reproduce it in the final response. This doubles latency and output tokens.&lt;/p&gt;

&lt;p&gt;Prefer &lt;strong&gt;high&lt;/strong&gt; unless evaluations show a measurable gain at higher effort. If you use xhigh or max:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;max_tokens&lt;/code&gt; high enough for both thinking and the final response.&lt;/li&gt;
&lt;li&gt;Tell the user message that all content produced in one reply, including reasoning, counts toward one limit of approximately &lt;code&gt;max_tokens&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Explain that composing the deliverable in reasoning and then repeating it in the reply doubles the turn without improving the result.&lt;/li&gt;
&lt;li&gt;Keep earlier copies of that instruction in later requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reduce false refusals on benign coding tasks
&lt;/h2&gt;

&lt;p&gt;Fable 5.1’s classifiers produce fewer false positives than Fable 5 at launch, and finding vulnerabilities in source code is permitted. False positives can still occur.&lt;/p&gt;

&lt;p&gt;Try these changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask, “Are there any bugs in this program?” instead of “Does this program compile without errors?”&lt;/li&gt;
&lt;li&gt;Provide documentation for lesser-known languages.&lt;/li&gt;
&lt;li&gt;Remove tools that inject base64-encoded data into context.&lt;/li&gt;
&lt;li&gt;Keep fallback behavior configured regardless of the expected result.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See the &lt;a href="http://apidog.com/blog/claude-fable-5-fallbacks-parameter?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;refusal handling guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preserve details during client-side compaction
&lt;/h2&gt;

&lt;p&gt;Fable 5.1 responds well to explicit compaction requirements. Server-side compaction already preserves these details. For client-side compaction, instruct the model to write inside &lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt; tags and retain the following in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Difficulties and how they were resolved.&lt;/li&gt;
&lt;li&gt;Approaches that were proposed or rejected, and why.&lt;/li&gt;
&lt;li&gt;Everything requested or decided, stated exactly.&lt;/li&gt;
&lt;li&gt;The current state.&lt;/li&gt;
&lt;li&gt;Open items.&lt;/li&gt;
&lt;li&gt;Hard-to-reconstruct details such as names, numbers, and links.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;End with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do not call any tools while writing this summary; respond with text only.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is important when the summarization request still includes the conversation’s tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use architecture for subagents and vision
&lt;/h2&gt;

&lt;p&gt;Two improvements are architectural rather than prompt-based.&lt;/p&gt;

&lt;p&gt;For coding tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Let the lead agent continue while subagents work.&lt;/li&gt;
&lt;li&gt;Have the subagent-starting tool return immediately.&lt;/li&gt;
&lt;li&gt;Deliver each subagent result in a later user message.&lt;/li&gt;
&lt;li&gt;Give the lead agent a separate tool it can call when it wants to wait.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For dense charts and nested tables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provide a crop tool that returns a selected region at a larger size, or&lt;/li&gt;
&lt;li&gt;Provide a container with basic image libraries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At low effort, the model may skip cropping, so inspect tool-call logs to confirm it used the capability when needed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fei29oo7ccvj9d84kofgf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fei29oo7ccvj9d84kofgf.png" alt="Fable 5.1 prompting workflow" width="800" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Test prompt changes in Apidog
&lt;/h2&gt;

&lt;p&gt;Treat every fix as a before-and-after experiment:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Save the first three turns of your agent loop as a request sequence in &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Parameterize the system prompt.&lt;/li&gt;
&lt;li&gt;Run the sequence with and without one snippet at the same effort.&lt;/li&gt;
&lt;li&gt;Compare task success, latency, and token usage.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Useful assertions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tool batching:&lt;/strong&gt; Count &lt;code&gt;tool_use&lt;/code&gt; blocks per assistant turn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Targeted edits and prose density:&lt;/strong&gt; Compare &lt;code&gt;usage.output_tokens&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autonomy:&lt;/strong&gt; Assert that the final paragraph does not start with “Next, I”.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress:&lt;/strong&gt; Verify that non-empty update blocks are displayed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt; to build the test sequence. The &lt;a href="http://apidog.com/blog/claude-fable-5-1-claude-code?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Code guide&lt;/a&gt; shows which instructions belong in &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh6pdx9rkpomz4vp0cjza.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh6pdx9rkpomz4vp0cjza.png" alt="Testing Claude Fable 5.1 prompts" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Do my Fable 5 prompts work on Fable 5.1?
&lt;/h3&gt;

&lt;p&gt;Anthropic says they should perform well without changes. The main differences are behavioral: fewer batched tool calls in some loops, fewer progress updates, denser prose, less chat formatting, whole-file rewrites, and scope creep on open-ended tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  What effort level should I use?
&lt;/h3&gt;

&lt;p&gt;Start at &lt;strong&gt;high&lt;/strong&gt; and run an evaluation sweep. Anthropic reports that medium can approximate Fable 5 at lower cost, while low can be competitive with Opus and Sonnet on cost per task.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where should I put a per-turn instruction?
&lt;/h3&gt;

&lt;p&gt;Use a turn-scoped system message with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"clear_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"next_user_message"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Place it after the tool results and keep earlier copies in the conversation. Editing earlier turns invalidates later thinking blocks and restarts the cache.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I remove “verify your work” instructions?
&lt;/h3&gt;

&lt;p&gt;No. That advice was specific to Opus 5’s over-verification behavior. Keep verification instructions for Fable 5.1.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I stop whole-file rewrites?
&lt;/h3&gt;

&lt;p&gt;Add this sentence to the system prompt or first user message:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Minimize tokens used to edit files and surgically edit rather than rewrite when doing so does not affect the result.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>Claude Fable 5.1 Benchmarks: What the Numbers Actually Say</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Wed, 02 Sep 2026 02:54:45 +0000</pubDate>
      <link>https://dev.to/hassann/claude-fable-51-benchmarks-what-the-numbers-actually-say-4414</link>
      <guid>https://dev.to/hassann/claude-fable-51-benchmarks-what-the-numbers-actually-say-4414</guid>
      <description>&lt;h1&gt;
  
  
  Claude Fable 5.1 Benchmarks: The Numbers That Matter
&lt;/h1&gt;

&lt;p&gt;Anthropic launched Claude Fable 5.1 on September 1, 2026. Across nine published benchmarks, its largest gain is Terminal-Bench-Science: 52.6% versus 24.7% for Fable 5. Its smallest lead is CursorBench, where it beats Opus 5 by only 3.4 points despite costing twice as much. This guide collects the published results, explains what they measure, and shows how to validate them against your own workload.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The primary source is Anthropic’s &lt;a href="https://www.anthropic.com/claude-fable-and-mythos-5-1" rel="noopener noreferrer"&gt;launch post&lt;/a&gt;. For background, see &lt;a href="http://apidog.com/blog/what-is-claude-fable-5-1?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;what Claude Fable 5.1 is&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The full benchmark table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;What it measures&lt;/th&gt;
&lt;th&gt;Fable 5.1&lt;/th&gt;
&lt;th&gt;Fable 5&lt;/th&gt;
&lt;th&gt;Opus 5&lt;/th&gt;
&lt;th&gt;GPT-5.6 Sol&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-Bench-Science 0.1&lt;/td&gt;
&lt;td&gt;Agentic scientific research in a terminal&lt;/td&gt;
&lt;td&gt;52.6%&lt;/td&gt;
&lt;td&gt;24.7%&lt;/td&gt;
&lt;td&gt;29.0%&lt;/td&gt;
&lt;td&gt;22.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-Bench 4.0&lt;/td&gt;
&lt;td&gt;Agentic coding in a terminal&lt;/td&gt;
&lt;td&gt;55.8%&lt;/td&gt;
&lt;td&gt;42.0%&lt;/td&gt;
&lt;td&gt;52.3%&lt;/td&gt;
&lt;td&gt;37.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GDPval-AA v2&lt;/td&gt;
&lt;td&gt;Economically valuable knowledge work (Elo)&lt;/td&gt;
&lt;td&gt;1853&lt;/td&gt;
&lt;td&gt;1723&lt;/td&gt;
&lt;td&gt;1824&lt;/td&gt;
&lt;td&gt;1711&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OSWorld 2.0 (partial credit)&lt;/td&gt;
&lt;td&gt;Computer use on real desktop tasks&lt;/td&gt;
&lt;td&gt;77.9%&lt;/td&gt;
&lt;td&gt;72.9%&lt;/td&gt;
&lt;td&gt;75.4%&lt;/td&gt;
&lt;td&gt;Not reported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OSWorld 2.0 (strict)&lt;/td&gt;
&lt;td&gt;Same, counting only full task completion&lt;/td&gt;
&lt;td&gt;41.7%&lt;/td&gt;
&lt;td&gt;36.1%&lt;/td&gt;
&lt;td&gt;39.6%&lt;/td&gt;
&lt;td&gt;Not reported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Humanity’s Last Exam (no tools)&lt;/td&gt;
&lt;td&gt;Expert-level reasoning questions&lt;/td&gt;
&lt;td&gt;60.9%&lt;/td&gt;
&lt;td&gt;57.8%&lt;/td&gt;
&lt;td&gt;56.6%&lt;/td&gt;
&lt;td&gt;Not reported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Humanity’s Last Exam (with tools)&lt;/td&gt;
&lt;td&gt;Same, with search and code&lt;/td&gt;
&lt;td&gt;65.0%&lt;/td&gt;
&lt;td&gt;63.8%&lt;/td&gt;
&lt;td&gt;63.6%&lt;/td&gt;
&lt;td&gt;Not reported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AutomationBench&lt;/td&gt;
&lt;td&gt;End-to-end business workflows&lt;/td&gt;
&lt;td&gt;31.4%&lt;/td&gt;
&lt;td&gt;17.1%&lt;/td&gt;
&lt;td&gt;26.9%&lt;/td&gt;
&lt;td&gt;19.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CursorBench 3.2.0&lt;/td&gt;
&lt;td&gt;IDE-style coding tasks&lt;/td&gt;
&lt;td&gt;73.4%&lt;/td&gt;
&lt;td&gt;70.5%&lt;/td&gt;
&lt;td&gt;70.0%&lt;/td&gt;
&lt;td&gt;67.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Anthropic also published one Mythos 5.1 result: &lt;strong&gt;60.9% on Terminal-Bench 4.0&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://venturebeat.com/technology/anthropics-claude-fable-5-1-and-mythos-5-1-arrive-with-a-75-cost-reduction-for-fable-cache-reads" rel="noopener noreferrer"&gt;VentureBeat&lt;/a&gt; reported an additional Browserbase result: Fable 5.1 scored 82%, compared with 74% for Opus 5 and 57% for Fable 5 on the hardest browser-agent tasks. Because this figure comes from press coverage rather than Anthropic’s launch post, treat it as less authoritative.&lt;/p&gt;

&lt;h2&gt;
  
  
  The large gaps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Terminal-Bench-Science 0.1
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Fable 5.1: 52.6% · Fable 5: 24.7% · Opus 5: 29.0%&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the standout result. Fable 5.1 more than doubles its predecessor and nearly doubles Opus 5 on a benchmark that gives the model a terminal, scientific tools, and multistep research tasks.&lt;/p&gt;

&lt;p&gt;It is the clearest evidence that Anthropic’s focus on “long-horizon problem-solving” produced a measurable improvement. However, this is a version 0.1 benchmark, so the task set and scores may change as it matures.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fudlsswkdgxl60wr5jpni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fudlsswkdgxl60wr5jpni.png" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  AutomationBench
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Fable 5.1: 31.4% · Fable 5: 17.1% · Opus 5: 26.9%&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AutomationBench evaluates end-to-end business workflows across applications. Absolute scores remain low for every model, but Fable 5.1 nearly doubles Fable 5 and leads Opus 5 by 4.5 points.&lt;/p&gt;

&lt;p&gt;If your product automates multi-application business processes, this row is especially relevant.&lt;/p&gt;

&lt;h3&gt;
  
  
  Terminal-Bench 4.0
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Fable 5.1: 55.8% · Fable 5: 42.0% · Opus 5: 52.3%&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fable 5.1 gains 13.8 points over Fable 5 on agentic coding and leads Opus 5 by 3.5 points.&lt;/p&gt;

&lt;p&gt;Opus 5 had surpassed Fable 5 on this benchmark in July. Fable 5.1 restores the Fable tier’s advantage, although the lead is narrower than it was in June. See the &lt;a href="http://apidog.com/blog/claude-opus-5-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Opus 5 benchmarks breakdown&lt;/a&gt; for the July results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjw98c50wbc35vrm9hhdf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjw98c50wbc35vrm9hhdf.png" width="800" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  GDPval-AA v2
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Fable 5.1: 1853 · Fable 5: 1723 · Opus 5: 1824&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fable 5.1 gains 130 Elo over Fable 5 on knowledge-work tasks. This is the benchmark Anthropic cites for its document, spreadsheet, and presentation claims.&lt;/p&gt;

&lt;p&gt;Against Opus 5, the difference is only 29 Elo—a relatively small gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  The small gaps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  CursorBench 3.2.0
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Fable 5.1: 73.4% · Fable 5: 70.5% · Opus 5: 70.0%&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CursorBench measures IDE-style coding tasks. Fable 5.1 leads both models by about three points, making this its narrowest advantage.&lt;/p&gt;

&lt;p&gt;This benchmark may matter most to developers. If your workload is primarily “help me in my editor,” these results alone do not justify paying twice as much.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8nekd54qmywdx1e6tocm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8nekd54qmywdx1e6tocm.png" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  OSWorld 2.0
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Partial credit:&lt;/strong&gt; Fable 5.1 77.9% vs Opus 5 75.4%&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Strict completion:&lt;/strong&gt; Fable 5.1 41.7% vs Opus 5 39.6%&lt;/p&gt;

&lt;p&gt;Fable 5.1 leads Opus 5 by roughly two points under both scoring methods and leads Fable 5 by five points.&lt;/p&gt;

&lt;p&gt;The strict score is the more sobering metric: fewer than half of tasks were fully completed by any model. Computer use remains one of the frontier’s weakest capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Humanity’s Last Exam
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Without tools:&lt;/strong&gt; Fable 5.1 60.9% vs Opus 5 56.6%&lt;br&gt;&lt;br&gt;
&lt;strong&gt;With tools:&lt;/strong&gt; Fable 5.1 65.0% vs Opus 5 63.6%&lt;/p&gt;

&lt;p&gt;Without tools, Fable 5.1 leads Opus 5 by 4.3 points—the largest of the smaller gaps. With search and code execution, the advantage falls to 1.4 points.&lt;/p&gt;

&lt;p&gt;The no-tools score better represents raw reasoning. The with-tools score is closer to typical production usage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6e99fzaqlwbz4mj6tjg7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6e99fzaqlwbz4mj6tjg7.png" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fable 5.1 vs GPT-5.6 Sol
&lt;/h2&gt;

&lt;p&gt;Anthropic published GPT-5.6 Sol results for five rows. Fable 5.1 leads on each:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Terminal-Bench-Science:&lt;/strong&gt; 52.6% vs 22.4%, a 30.2-point lead&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal-Bench 4.0:&lt;/strong&gt; 55.8% vs 37.3%, an 18.5-point lead&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AutomationBench:&lt;/strong&gt; 31.4% vs 19.6%, an 11.8-point lead&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CursorBench:&lt;/strong&gt; 73.4% vs 67.2%, a 6.2-point lead&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GDPval-AA v2:&lt;/strong&gt; 1853 vs 1711&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two caveats are important:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Anthropic ran these competitor comparisons itself.&lt;/li&gt;
&lt;li&gt;GPT-5.6 Sol results are missing from five of the nine rows, and Anthropic did not explain why.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The earlier &lt;a href="http://apidog.com/blog/gpt-5-6-vs-claude-fable-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.6 Sol vs Fable 5 comparison&lt;/a&gt; covered the previous matchup. On the published numbers, Fable 5.1 widens every gap reported for Fable 5.&lt;/p&gt;

&lt;h2&gt;
  
  
  What launch coverage skipped
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Every result is vendor-run
&lt;/h3&gt;

&lt;p&gt;Anthropic ran all benchmark tests, including the GPT-5.6 Sol comparisons. No independent lab had reproduced the results at launch.&lt;/p&gt;

&lt;p&gt;Anthropic’s benchmark history has generally held up, but small gaps—especially on CursorBench and OSWorld—could change with a different harness, prompt set, or scoring method.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mythos 5.1 is the higher-performing sibling
&lt;/h3&gt;

&lt;p&gt;Anthropic’s &lt;a href="https://www.anthropic.com/claude-fable-5-1-mythos-5-1-system-card" rel="noopener noreferrer"&gt;system card&lt;/a&gt; and launch post describe Fable 5.1 and Mythos 5.1 as “the same model but with different levels of safeguards.”&lt;/p&gt;

&lt;p&gt;On Terminal-Bench 4.0:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mythos 5.1: &lt;strong&gt;60.9%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fable 5.1: &lt;strong&gt;55.8%&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The five-point difference shows the capability cost of the safeguards on agentic coding. It also means Anthropic’s most capable widely released model has a more capable sibling. The &lt;a href="http://apidog.com/blog/claude-mythos-5-1-vs-fable-5-1?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Mythos 5.1 vs Fable 5.1 comparison&lt;/a&gt; covers access differences.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anthropic did not state the effort level
&lt;/h3&gt;

&lt;p&gt;Anthropic’s &lt;a href="https://platform.claude.com/docs/en/build-with-claude/effort" rel="noopener noreferrer"&gt;effort documentation&lt;/a&gt; says Fable 5.1’s gains are largest at &lt;code&gt;xhigh&lt;/code&gt; and &lt;code&gt;max&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The launch post does not identify the effort level used for each result or state which settings were used for the comparison models. Because effort is a major quality and cost lever, this omission makes exact reproduction difficult.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multilingual performance is flat
&lt;/h3&gt;

&lt;p&gt;Anthropic says multilingual performance is on par with Fable 5 rather than improved. If your workload is not in English, the benchmark table may overstate the practical gain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Safeguard metrics measure a different outcome
&lt;/h3&gt;

&lt;p&gt;Anthropic reports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;85% fewer biology false positives&lt;/strong&gt; on benign requests&lt;/li&gt;
&lt;li&gt;About &lt;strong&gt;60% fewer cyber interventions per Claude Code session&lt;/strong&gt; versus Fable 5&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These figures come from Anthropic’s own traffic and are not externally reproducible. For users who frequently encounter refusals, however, they may matter more than capability scores.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to test yourself
&lt;/h2&gt;

&lt;p&gt;A launch table tells you where to investigate. Your own evals determine whether migration is worthwhile.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Run a long-horizon agent task
&lt;/h3&gt;

&lt;p&gt;Use a representative task from your product and compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fable 5.1 at high effort&lt;/li&gt;
&lt;li&gt;Opus 5 at &lt;code&gt;xhigh&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Fable 5 at high effort&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This approximates Terminal-Bench-Science and AutomationBench. It will show whether the higher price pays off for your workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Compare your hardest coding prompts
&lt;/h3&gt;

&lt;p&gt;Run your ten most difficult coding prompts at the same effort level on Fable 5.1 and Opus 5. If the results are tied, you have reproduced the CursorBench story—and Opus 5 may be the better value.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Sweep effort levels
&lt;/h3&gt;

&lt;p&gt;Run one routine task on Fable 5.1 at every setting from low through &lt;code&gt;max&lt;/code&gt;. Anthropic claims that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Medium effort matches Fable 5&lt;/li&gt;
&lt;li&gt;Low effort can compete with Opus 5 on cost per task&lt;/li&gt;
&lt;li&gt;Gains are largest at &lt;code&gt;xhigh&lt;/code&gt; and &lt;code&gt;max&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Measure both quality and cost rather than relying on a single score.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Count benign refusals
&lt;/h3&gt;

&lt;p&gt;Run benign security and life-sciences prompts on Fable 5 and Fable 5.1. Track refusal rates to test Anthropic’s 60% and 85% claims.&lt;/p&gt;

&lt;p&gt;You can build all four evals as requests in &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;. Define &lt;code&gt;model&lt;/code&gt; and &lt;code&gt;effort&lt;/code&gt; as environment variables, then add assertions for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;stop_reason&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;An expected string in the response&lt;/li&gt;
&lt;li&gt;Request success or failure&lt;/li&gt;
&lt;li&gt;Latency and token usage, if available&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run the collection once per model and compare the resulting history. This gives you a reproducible evaluation table without building new infrastructure. &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt; to get started; the &lt;a href="http://apidog.com/blog/claude-fable-5-1-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Fable 5.1 API walkthrough&lt;/a&gt; includes the request shapes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hr4uq9f6hir0einxwat.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hr4uq9f6hir0einxwat.png" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How the benchmarks map to a decision
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Long-horizon agents, research, and automation:&lt;/strong&gt; The gaps are large and consistent. Fable 5.1 is the strongest choice in Anthropic’s table. The &lt;a href="http://apidog.com/blog/claude-fable-5-1-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;pricing breakdown&lt;/a&gt; explains how cheaper cache reads narrow the cost difference on these workloads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IDE coding, knowledge Q&amp;amp;A, and tool-assisted reasoning:&lt;/strong&gt; The advantage over Opus 5 is only one to four points. Stay on Opus 5 unless Fable 5.1 wins your higher-effort evals. See the &lt;a href="http://apidog.com/blog/claude-fable-5-1-vs-opus-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Fable 5.1 vs Opus 5 comparison&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migration from Fable 5:&lt;/strong&gt; Every published capability row improves, while the price does not. Anthropic also reports fewer false positives. The &lt;a href="http://apidog.com/blog/claude-fable-5-1-vs-fable-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Fable 5.1 vs Fable 5 comparison&lt;/a&gt; covers migration considerations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is Claude Fable 5.1’s best benchmark result?
&lt;/h3&gt;

&lt;p&gt;Terminal-Bench-Science 0.1 at &lt;strong&gt;52.6%&lt;/strong&gt;. That is more than double Fable 5’s 24.7% and ahead of Opus 5’s 29.0% and GPT-5.6 Sol’s 22.4%. All figures come from Anthropic.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does Fable 5.1 compare with Opus 5 on coding?
&lt;/h3&gt;

&lt;p&gt;Fable 5.1 scores 55.8% vs 52.3% on Terminal-Bench 4.0 and 73.4% vs 70.0% on CursorBench 3.2.0. The advantage is real but narrow—roughly three points.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Fable 5.1 better than GPT-5.6 Sol?
&lt;/h3&gt;

&lt;p&gt;On the five benchmarks where Anthropic published both results, yes. Fable 5.1 leads by 6 to 30 points. Anthropic ran the GPT-5.6 Sol tests itself, and four other benchmark rows have no GPT-5.6 Sol result.&lt;/p&gt;

&lt;h3&gt;
  
  
  Are the Fable 5.1 benchmarks independently verified?
&lt;/h3&gt;

&lt;p&gt;Not at launch. Every number is Anthropic-run. Treat the results as claims to validate against your own workload.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does Mythos 5.1 score?
&lt;/h3&gt;

&lt;p&gt;Anthropic published one result: &lt;strong&gt;60.9% on Terminal-Bench 4.0&lt;/strong&gt;, five points above Fable 5.1’s 55.8%. Anthropic describes both as the same model with different safeguards.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which effort level produced these scores?
&lt;/h3&gt;

&lt;p&gt;Anthropic did not say. Its guidance is that Fable 5.1 performs best at &lt;code&gt;xhigh&lt;/code&gt; and &lt;code&gt;max&lt;/code&gt;, so reproduce the tests across effort levels before drawing conclusions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Claude Fable 5.1 vs Opus 5: When Is Twice the Price Worth It?</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Wed, 02 Sep 2026 02:50:36 +0000</pubDate>
      <link>https://dev.to/hassann/claude-fable-51-vs-opus-5-when-is-twice-the-price-worth-it-4gom</link>
      <guid>https://dev.to/hassann/claude-fable-51-vs-opus-5-when-is-twice-the-price-worth-it-4gom</guid>
      <description>&lt;h1&gt;
  
  
  Claude Fable 5.1 vs. Claude Opus 5: Which Model Should You Use?
&lt;/h1&gt;

&lt;p&gt;Claude Fable 5.1 costs $10 per million input tokens and $50 per million output tokens. Claude Opus 5 costs $5 and $25. Anthropic recommends starting with Opus 5 and switching to Fable 5.1 only “when your evals on Claude Opus 5 at higher effort still fall short.” This comparison applies that rule to benchmarks, pricing, caching, and real-world integration constraints.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The sources are Anthropic’s &lt;a href="https://www.anthropic.com/claude-fable-and-mythos-5-1" rel="noopener noreferrer"&gt;launch post&lt;/a&gt;, the &lt;a href="https://platform.claude.com/docs/en/models/fable-5-1/overview" rel="noopener noreferrer"&gt;Fable 5.1 model page&lt;/a&gt;, and the &lt;a href="https://platform.claude.com/docs/en/about-claude/pricing" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt;. For each model’s overview, see &lt;a href="http://apidog.com/blog/what-is-claude-fable-5-1?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;what Claude Fable 5.1 is&lt;/a&gt; and &lt;a href="http://apidog.com/blog/what-is-claude-opus-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;what Claude Opus 5 is&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side by side
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Claude Fable 5.1&lt;/th&gt;
      &lt;th&gt;Claude Opus 5&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
&lt;td&gt;Model ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude-fable-5-1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude-opus-5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Released&lt;/td&gt;
&lt;td&gt;September 1, 2026&lt;/td&gt;
&lt;td&gt;July 24, 2026&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Positioning&lt;/td&gt;
&lt;td&gt;Demanding reasoning and long-horizon agentic work&lt;/td&gt;
&lt;td&gt;Complex agentic coding and enterprise work; the recommended default&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Input / output&lt;/td&gt;
&lt;td&gt;$10 / $50&lt;/td&gt;
&lt;td&gt;$5 / $25&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Cache read&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;td&gt;$0.50&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Cache write (5m / 1h)&lt;/td&gt;
&lt;td&gt;$12.50 / $20&lt;/td&gt;
&lt;td&gt;$6.25 / $10&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Batch&lt;/td&gt;
&lt;td&gt;$5 / $25&lt;/td&gt;
&lt;td&gt;$2.50 / $12.50&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Fast mode&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes ($10 / $50)&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Priority Tier&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Context / max output&lt;/td&gt;
&lt;td&gt;1M / 128K&lt;/td&gt;
&lt;td&gt;1M / 128K (300K on Batch with beta)&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Knowledge cutoff&lt;/td&gt;
&lt;td&gt;June 2026&lt;/td&gt;
&lt;td&gt;May 2026&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Comparative latency&lt;/td&gt;
&lt;td&gt;Slower&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Thinking&lt;/td&gt;
&lt;td&gt;Always on; &lt;code&gt;disabled&lt;/code&gt; returns 400&lt;/td&gt;
&lt;td&gt;On by default; &lt;code&gt;disabled&lt;/code&gt; allowed at &lt;code&gt;high&lt;/code&gt; or below&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Forced &lt;code&gt;tool_choice&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;td&gt;Accepted&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Safety classifiers&lt;/td&gt;
&lt;td&gt;cyber, bio, frontier_llm, reasoning_extraction, general_harms&lt;/td&gt;
&lt;td&gt;cyber only&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Zero data retention&lt;/td&gt;
&lt;td&gt;Not available unless authorized&lt;/td&gt;
&lt;td&gt;Available&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Per-message effort (beta)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;History-editing check&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What the benchmarks show
&lt;/h2&gt;

&lt;p&gt;All results below come from Anthropic, were run by Anthropic, and have not yet been independently reproduced.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Benchmark&lt;/th&gt;
      &lt;th&gt;Fable 5.1&lt;/th&gt;
      &lt;th&gt;Opus 5&lt;/th&gt;
      &lt;th&gt;Gap&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
&lt;td&gt;Terminal-Bench-Science 0.1&lt;/td&gt;
&lt;td&gt;52.6%&lt;/td&gt;
&lt;td&gt;29.0%&lt;/td&gt;
&lt;td&gt;+23.6&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;AutomationBench&lt;/td&gt;
&lt;td&gt;31.4%&lt;/td&gt;
&lt;td&gt;26.9%&lt;/td&gt;
&lt;td&gt;+4.5&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Humanity’s Last Exam (no tools)&lt;/td&gt;
&lt;td&gt;60.9%&lt;/td&gt;
&lt;td&gt;56.6%&lt;/td&gt;
&lt;td&gt;+4.3&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Terminal-Bench 4.0&lt;/td&gt;
&lt;td&gt;55.8%&lt;/td&gt;
&lt;td&gt;52.3%&lt;/td&gt;
&lt;td&gt;+3.5&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;CursorBench 3.2.0&lt;/td&gt;
&lt;td&gt;73.4%&lt;/td&gt;
&lt;td&gt;70.0%&lt;/td&gt;
&lt;td&gt;+3.4&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;OSWorld 2.0 (partial)&lt;/td&gt;
&lt;td&gt;77.9%&lt;/td&gt;
&lt;td&gt;75.4%&lt;/td&gt;
&lt;td&gt;+2.5&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;OSWorld 2.0 (strict)&lt;/td&gt;
&lt;td&gt;41.7%&lt;/td&gt;
&lt;td&gt;39.6%&lt;/td&gt;
&lt;td&gt;+2.1&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;Humanity’s Last Exam (with tools)&lt;/td&gt;
&lt;td&gt;65.0%&lt;/td&gt;
&lt;td&gt;63.6%&lt;/td&gt;
&lt;td&gt;+1.4&lt;/td&gt;
&lt;/tr&gt;
    &lt;tr&gt;
&lt;td&gt;GDPval-AA v2&lt;/td&gt;
&lt;td&gt;1853&lt;/td&gt;
&lt;td&gt;1824&lt;/td&gt;
&lt;td&gt;+29 Elo&lt;/td&gt;
&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The results tell two different stories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On Terminal-Bench-Science, Fable 5.1 nearly doubles Opus 5. This is a long-horizon, tool-heavy research benchmark where models run terminal experiments over extended periods.&lt;/li&gt;
&lt;li&gt;On the other benchmarks, the advantage ranges from one to five points. A five-point lead on AutomationBench is meaningful, while a 1.4-point lead on Humanity’s Last Exam with tools—or 29 Elo on GDPval—may be smaller than the effect of prompt design and effort settings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Opus 5 launched in July at 52.3% on Terminal-Bench 4.0, ahead of Fable 5’s 42.0%. Fable 5.1 retook the lead at 55.8%, but the current difference is 3.5 points rather than 13.8. The Fable tier’s advantage in agentic coding is real, but narrower than it was in June. The &lt;a href="http://apidog.com/blog/claude-opus-5-vs-fable-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Opus 5 vs. Fable 5 comparison&lt;/a&gt; covers the earlier results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn4ga9b27wnibrb3jnpqn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn4ga9b27wnibrb3jnpqn.png" width="800" height="598"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The pricing math is not simply 2×
&lt;/h2&gt;

&lt;p&gt;Without caching, Fable 5.1 costs exactly twice as much as Opus 5 on every pricing line. Cache reads reverse that relationship: Fable 5.1 costs $0.25, compared with $0.50 for Opus 5.&lt;/p&gt;

&lt;p&gt;The effective multiplier therefore depends on how much of each request is a cached prefix.&lt;/p&gt;

&lt;p&gt;Consider an agentic turn with 150,000 cached tokens, 1,000 uncached input tokens, and 800 output tokens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Opus 5: &lt;code&gt;5(0.001) + 0.5(0.15) + 25(0.0008)&lt;/code&gt; = &lt;code&gt;$0.005 + $0.075 + $0.02 = $0.10&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Fable 5.1: &lt;code&gt;10(0.001) + 0.25(0.15) + 50(0.0008)&lt;/code&gt; = &lt;code&gt;$0.01 + $0.0375 + $0.04 = $0.0875&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On this turn, Fable 5.1 is cheaper.&lt;/p&gt;

&lt;p&gt;Now consider a code review with 30,000 uncached input tokens and 4,000 output tokens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Opus 5: &lt;code&gt;$0.15 + $0.10 = $0.25&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Fable 5.1: &lt;code&gt;$0.30 + $0.20 = $0.50&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here, Fable 5.1 costs exactly twice as much.&lt;/p&gt;

&lt;p&gt;Fable 5.1’s per-turn cost falls below Opus 5’s when cached input tokens exceed roughly 20 times the sum of uncached input tokens and five times output tokens. This is common in prefix-heavy agent loops but impossible for output-heavy workloads. Cache writes also cost twice as much on Fable 5.1, so frequently resetting a cache can eliminate the advantage.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="http://apidog.com/blog/claude-fable-5-1-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Fable 5.1 pricing breakdown&lt;/a&gt; and the &lt;a href="http://apidog.com/blog/claude-opus-5-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Opus 5 pricing breakdown&lt;/a&gt; for the complete tables.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Opus 5 wins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Workloads that can run with thinking disabled.&lt;/strong&gt; Opus 5 accepts &lt;code&gt;thinking: {"type": "disabled"}&lt;/code&gt; at &lt;code&gt;high&lt;/code&gt; effort or below. Fable 5.1 does not. For classification, extraction, and short-answer routes, Opus 5 with thinking disabled—or at &lt;code&gt;low&lt;/code&gt; effort—is cheaper and faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fast mode.&lt;/strong&gt; Opus 5 offers a research-preview fast mode with up to 2.5× the output speed for $10 per million input tokens and $50 per million output tokens. Fable 5.1 has no equivalent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Latency.&lt;/strong&gt; Anthropic lists Fable 5.1 as “slower” and Opus 5 as “moderate.” A difficult Fable 5.1 request at high effort can run for several minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero data retention.&lt;/strong&gt; Opus 5 is available under ZDR. Fable 5.1 is a Covered Model and returns a 400 unless Anthropic expressly authorizes ZDR access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fewer refusals.&lt;/strong&gt; Opus 5 uses cybersecurity-only classifiers. Fable 5.1 also applies bio, frontier LLM development, reasoning extraction, and general-harms classifiers. A benign life-sciences or machine-learning workload may pass on Opus 5 but trigger Fable 5.1. When that happens, Opus 5 is the fallback target.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forced tool use.&lt;/strong&gt; Opus 5 accepts &lt;code&gt;tool_choice&lt;/code&gt; values &lt;code&gt;any&lt;/code&gt; and &lt;code&gt;tool&lt;/code&gt;; Fable 5.1 returns a 400. Integrations that depend on forced calls may need changes before switching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;History editing.&lt;/strong&gt; Opus 5 permits edits to earlier turns. Fable 5.1 invalidates later thinking blocks when earlier history changes. Client-side compaction and per-turn reminder injection therefore require an audit before migration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Fable 5.1 wins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Long-horizon research and terminal agents.&lt;/strong&gt; The 52.6% versus 29.0% result on Terminal-Bench-Science is the largest gap in Anthropic’s table. This is the workload Fable 5.1 was designed for: running experiments, conducting multistep web research, and operating for hours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Business workflow automation.&lt;/strong&gt; Fable 5.1 scores 31.4% versus Opus 5’s 26.9% on AutomationBench, which models end-to-end tasks across applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cached-prefix-heavy agents.&lt;/strong&gt; The $0.25 cache-read price can make Fable 5.1 cheaper per turn when most input tokens come from a reusable prefix.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Knowledge cutoff.&lt;/strong&gt; Fable 5.1’s June 2026 cutoff is one month newer than Opus 5’s May 2026 cutoff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dense-document vision.&lt;/strong&gt; Anthropic identifies improved reading of charts, filings, and tables embedded in PDFs—especially with crop-and-zoom tools—as a Fable 5.1 strength. Opus 5 has not been compared on a published vision benchmark, so test this claim on your own documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tasks Opus 5 fails at &lt;code&gt;xhigh&lt;/code&gt;.&lt;/strong&gt; This is Anthropic’s recommendation: if a task fails your Opus 5 eval at &lt;code&gt;xhigh&lt;/code&gt;, test Fable 5.1 at &lt;code&gt;high&lt;/code&gt; before changing anything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Effort changes the comparison
&lt;/h2&gt;

&lt;p&gt;Both models provide five effort levels. Anthropic specifically claims that Fable 5.1 at &lt;code&gt;low&lt;/code&gt; effort is often competitive with Claude Opus and Claude Sonnet models on cost per task while scoring higher.&lt;/p&gt;

&lt;p&gt;That makes the practical comparison more nuanced than Opus 5 at &lt;code&gt;high&lt;/code&gt; versus Fable 5.1 at &lt;code&gt;high&lt;/code&gt;. For routine work, compare Opus 5 at &lt;code&gt;high&lt;/code&gt; with Fable 5.1 at &lt;code&gt;low&lt;/code&gt; or &lt;code&gt;medium&lt;/code&gt;. Lower effort usually produces fewer output tokens, offsetting Fable 5.1’s higher per-token price.&lt;/p&gt;

&lt;p&gt;The reverse is also true: Fable 5.1’s gains over Fable 5 are largest at &lt;code&gt;xhigh&lt;/code&gt; and &lt;code&gt;max&lt;/code&gt;, where latency and cost are highest. Sweep both models across all relevant effort levels on your own evals before relying on the launch tables. The &lt;a href="http://apidog.com/blog/claude-opus-5-effort-parameter?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Opus 5 effort guide&lt;/a&gt; covers all five levels; the semantics are the same for Fable 5.1.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical decision framework
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start with Opus 5 at &lt;code&gt;high&lt;/code&gt;.&lt;/strong&gt; It is Anthropic’s default recommendation, costs half as much, uses fewer classifiers, and supports ZDR.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raise failing tasks to &lt;code&gt;xhigh&lt;/code&gt;.&lt;/strong&gt; This is cheaper than switching models for every request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Move only the remaining failures to Fable 5.1 at &lt;code&gt;high&lt;/code&gt;.&lt;/strong&gt; Use a per-route policy rather than switching globally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the cache profile.&lt;/strong&gt; If the migrated route uses a large reusable prefix, Fable 5.1 may cost less per turn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit your harness before migrating.&lt;/strong&gt; Forced &lt;code&gt;tool_choice&lt;/code&gt; and history edits both break on Fable 5.1. Use the &lt;a href="http://apidog.com/blog/claude-fable-5-1-migration?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;migration guide&lt;/a&gt; as a checklist.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Run the comparison in Apidog
&lt;/h2&gt;

&lt;p&gt;Create one collection containing your production prompts, with &lt;code&gt;model&lt;/code&gt; configured as an environment variable. Run the collection with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;claude-opus-5&lt;/code&gt; at &lt;code&gt;high&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;claude-opus-5&lt;/code&gt; at &lt;code&gt;xhigh&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;claude-fable-5-1&lt;/code&gt; at &lt;code&gt;high&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;claude-fable-5-1&lt;/code&gt; at &lt;code&gt;low&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For every run, record the response, &lt;code&gt;usage.output_tokens&lt;/code&gt;, and &lt;code&gt;usage.cache_read_input_tokens&lt;/code&gt; on a repeat request. Apply each model’s rates in a post-response script to calculate cost per task, model, and effort level in one table.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; keeps every run in history, so you can repeat the comparison when the next model launches. &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt; to get started.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is Claude Fable 5.1 better than Opus 5?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On every benchmark Anthropic published, yes, with margins ranging from 1.4 points to 23.6 points. The largest gap is on Terminal-Bench-Science; most other results are under five points. These are vendor-run results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Fable 5.1 worth twice the price of Opus 5?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Often, for long-horizon research, terminal agents, business automation, and prefix-heavy loops where cache reads can reduce the per-turn cost. Usually not for output-heavy, latency-sensitive, or classification workloads. Anthropic’s rule is to switch only after Opus 5 at higher effort fails your evals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which is faster, Fable 5.1 or Opus 5?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Opus 5. Anthropic lists its latency as “moderate” versus “slower” for Fable 5.1. Opus 5 also offers a fast mode with up to 2.5× the output speed; Fable 5.1 does not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Opus 5 have the same safety classifiers as Fable 5.1?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Opus 5 uses cyber-only classifiers. Fable 5.1 also applies bio, frontier LLM, reasoning extraction, and general-harms classifiers. When Fable 5.1 refuses a request, Opus 5 is one of the two permitted fallback targets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use Fable 5.1 under zero data retention like Opus 5?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Fable 5.1 requires 30-day retention and is a Covered Model. Opus 5 is available under ZDR.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can a conversation move between Opus 5 and Fable 5.1?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Upward, yes: Fable 5.1 reads Opus 5’s thinking blocks. Downward, the API removes Fable 5.1’s thinking blocks before Opus 5 receives them. Those blocks are unbilled, and Opus 5 replans the turn.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Claude Fable 5.1 vs Fable 5: What Changed and Should You Upgrade?</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Wed, 02 Sep 2026 02:49:02 +0000</pubDate>
      <link>https://dev.to/hassann/claude-fable-51-vs-fable-5-what-changed-and-should-you-upgrade-gd6</link>
      <guid>https://dev.to/hassann/claude-fable-51-vs-fable-5-what-changed-and-should-you-upgrade-gd6</guid>
      <description>&lt;h1&gt;
  
  
  Claude Fable 5.1 vs. Fable 5: Should You Migrate?
&lt;/h1&gt;

&lt;p&gt;Claude Fable 5.1 replaced Fable 5 on September 1, 2026, at the same $10 and $50 per million-token prices. Cache reads dropped from $1 to $0.25 per million tokens, and every benchmark Anthropic published improved. Fable 5 remains available, with Anthropic’s &lt;a href="https://platform.claude.com/docs/en/models/fable-5/overview" rel="noopener noreferrer"&gt;Fable 5 model page&lt;/a&gt; committing to support through at least June 9, 2027. The practical question is whether Fable 5.1’s gains justify the migration work—and whether its breaking changes affect your application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;This guide covers what stayed the same, what improved, what changed, and how to choose by workload. Sources include Anthropic’s &lt;a href="https://www.anthropic.com/claude-fable-and-mythos-5-1" rel="noopener noreferrer"&gt;launch post&lt;/a&gt; and &lt;a href="https://platform.claude.com/docs/en/models/fable-5-1/whats-new-fable-5-1" rel="noopener noreferrer"&gt;What’s new in Claude Fable 5.1&lt;/a&gt;. For the full specification, see &lt;a href="http://apidog.com/blog/what-is-claude-fable-5-1?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;what Claude Fable 5.1 is&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fable 5.1 vs. Fable 5
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Specification&lt;/th&gt;
&lt;th&gt;Claude Fable 5.1&lt;/th&gt;
&lt;th&gt;Claude Fable 5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude-fable-5-1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude-fable-5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Released&lt;/td&gt;
&lt;td&gt;September 1, 2026&lt;/td&gt;
&lt;td&gt;June 9, 2026 (suspended June 12, back July 1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retirement&lt;/td&gt;
&lt;td&gt;Not sooner than September 1, 2027&lt;/td&gt;
&lt;td&gt;Not sooner than June 9, 2027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context / maximum output&lt;/td&gt;
&lt;td&gt;1M / 128K&lt;/td&gt;
&lt;td&gt;1M / 128K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Knowledge cutoff&lt;/td&gt;
&lt;td&gt;June 2026&lt;/td&gt;
&lt;td&gt;January 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input / output price&lt;/td&gt;
&lt;td&gt;$10 / $50&lt;/td&gt;
&lt;td&gt;$10 / $50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache read&lt;/td&gt;
&lt;td&gt;$0.25 per million&lt;/td&gt;
&lt;td&gt;$1.00 per million&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache writes&lt;/td&gt;
&lt;td&gt;$12.50 (5m), $20 (1h)&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch&lt;/td&gt;
&lt;td&gt;$5 / $25&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokenizer&lt;/td&gt;
&lt;td&gt;Same (Opus 4.7 generation)&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thinking&lt;/td&gt;
&lt;td&gt;Adaptive, always on&lt;/td&gt;
&lt;td&gt;Adaptive, always on&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Forced &lt;code&gt;tool_choice&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;td&gt;Accepted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thinking blocks readable by older models&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;History-editing check&lt;/td&gt;
&lt;td&gt;Yes, enforced for accounts created on or after 2026-08-31&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Priority Tier&lt;/td&gt;
&lt;td&gt;Not supported&lt;/td&gt;
&lt;td&gt;Supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per-message effort&lt;/td&gt;
&lt;td&gt;Yes (beta)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Turn-scoped system messages&lt;/td&gt;
&lt;td&gt;Yes (beta)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;thinking.display: "updates"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes (beta)&lt;/td&gt;
&lt;td&gt;Yes (beta)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content provenance&lt;/td&gt;
&lt;td&gt;Text watermark + C2PA on media&lt;/td&gt;
&lt;td&gt;Text watermark&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data retention&lt;/td&gt;
&lt;td&gt;30-day required, Covered Model&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refusal categories&lt;/td&gt;
&lt;td&gt;Same five&lt;/td&gt;
&lt;td&gt;Same five&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What stayed the same
&lt;/h2&gt;

&lt;p&gt;The migration is relatively small for most applications. Both models retain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The same API surface&lt;/li&gt;
&lt;li&gt;A 1M-token context window and 128K maximum output&lt;/li&gt;
&lt;li&gt;The same input, output, cache-write, and batch prices&lt;/li&gt;
&lt;li&gt;The same tokenizer&lt;/li&gt;
&lt;li&gt;A 512-token cache minimum&lt;/li&gt;
&lt;li&gt;Always-on adaptive thinking&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"omitted"&lt;/code&gt; as the default for &lt;code&gt;thinking.display&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;No prefilling&lt;/li&gt;
&lt;li&gt;No sampling parameters&lt;/li&gt;
&lt;li&gt;Mid-conversation system messages&lt;/li&gt;
&lt;li&gt;The same refusal categories and fallback mechanics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anthropic expects existing Fable 5 prompts to work well on Fable 5.1 without modification.&lt;/p&gt;

&lt;p&gt;Existing guidance also remains relevant, including the &lt;a href="http://apidog.com/blog/claude-fable-5-rate-limits?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;rate limits guide&lt;/a&gt;, &lt;a href="http://apidog.com/blog/claude-fable-5-safety-safeguards?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;safeguards explainer&lt;/a&gt;, and &lt;a href="http://apidog.com/blog/claude-fable-5-cloud-availability?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;cloud availability guide&lt;/a&gt;. The models also share one rate-limit pool.&lt;/p&gt;

&lt;h2&gt;
  
  
  What improved
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Benchmark performance
&lt;/h3&gt;

&lt;p&gt;Every benchmark row published by Anthropic improved:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1yar00lo1ftktgrua699.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1yar00lo1ftktgrua699.png" alt="Claude Fable 5.1 benchmark comparison" width="799" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;Fable 5.1&lt;/th&gt;
&lt;th&gt;Fable 5&lt;/th&gt;
&lt;th&gt;Delta&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-Bench-Science 0.1&lt;/td&gt;
&lt;td&gt;52.6%&lt;/td&gt;
&lt;td&gt;24.7%&lt;/td&gt;
&lt;td&gt;+27.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AutomationBench&lt;/td&gt;
&lt;td&gt;31.4%&lt;/td&gt;
&lt;td&gt;17.1%&lt;/td&gt;
&lt;td&gt;+14.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-Bench 4.0&lt;/td&gt;
&lt;td&gt;55.8%&lt;/td&gt;
&lt;td&gt;42.0%&lt;/td&gt;
&lt;td&gt;+13.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GDPval-AA v2&lt;/td&gt;
&lt;td&gt;1853&lt;/td&gt;
&lt;td&gt;1723&lt;/td&gt;
&lt;td&gt;+130 Elo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OSWorld 2.0 (strict)&lt;/td&gt;
&lt;td&gt;41.7%&lt;/td&gt;
&lt;td&gt;36.1%&lt;/td&gt;
&lt;td&gt;+5.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OSWorld 2.0 (partial)&lt;/td&gt;
&lt;td&gt;77.9%&lt;/td&gt;
&lt;td&gt;72.9%&lt;/td&gt;
&lt;td&gt;+5.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Humanity’s Last Exam (no tools)&lt;/td&gt;
&lt;td&gt;60.9%&lt;/td&gt;
&lt;td&gt;57.8%&lt;/td&gt;
&lt;td&gt;+3.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CursorBench 3.2.0&lt;/td&gt;
&lt;td&gt;73.4%&lt;/td&gt;
&lt;td&gt;70.5%&lt;/td&gt;
&lt;td&gt;+2.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Humanity’s Last Exam (with tools)&lt;/td&gt;
&lt;td&gt;65.0%&lt;/td&gt;
&lt;td&gt;63.8%&lt;/td&gt;
&lt;td&gt;+1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The largest gains are on long-horizon agentic tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scientific research in a terminal&lt;/li&gt;
&lt;li&gt;Business workflow automation&lt;/li&gt;
&lt;li&gt;Agentic coding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Knowledge tasks and IDE-style coding show smaller improvements. These are vendor-run results and have not yet been independently reproduced. See the &lt;a href="http://apidog.com/blog/claude-fable-5-1-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;benchmarks breakdown&lt;/a&gt; for a row-by-row analysis.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cache reads cost 75% less
&lt;/h3&gt;

&lt;p&gt;According to the &lt;a href="https://platform.claude.com/docs/en/about-claude/pricing" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt;, cache reads are the most immediate cost improvement for many Fable 5 users.&lt;/p&gt;

&lt;p&gt;A 150,000-token prefix reread on every turn costs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fable 5:&lt;/strong&gt; $0.15 per turn&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fable 5.1:&lt;/strong&gt; $0.0375 per turn&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anthropic estimates that typical workloads become 25% cheaper, with savings reaching 45% for agentic workloads. The &lt;a href="http://apidog.com/blog/claude-fable-5-1-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;pricing breakdown&lt;/a&gt; includes three worked examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fewer safeguard false positives
&lt;/h3&gt;

&lt;p&gt;Anthropic reports that Fable 5.1’s biology classifiers trigger 85% less often on benign elementary biology and medical requests than Fable 5’s did at launch.&lt;/p&gt;

&lt;p&gt;Its cyber safeguards also produce approximately 60% fewer interventions per Claude Code session. Fable 5.1 can identify vulnerabilities in source code that Fable 5 previously declined to analyze. Exploit development remains refused.&lt;/p&gt;

&lt;h3&gt;
  
  
  More useful effort levels
&lt;/h3&gt;

&lt;p&gt;Anthropic says &lt;code&gt;medium&lt;/code&gt; effort on Fable 5.1 roughly matches Fable 5 at lower cost. The biggest quality gains appear at &lt;code&gt;xhigh&lt;/code&gt; and &lt;code&gt;max&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A practical migration strategy is to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Move a Fable 5 workload from &lt;code&gt;high&lt;/code&gt; to Fable 5.1 &lt;code&gt;medium&lt;/code&gt; for similar quality and fewer output tokens.&lt;/li&gt;
&lt;li&gt;Keep &lt;code&gt;high&lt;/code&gt; when you want higher quality than Fable 5 provided.&lt;/li&gt;
&lt;li&gt;Re-run your own evaluation suite rather than assuming effort levels map exactly between models.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Newer knowledge
&lt;/h3&gt;

&lt;p&gt;Fable 5.1 has a June 2026 knowledge cutoff, compared with January 2026 for Fable 5. That adds five months of framework releases, API changes, and model launches.&lt;/p&gt;

&lt;h3&gt;
  
  
  New harness features
&lt;/h3&gt;

&lt;p&gt;Fable 5.1 adds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Per-message effort changes without resetting the cache&lt;/li&gt;
&lt;li&gt;Turn-scoped system messages for per-turn reminders&lt;/li&gt;
&lt;li&gt;Readable progress updates between tool calls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fable 5 supports the last feature through &lt;code&gt;thinking.display: "updates"&lt;/code&gt;; the first two are new.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Forced tool use now returns an error
&lt;/h3&gt;

&lt;p&gt;On Fable 5.1, &lt;code&gt;tool_choice: "any"&lt;/code&gt; and &lt;code&gt;tool_choice: "tool"&lt;/code&gt; return HTTP 400 errors.&lt;/p&gt;

&lt;p&gt;If you used forced tools to guarantee JSON, migrate to either:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool_choice"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"auto"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"output_config"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"json_schema"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"strict"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or use structured outputs directly.&lt;/p&gt;

&lt;p&gt;If your application requires a tool call on a particular turn, add a mid-conversation system message that explicitly requires it. Audit every forced-tool call site before switching models.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thinking blocks are one-way
&lt;/h3&gt;

&lt;p&gt;Fable 5.1 can read thinking blocks created by Fable 5, so conversations can move upward without losing reasoning.&lt;/p&gt;

&lt;p&gt;The reverse is not true. Fable 5 cannot read Fable 5.1 thinking blocks. During a gradual migration, if a router sends a conversation back to Fable 5:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The API drops the incompatible thinking blocks&lt;/li&gt;
&lt;li&gt;The dropped blocks are not billed&lt;/li&gt;
&lt;li&gt;Fable 5 replans the turn&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Account for this behavior in routing and cost estimates.&lt;/p&gt;

&lt;h3&gt;
  
  
  History editing is validated
&lt;/h3&gt;

&lt;p&gt;Fable 5.1 thinking blocks are valid only in the exact conversation that produced them. On accounts created on or after August 31, 2026, the next request fails if your application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Edits an earlier turn&lt;/li&gt;
&lt;li&gt;Rebuilds the system prompt&lt;/li&gt;
&lt;li&gt;Changes the tools array&lt;/li&gt;
&lt;li&gt;Injects or removes per-turn reminders&lt;/li&gt;
&lt;li&gt;Refreshes dates or other dynamic system-prompt content&lt;/li&gt;
&lt;li&gt;Compacts the client-side history while replaying recent turns verbatim&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run the three-step history check before migrating. Fix every &lt;code&gt;prefix_binding_mismatch&lt;/code&gt; error. The &lt;a href="http://apidog.com/blog/claude-fable?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;preserved thinking guide&lt;/a&gt; provides a complete checklist.&lt;/p&gt;

&lt;h3&gt;
  
  
  Priority Tier is unavailable
&lt;/h3&gt;

&lt;p&gt;Fable 5.1 does not support Priority Tier. If your enterprise workload depends on guaranteed capacity, remain on Fable 5 until Anthropic adds support.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agent loops behave differently
&lt;/h3&gt;

&lt;p&gt;At some effort levels, Fable 5.1 may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Issue one tool call per turn instead of batching several&lt;/li&gt;
&lt;li&gt;Write fewer progress updates&lt;/li&gt;
&lt;li&gt;Answer from memory more often instead of searching at &lt;code&gt;low&lt;/code&gt; effort&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each behavior can be adjusted with a prompt change. See the &lt;a href="http://apidog.com/blog/prompting-claude-fable-5-1?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;prompting guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Migration decision rule
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Upgrade now
&lt;/h3&gt;

&lt;p&gt;Upgrade immediately for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Long-running agentic coding&lt;/li&gt;
&lt;li&gt;Multistep research&lt;/li&gt;
&lt;li&gt;Document generation&lt;/li&gt;
&lt;li&gt;Spreadsheet generation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These workloads benefit from the largest benchmark gains, cheaper cache reads, and fewer safeguard false positives. Cognition also said it was moving its Devin traffic to Fable 5.1 on launch day.&lt;/p&gt;

&lt;h3&gt;
  
  
  Upgrade after auditing your harness
&lt;/h3&gt;

&lt;p&gt;If your application builds the &lt;code&gt;messages&lt;/code&gt; array manually and does more than append new turns, audit history handling first:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Replay conversations with preserved thinking blocks.&lt;/li&gt;
&lt;li&gt;Test system-prompt and tool-array changes.&lt;/li&gt;
&lt;li&gt;Fix every &lt;code&gt;prefix_binding_mismatch&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Re-run production-like evaluations.&lt;/li&gt;
&lt;li&gt;Migrate only after the checks pass.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Move from &lt;code&gt;high&lt;/code&gt; to &lt;code&gt;medium&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;If Fable 5 at &lt;code&gt;high&lt;/code&gt; handles routine tasks well, test Fable 5.1 at &lt;code&gt;medium&lt;/code&gt;. You may get similar quality with fewer output tokens and lower total cost.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stay on Fable 5
&lt;/h3&gt;

&lt;p&gt;Stay on Fable 5 when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Priority Tier is required&lt;/li&gt;
&lt;li&gt;The workload is output-heavy with little cached input&lt;/li&gt;
&lt;li&gt;Migration overhead exceeds the expected quality improvement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fable 5 is supported until at least June 9, 2027, on Anthropic-operated platforms. Bedrock and Google Cloud may set different retirement dates.&lt;/p&gt;

&lt;h3&gt;
  
  
  Consider Opus 5
&lt;/h3&gt;

&lt;p&gt;If Fable 5 was already more capable than your workload required, evaluate Opus 5 instead. Anthropic recommends starting with Opus 5 and moving up only when it falls short. The &lt;a href="http://apidog.com/blog/claude-fable-5-1-vs-opus-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Fable 5.1 vs. Opus 5 comparison&lt;/a&gt; covers the option at half the price.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test both models in Apidog
&lt;/h2&gt;

&lt;p&gt;The most reliable migration decision comes from your own production-like prompts.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Save your ten hardest production prompts as requests.&lt;/li&gt;
&lt;li&gt;Store the model ID in an environment variable.&lt;/li&gt;
&lt;li&gt;Run the collection against &lt;code&gt;claude-fable-5&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run it again against &lt;code&gt;claude-fable-5-1&lt;/code&gt; at the same effort level.&lt;/li&gt;
&lt;li&gt;Compare the response text, &lt;code&gt;usage.output_tokens&lt;/code&gt;, and &lt;code&gt;usage.cache_read_input_tokens&lt;/code&gt; on the second run.&lt;/li&gt;
&lt;li&gt;Add a forced &lt;code&gt;tool_choice&lt;/code&gt; request to confirm that your test suite catches the new 400 error.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqrymvg5cuxynv98hh4h5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqrymvg5cuxynv98hh4h5.png" alt="Testing Claude Fable models in Apidog" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt; to get started. The &lt;a href="http://apidog.com/blog/claude-fable-5-1-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API walkthrough&lt;/a&gt; includes the request bodies.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is Claude Fable 5.1 a new model or an update to Fable 5?
&lt;/h3&gt;

&lt;p&gt;It is a new model with its own ID, &lt;code&gt;claude-fable-5-1&lt;/code&gt;, and its own retirement date. It uses the same tokenizer and per-token pricing as Fable 5 and is trained on data through June 2026.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Fable 5.1 cost more than Fable 5?
&lt;/h3&gt;

&lt;p&gt;No. Input and output pricing remains $10 and $50 per million tokens. Cache writes and batch rates are also unchanged. Cache reads are cheaper: $0.25 per million tokens instead of $1.&lt;/p&gt;

&lt;h3&gt;
  
  
  Will my Fable 5 code work on Fable 5.1?
&lt;/h3&gt;

&lt;p&gt;Most of it will. Forced &lt;code&gt;tool_choice&lt;/code&gt; returns a 400, and applications that edit conversation history between requests can invalidate thinking blocks on accounts created on or after August 31, 2026. The remaining API behavior carries over.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Fable 5 being retired?
&lt;/h3&gt;

&lt;p&gt;Not yet. Anthropic will not retire Fable 5 before June 9, 2027, on Anthropic-operated platforms. Bedrock and Google Cloud set their own dates.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which model is better at coding?
&lt;/h3&gt;

&lt;p&gt;On Anthropic’s benchmarks, Fable 5.1 performs better:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terminal-Bench 4.0: 55.8% vs. 42.0%&lt;/li&gt;
&lt;li&gt;CursorBench 3.2.0: 73.4% vs. 70.5%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agentic-terminal improvement is large, while the IDE-style improvement is smaller. Both results are vendor-run.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Fable 5.1 refuse less often?
&lt;/h3&gt;

&lt;p&gt;Anthropic reports 85% fewer biology false positives and approximately 60% fewer cyber interventions per Claude Code session. The refusal categories remain the same, so keep your refusal handling and fallback logic in place.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Use the Claude Fable 5.1 API (Step-by-Step with Apidog)</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Wed, 02 Sep 2026 02:43:17 +0000</pubDate>
      <link>https://dev.to/hassann/how-to-use-the-claude-fable-51-api-step-by-step-with-apidog-37ba</link>
      <guid>https://dev.to/hassann/how-to-use-the-claude-fable-51-api-step-by-step-with-apidog-37ba</guid>
      <description>&lt;h1&gt;
  
  
  Claude Fable 5.1 API: A Practical Guide to Requests, Effort, Tools, Fallbacks, and Caching
&lt;/h1&gt;

&lt;p&gt;Claude Fable 5.1 shipped on September 1, 2026. Its API model ID is exactly &lt;code&gt;claude-fable-5-1&lt;/code&gt;—there is no date suffix. Pricing matches Fable 5 at $10 per million input tokens and $50 per million output tokens, while cache reads now cost $0.25 per million. It also introduces three breaking changes that Fable 5 does not have.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;This guide covers the complete API workflow: creating a key, sending a request, controlling effort, streaming, using tools without forced &lt;code&gt;tool_choice&lt;/code&gt;, handling refusals, displaying progress updates, and verifying cache usage. Every example uses plain HTTP with JSON, so you can build and debug it in &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; before moving it into application code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy560xr9roh4k6l85oqbl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy560xr9roh4k6l85oqbl.png" alt="Claude Fable 5.1 API workflow" width="800" height="833"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are migrating an existing Fable 5 or Opus 5 service, read the &lt;a href="http://apidog.com/blog/claude-fable-5-1-migration?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;full migration guide&lt;/a&gt;. For an overview, start with &lt;a href="http://apidog.com/blog/what-is-claude-fable-5-1?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;What Claude Fable 5.1 is&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before your first call: three causes of &lt;code&gt;400&lt;/code&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Thinking is adaptive only
&lt;/h3&gt;

&lt;p&gt;Fable 5.1 runs adaptive thinking on every request. Omit &lt;code&gt;thinking&lt;/code&gt;, or send:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"adaptive"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These configurations return &lt;code&gt;400&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"disabled"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"budget_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;N&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are migrating from Opus 5, where disabled thinking was accepted at high effort or below, remove that setting and control spend with &lt;code&gt;output_config.effort&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Forced tool use is unsupported
&lt;/h3&gt;

&lt;p&gt;These values return an error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"any"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;tool_choice: {"type": "auto"}&lt;/code&gt; and follow the tool-use pattern below.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Your organization needs 30-day data retention
&lt;/h3&gt;

&lt;p&gt;Fable 5.1 is a Covered Model. Requests from an organization or workspace configured for zero data retention return:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;400 invalid_request_error
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the request body looks correct, check retention settings first.&lt;/p&gt;

&lt;p&gt;See Anthropic’s &lt;a href="https://platform.claude.com/docs/en/models/fable-5-1/whats-new-fable-5-1" rel="noopener noreferrer"&gt;What’s new in Claude Fable 5.1&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Get an API key
&lt;/h2&gt;

&lt;p&gt;Sign in to the Claude Console, open your organization settings, and create an API key. Copy it immediately because it cannot be read again later.&lt;/p&gt;

&lt;p&gt;Export it instead of pasting it into source code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"sk-ant-..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Apidog, save it as an environment variable named &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; and reference it as &lt;code&gt;{{ANTHROPIC_API_KEY}}&lt;/code&gt; in the &lt;code&gt;x-api-key&lt;/code&gt; header. This keeps the key out of saved request bodies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Send your first request
&lt;/h2&gt;

&lt;p&gt;Create a &lt;code&gt;POST&lt;/code&gt; request to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://api.anthropic.com/v1/messages
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use these headers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;x-[REDACTED CREDENTIAL]
anthropic-version: 2023-06-01
content-type: application/json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  cURL
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.anthropic.com/v1/messages &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"x-[REDACTED CREDENTIAL]IC_API_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"anthropic-version: 2023-06-01"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"content-type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "claude-fable-5-1",
    "max_tokens": 16000,
    "messages": [
      {
        "role": "user",
        "content": "Explain the difference between idempotent and safe HTTP methods, with one example each."
      }
    ]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Python SDK
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;anthropic&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;anthropic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Anthropic&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-fable-5-1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain the difference between idempotent and safe HTTP methods, with one example each.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stop_reason&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;refusal&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;declined:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stop_details&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stop_details&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check &lt;code&gt;stop_reason&lt;/code&gt; before reading &lt;code&gt;content&lt;/code&gt;. A classifier refusal returns HTTP &lt;code&gt;200&lt;/code&gt; with an empty content array.&lt;/p&gt;

&lt;p&gt;Also give &lt;code&gt;max_tokens&lt;/code&gt; enough room. It caps thinking tokens and response tokens together, and thinking is always enabled. A value tuned for a no-thinking model may truncate the response.&lt;/p&gt;

&lt;p&gt;By default, the response includes a thinking block with empty text because its display mode is &lt;code&gt;"omitted"&lt;/code&gt;. This is expected. Pass the block back unchanged on the next turn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Control cost and depth with effort
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;output_config.effort&lt;/code&gt; is the main control for Fable 5.1. It accepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;low&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;medium&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;high&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xhigh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;max&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The default is &lt;code&gt;high&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"claude-fable-5-1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"max_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;16000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"output_config"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"effort"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"medium"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Summarize this changelog in five bullets."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Anthropic recommends starting at &lt;code&gt;high&lt;/code&gt;, then evaluating every level against your own test set. Repeat the evaluation when migrating from Fable 5 because effort levels do not represent the same amount of thinking across models.&lt;/p&gt;

&lt;p&gt;Anthropic reports that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;medium&lt;/code&gt; can roughly match Fable 5 at lower cost.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;low&lt;/code&gt; is often competitive with Opus and Sonnet on cost per task.&lt;/li&gt;
&lt;li&gt;At &lt;code&gt;low&lt;/code&gt;, the model calls search and retrieval tools less often and relies more on memory.&lt;/li&gt;
&lt;li&gt;At &lt;code&gt;xhigh&lt;/code&gt; and &lt;code&gt;max&lt;/code&gt;, it may draft a long deliverable during thinking and then write it again. Allocate &lt;code&gt;max_tokens&lt;/code&gt; accordingly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Change effort mid-conversation
&lt;/h3&gt;

&lt;p&gt;This beta feature changes effort from the next user turn without invalidating the cached prefix. It requires:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mid-conversation-output-config-2026-07-01
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the &lt;code&gt;client.beta.messages&lt;/code&gt; namespace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-fable-5-1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;output_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;effort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;high&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;betas&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mid-conversation-output-config-2026-07-01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Plan a migration from SQLite to PostgreSQL in three short steps.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;assistant&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1. Export the SQLite data. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2. Create the PostgreSQL schema. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3. Import the data and verify row counts.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
            &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;output_config&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;effort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;low&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Summarize the plan in one sentence.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lowering effort this way is reliable. For increases, use larger jumps such as &lt;code&gt;low&lt;/code&gt; to &lt;code&gt;xhigh&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://platform.claude.com/docs/en/build-with-claude/effort" rel="noopener noreferrer"&gt;effort parameter documentation&lt;/a&gt; and the &lt;a href="http://apidog.com/blog/claude-opus-5-effort-parameter?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Opus 5 effort parameter guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Stream long responses
&lt;/h2&gt;

&lt;p&gt;At higher effort, difficult turns can run for several minutes. Stream anything that may be long. The SDK requires streaming for &lt;code&gt;max_tokens&lt;/code&gt; values near the 128,000-token cap to avoid HTTP timeouts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-fable-5-1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;64000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write a test plan for a rate-limited public API.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text_stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;flush&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;final&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_final_message&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;final&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stop_reason&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;final&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;output_tokens&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apidog renders streaming responses as they arrive, making it easy to measure how long a high-effort turn spends thinking before the first text token.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Use tools without forcing a call
&lt;/h2&gt;

&lt;p&gt;Tool definitions work the same way as in Fable 5. The difference is that Fable 5.1 does not support forced tool calls. A forced call can skip thinking and cause the model to write its working process into the arguments, so &lt;code&gt;tool_choice: {"type": "tool", ...}&lt;/code&gt; returns &lt;code&gt;400&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Use three safeguards instead:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Keep &lt;code&gt;tool_choice&lt;/code&gt; set to &lt;code&gt;auto&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Name the tool explicitly in the instruction.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;strict: true&lt;/code&gt;, and use &lt;code&gt;additionalProperties: false&lt;/code&gt; in the schema.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;record_summary_tool&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;record_summary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Record the structured summary of the document.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;strict&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input_schema&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;object&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;properties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;required&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;additionalProperties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-fable-5-1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;record_summary_tool&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;tool_choice&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Summarize: The meeting moved to Thursday. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Call the record_summary tool with your result.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
            &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For JSON extraction, use structured outputs with &lt;code&gt;output_config.format&lt;/code&gt; instead of a tool.&lt;/p&gt;

&lt;p&gt;If your application requires a specific tool call during a multi-turn conversation, append a system message after the latest user turn that names the required tool. Keep that message in the conversation history. &lt;code&gt;tool_choice: {"type": "none"}&lt;/code&gt; still works when a turn must not call tools.&lt;/p&gt;

&lt;p&gt;The agentic loop remains the same:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Wait for &lt;code&gt;stop_reason == "tool_use"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Execute every &lt;code&gt;tool_use&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;Return all &lt;code&gt;tool_result&lt;/code&gt; blocks in one user message.&lt;/li&gt;
&lt;li&gt;Append the assistant turn exactly as returned, including thinking blocks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For long loops, Fable 5.1 may issue one independent read per turn instead of batching several as Fable 5 did. After each tool-result message, add this turn-scoped system nudge:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;First privately list what you need next; then request every item that doesn’t depend on another’s result in this one response.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Use the &lt;code&gt;mid-conversation-system-clear-at-2026-08-21&lt;/code&gt; beta header and &lt;code&gt;clear_at: "next_user_message"&lt;/code&gt;. Keep earlier copies in the history.&lt;/p&gt;

&lt;p&gt;For schema details, see Anthropic’s &lt;a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/strict-tool-use" rel="noopener noreferrer"&gt;strict tool use guide&lt;/a&gt; and this &lt;a href="http://apidog.com/blog/claude-fable-5-1-preserved-thinking?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;preserved thinking guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Handle refusals with fallbacks
&lt;/h2&gt;

&lt;p&gt;Fable 5.1 runs safety classifiers. A declined request returns HTTP &lt;code&gt;200&lt;/code&gt; with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;stop_reason: "refusal"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;stop_details.category&lt;/code&gt; value can be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cyber&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bio&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;frontier_llm&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reasoning_extraction&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;general_harms&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A refusal before any output is not billed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enable server-side fallbacks
&lt;/h3&gt;

&lt;p&gt;Use &lt;code&gt;fallbacks: "default"&lt;/code&gt; with this beta header:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server-side-fallback-2026-07-01
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Fable 5.1, permitted fallback targets are &lt;code&gt;claude-opus-4-8&lt;/code&gt; and &lt;code&gt;claude-opus-5&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-fable-5-1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;fallbacks&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;default&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;betas&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;server-side-fallback-2026-07-01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Audit this authentication middleware for logic bugs.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;fallback_ran&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fallback_message&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iterations&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;fallback_ran&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stop_reason&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;refusal&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;served by&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The top-level &lt;code&gt;model&lt;/code&gt; field identifies the serving model. A fallback content block marks the handoff. Preserve that block when echoing the turn back.&lt;/p&gt;

&lt;p&gt;Limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;fallbacks&lt;/code&gt; is rejected on the Batches API.&lt;/li&gt;
&lt;li&gt;It is unavailable on Bedrock, Google Cloud, and Foundry.&lt;/li&gt;
&lt;li&gt;For those platforms, register the SDK’s &lt;code&gt;BetaRefusalFallbackMiddleware&lt;/code&gt; on the client.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See the &lt;a href="http://apidog.com/blog/claude-fable-5-fallbacks-parameter?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;refusal handling and fallbacks guide&lt;/a&gt; for billing, sticky routing, and manual retry behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Display progress updates
&lt;/h2&gt;

&lt;p&gt;During long tool workflows, Fable 5.1 can emit short notes about what it found and what it will do next. Each note appears in its own thinking block immediately before a tool call.&lt;/p&gt;

&lt;p&gt;To receive these notes as text, set:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"thinking"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"adaptive"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"display"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"updates"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also send the beta header:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;thinking-display-updates-2026-08-18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"claude-fable-5-1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"max_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;16000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"thinking"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"adaptive"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"display"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"updates"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tools"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Review the PRs open against our billing service."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Render thinking blocks with non-empty text as status lines while keeping the reasoning hidden. Fable 5.1 produces fewer updates than Fable 5, so remove prompt instructions that tell the model to hold findings for the final response if your UI depends on narration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 8: Verify the &lt;code&gt;$0.25&lt;/code&gt; cache-read rate
&lt;/h2&gt;

&lt;p&gt;Prompt caching is where Fable 5.1’s pricing changes matter most. Cache a stable prefix and inspect the usage object:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-fable-5-1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;LONG_STABLE_SYSTEM_PROMPT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cache_control&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ephemeral&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Which endpoints in the spec lack an error schema?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;u&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;input_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cache_creation_input_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cache_read_input_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First request: &lt;code&gt;cache_creation_input_tokens&lt;/code&gt; is nonzero and billed at $12.50 per million for the five-minute TTL.&lt;/li&gt;
&lt;li&gt;Second request within five minutes: &lt;code&gt;cache_read_input_tokens&lt;/code&gt; is nonzero and billed at $0.25 per million.&lt;/li&gt;
&lt;li&gt;Minimum cacheable [REDACTED PROMPT]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If cache reads remain zero across identical requests, the prefix is changing. Check for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timestamps in the system prompt&lt;/li&gt;
&lt;li&gt;Unsorted JSON&lt;/li&gt;
&lt;li&gt;A changing tools array&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because a cache miss costs 40 times more than a hit, keeping the cache warm matters more than it did on Fable 5. Per-message effort and turn-scoped system messages also let you change behavior without resetting the prefix.&lt;/p&gt;

&lt;p&gt;Edits that reset the cache—such as rebuilding the system prompt or changing earlier turns—also invalidate thinking blocks. Append-only conversation handling therefore protects both the cache and thinking state.&lt;/p&gt;

&lt;p&gt;See Anthropic’s &lt;a href="https://platform.claude.com/docs/en/build-with-claude/prompt-caching" rel="noopener noreferrer"&gt;prompt caching documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test the complete flow in Apidog
&lt;/h2&gt;

&lt;p&gt;Save each step as a request in one Apidog collection:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic request&lt;/li&gt;
&lt;li&gt;Effort variants&lt;/li&gt;
&lt;li&gt;Streaming&lt;/li&gt;
&lt;li&gt;Tool loop&lt;/li&gt;
&lt;li&gt;Refusal fallback&lt;/li&gt;
&lt;li&gt;Cache verification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use environment variables for the API key and model. Switching the collection between &lt;code&gt;claude-fable-5&lt;/code&gt; and &lt;code&gt;claude-fable-5-1&lt;/code&gt; should require only one change.&lt;/p&gt;

&lt;p&gt;Add assertions for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;stop_reason&lt;/code&gt; is not &lt;code&gt;refusal&lt;/code&gt; on benign test prompts.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;usage.cache_read_input_tokens &amp;gt; 0&lt;/code&gt; on the second cache request.&lt;/li&gt;
&lt;li&gt;No &lt;code&gt;input_transformations&lt;/code&gt; entry has &lt;code&gt;reason: "prefix_binding_mismatch"&lt;/code&gt; when using the thinking-binding header.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run the collection before and after changing your harness. &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt; to get started; the same collection can run in CI through the Apidog CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Errors and gotchas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;400 tool_choice: type "tool" and "any" are not supported for this model&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Use &lt;code&gt;auto&lt;/code&gt;, explicitly name the tool in the instruction, and set &lt;code&gt;strict: true&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;400&lt;/code&gt; for &lt;code&gt;{"type": "disabled"}&lt;/code&gt; in &lt;code&gt;thinking&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Remove the field and lower &lt;code&gt;output_config.effort&lt;/code&gt; instead.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;400 invalid_request_error&lt;/code&gt; with an otherwise valid body&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Verify that the organization or workspace has 30-day retention.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;400 Invalid signature in thinking block&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The block belongs to a different conversation. Your code changed an earlier turn, the system prompt, or the tools array.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Empty thinking text&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This is expected with &lt;code&gt;display: "omitted"&lt;/code&gt;. Use &lt;code&gt;"summarized"&lt;/code&gt; or &lt;code&gt;"updates"&lt;/code&gt; when you need visible output.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cache reads remain zero&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Audit the prefix for timestamps, unsorted objects, and changing tool definitions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Priority Tier validation fails&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Fable 5.1 does not support Priority Tier. Fable 5 does.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is the model ID for the Claude Fable 5.1 API?
&lt;/h3&gt;

&lt;p&gt;Use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude-fable-5-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Amazon Bedrock, use &lt;code&gt;anthropic.claude-fable-5-1&lt;/code&gt;. Google Cloud, Microsoft Foundry, and Claude Platform on AWS use &lt;code&gt;claude-fable-5-1&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need a beta header?
&lt;/h3&gt;

&lt;p&gt;No. The base model, adaptive thinking, effort, tools, and caching work with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;anthropic-version: 2023-06-01
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Beta headers are required only for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Per-message effort&lt;/li&gt;
&lt;li&gt;Turn-scoped system messages&lt;/li&gt;
&lt;li&gt;Progress updates&lt;/li&gt;
&lt;li&gt;Server-side fallbacks&lt;/li&gt;
&lt;li&gt;Thinking-binding controls&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Can I force a tool call?
&lt;/h3&gt;

&lt;p&gt;No. &lt;code&gt;tool_choice: "any"&lt;/code&gt; and &lt;code&gt;tool_choice: "tool"&lt;/code&gt; return &lt;code&gt;400&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;auto&lt;/code&gt;, name the tool in the prompt, and set &lt;code&gt;strict: true&lt;/code&gt; for schema-valid arguments. For JSON extraction, use structured outputs.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the maximum output?
&lt;/h3&gt;

&lt;p&gt;The Messages API supports up to 128,000 tokens. Stream large responses. The 300,000-token Batch API beta is not listed for Fable 5.1.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I verify cheaper cache reads?
&lt;/h3&gt;

&lt;p&gt;Inspect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;usage.cache_read_input_tokens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Fable 5.1, cache reads cost $0.25 per million tokens, compared with $1 on Fable 5 and $0.50 on Opus 5. See the &lt;a href="http://apidog.com/blog/claude-fable-5-1-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;pricing breakdown&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does the Fable 5 API guide still apply?
&lt;/h3&gt;

&lt;p&gt;Mostly. The &lt;a href="http://apidog.com/blog/how-to-use-claude-fable-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Fable 5 API guide&lt;/a&gt; covers the same endpoint, but its forced tool-use examples return &lt;code&gt;400&lt;/code&gt; on Fable 5.1. It also predates per-message effort and progress updates.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Test OAuth 2.0 APIs in Apidog (Authorization Code, Client Credentials, and Token Refresh)</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Mon, 31 Aug 2026 11:20:26 +0000</pubDate>
      <link>https://dev.to/hassann/how-to-test-oauth-20-apis-in-apidog-authorization-code-client-credentials-and-token-refresh-3dd0</link>
      <guid>https://dev.to/hassann/how-to-test-oauth-20-apis-in-apidog-authorization-code-client-credentials-and-token-refresh-3dd0</guid>
      <description>&lt;p&gt;Every API team hits the same wall: endpoints work in isolation, then OAuth 2.0 enters the picture and half the test suite starts returning &lt;code&gt;401&lt;/code&gt;. Suddenly, you’re juggling authorization servers, short-lived access tokens, and manually copying tokens from &lt;code&gt;curl&lt;/code&gt; responses into headers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The solution isn’t skipping authentication in your tests. It’s making token handling part of test setup. This guide covers the two OAuth flows you’ll use most often:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authorization code with PKCE&lt;/strong&gt; for APIs acting on behalf of a user&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client credentials&lt;/strong&gt; for machine-to-machine calls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a complete overview of OAuth grants, see &lt;a href="http://apidog.com/blog/oauth-2-flows?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;OAuth 2.0 flows overview&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You’ll also learn how to configure OAuth 2.0 in &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;, reuse tokens, refresh expired tokens, inherit authentication at the folder level, and test authentication failures.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two OAuth flows that matter for API testing
&lt;/h2&gt;

&lt;p&gt;OAuth 2.0 defines several grant types, but day-to-day API testing usually centers on one question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Does the API act on behalf of a user or a service?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Authorization code flow with PKCE
&lt;/h3&gt;

&lt;p&gt;The authorization code flow obtains a token tied to a user:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The client redirects the user to the authorization server.&lt;/li&gt;
&lt;li&gt;The user logs in and grants consent.&lt;/li&gt;
&lt;li&gt;The authorization server redirects back with a one-time code.&lt;/li&gt;
&lt;li&gt;The client exchanges the code for an access token at the token endpoint.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://datatracker.ietf.org/doc/html/rfc6749" rel="noopener noreferrer"&gt;RFC 6749&lt;/a&gt; defines this flow in section 4.1.&lt;/p&gt;

&lt;p&gt;PKCE (Proof Key for Code Exchange, &lt;a href="https://datatracker.ietf.org/doc/html/rfc7636" rel="noopener noreferrer"&gt;RFC 7636&lt;/a&gt;) protects the code exchange. The client generates a random verifier, sends a hashed challenge with the authorization request, then proves possession of the verifier when redeeming the code. An attacker who intercepts the code cannot use it.&lt;/p&gt;

&lt;p&gt;PKCE was originally designed for mobile apps, but &lt;a href="https://oauth.net/2/pkce/" rel="noopener noreferrer"&gt;oauth.net&lt;/a&gt; recommends it for every authorization code exchange, including confidential clients.&lt;/p&gt;

&lt;p&gt;Use this flow when endpoint behavior depends on user identity, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET /orders&lt;/code&gt; returning only the caller’s orders&lt;/li&gt;
&lt;li&gt;Role-protected admin endpoints&lt;/li&gt;
&lt;li&gt;Per-user rate limits&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Client credentials flow
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://oauth.net/2/grant-types/client-credentials/" rel="noopener noreferrer"&gt;OAuth 2.0 client credentials grant&lt;/a&gt; skips the user. The client authenticates with its own ID and secret and receives a token representing the application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://auth.example.com/oauth/token &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nv"&gt;grant_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;client_credentials &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nv"&gt;client_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;orders_service &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;REDACTED CREDENTIAL] &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nv"&gt;scope&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"orders:read orders:write"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use client credentials for machine-to-machine APIs, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Internal microservices&lt;/li&gt;
&lt;li&gt;Cron jobs&lt;/li&gt;
&lt;li&gt;CI pipelines calling deployment APIs&lt;/li&gt;
&lt;li&gt;Most automated test suites&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your test environment can provision a test client, use client credentials unless user identity is the behavior under test.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure OAuth 2.0 authentication in Apidog
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; treats OAuth 2.0 as a first-class authentication type. Configure it once in the &lt;strong&gt;Auth&lt;/strong&gt; tab for a request or folder, and Apidog handles token retrieval, attachment, and refresh.&lt;/p&gt;

&lt;p&gt;Supported grant types include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authorization Code&lt;/li&gt;
&lt;li&gt;Authorization Code (With PKCE)&lt;/li&gt;
&lt;li&gt;Client Credentials&lt;/li&gt;
&lt;li&gt;Password Credentials&lt;/li&gt;
&lt;li&gt;Implicit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The examples below use a fictional order-management API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure client credentials
&lt;/h3&gt;

&lt;p&gt;Open a request—or preferably its folder—set the authentication type to &lt;strong&gt;OAuth 2.0&lt;/strong&gt;, and select &lt;strong&gt;Client Credentials&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Enter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Access Token URL:&lt;/strong&gt; &lt;code&gt;https://auth.example.com/oauth/token&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client ID:&lt;/strong&gt; &lt;code&gt;orders_service&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;**Client [REDACTED CREDENTIAL] Your provisioned secret&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope:&lt;/strong&gt; &lt;code&gt;orders:read orders:write&lt;/code&gt; under advanced options&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apidog can send credentials in either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Basic Auth header&lt;/li&gt;
&lt;li&gt;The request body&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Match the option expected by your authorization server. Auth0 and Okta accept both, while some internal authorization servers only parse credentials from the body.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Get Token&lt;/strong&gt;. Apidog calls the token endpoint, stores the response, and displays the token and validity period. Subsequent requests automatically send:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;[REDACTED CREDENTIAL] &amp;lt;access-token&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No copy-paste or &lt;code&gt;{{token}}&lt;/code&gt; variable plumbing is required.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure authorization code with PKCE
&lt;/h3&gt;

&lt;p&gt;For user-context testing, select &lt;strong&gt;Authorization Code (With PKCE)&lt;/strong&gt;. In Apidog, PKCE is a separate grant option rather than a checkbox.&lt;/p&gt;

&lt;p&gt;Enter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auth URL:&lt;/strong&gt; &lt;code&gt;https://auth.example.com/oauth/authorize&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access Token URL:&lt;/strong&gt; &lt;code&gt;https://auth.example.com/oauth/token&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Callback URL:&lt;/strong&gt; The redirect URI registered with your provider&lt;/li&gt;
&lt;li&gt;**Client ID and Client [REDACTED CREDENTIAL] From your OAuth app registration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click &lt;strong&gt;Get Token&lt;/strong&gt;. Apidog opens a browser window to the login page. Sign in with your test user, approve the consent screen, and Apidog stores the returned token in the same managed token slot.&lt;/p&gt;

&lt;p&gt;If your provider returns an OpenID Connect ID token alongside the access token, use &lt;strong&gt;Token Type Used&lt;/strong&gt; to choose which token Apidog attaches. This is useful when the API validates ID tokens.&lt;/p&gt;

&lt;p&gt;Create a dedicated test user for each role you need to cover, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buyer&lt;/li&gt;
&lt;li&gt;Administrator&lt;/li&gt;
&lt;li&gt;Read-only auditor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fetching a token for each user and rerunning the same scenario is a fast way to verify role-based access rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reuse and automatically refresh tokens
&lt;/h3&gt;

&lt;p&gt;Access tokens commonly expire within an hour. An expired token should not turn into a mysterious or flaky test failure.&lt;/p&gt;

&lt;p&gt;When the authorization server issues a refresh token, Apidog automatically refreshes the access token after expiry. This capability shipped in the &lt;a href="http://apidog.com/blog/apidog-june-updates-ai-powered-cli-workflows-smoother-imports-oauth-2-auto-refresh?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;June update&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Apidog uses the refresh token to request a new access token and replaces the stored token before sending the request. If your provider separates refresh operations into another endpoint, configure a custom refresh token URL in advanced settings.&lt;/p&gt;

&lt;p&gt;Client credentials flows often do not return refresh tokens because the client can authenticate again at any time. In that case:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Get Token&lt;/strong&gt; to request a new token&lt;/li&gt;
&lt;li&gt;Configure scheduled or CI runs to request a token at the beginning of each run&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Inherit authentication at the folder level
&lt;/h3&gt;

&lt;p&gt;Configuring OAuth separately on every request creates unnecessary maintenance. Instead, set OAuth 2.0 on a folder and let child requests inherit the configuration.&lt;/p&gt;

&lt;p&gt;For example, configure OAuth once on an &lt;strong&gt;Orders API&lt;/strong&gt; folder. Every request inside it—including requests added later—uses the same managed token.&lt;/p&gt;

&lt;p&gt;Folder-level authentication is especially useful for multi-step scenarios:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST /carts
POST /carts/{id}/items
POST /orders
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All steps share one token and one configuration. Automatic refresh handles token expiry during the scenario, and rotating a client secret requires updating only the folder instead of dozens of requests.&lt;/p&gt;

&lt;p&gt;Individual requests can override the inherited configuration, which is useful for negative tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test OAuth failure paths
&lt;/h2&gt;

&lt;p&gt;Happy-path tests verify that your token pipeline works. Failure-path tests verify that your API enforces authentication and authorization.&lt;/p&gt;

&lt;p&gt;For a refresher on status-code behavior, see &lt;a href="http://apidog.com/blog/api-key-vs-bearer-token?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API keys and Bearer [REDACTED]&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expired or missing [REDACTED CREDENTIAL] &lt;code&gt;401&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Duplicate a request and override its inherited authentication with either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No authentication&lt;/li&gt;
&lt;li&gt;A hardcoded expired token, such as &lt;code&gt;Bearer [REDACTED]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assert that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The status code is &lt;code&gt;401&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;WWW-Authenticate&lt;/code&gt; response header is present&lt;/li&gt;
&lt;li&gt;The response body does not expose stack traces or internal hostnames&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A &lt;code&gt;200&lt;/code&gt; response is a critical bug. A &lt;code&gt;403&lt;/code&gt; is a design smell: the server should distinguish between “I don’t know who you are” and “I know who you are, but you are not allowed.”&lt;/p&gt;

&lt;h3&gt;
  
  
  Incorrect scope: expect &lt;code&gt;403&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Provision a second test client limited to &lt;code&gt;orders:read&lt;/code&gt;. Fetch its token and call a write endpoint such as &lt;code&gt;POST /orders&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Assert that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The status code is &lt;code&gt;403&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If your API follows RFC 6750, the &lt;code&gt;WWW-Authenticate&lt;/code&gt; header contains &lt;code&gt;error="insufficient_scope"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This catches configurations where scope checks are enforced on some routes but omitted on others. For more background, see &lt;a href="http://apidog.com/blog/what-are-oauth-2-scopes?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;OAuth 2.0 scopes explained&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Invalid client: expect a token-endpoint error
&lt;/h3&gt;

&lt;p&gt;Send a request directly to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://auth.example.com/oauth/token
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use an invalid &lt;code&gt;client_secret&lt;/code&gt;. Under RFC 6749 section 5.2, the authorization server should return either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;400&lt;/code&gt;, or&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;401&lt;/code&gt; for failed client authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The JSON response should contain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"invalid_client"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assert on both the status code and error field. Authorization servers are APIs too, so their error contracts belong in your test coverage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Assert token responses in test scenarios
&lt;/h2&gt;

&lt;p&gt;The token endpoint deserves coverage beyond invalid-client handling. Add a scenario step that calls the token endpoint directly, then assert that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;access_token&lt;/code&gt; exists and is non-empty&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;token_type&lt;/code&gt; equals &lt;code&gt;bearer&lt;/code&gt;, case-insensitively&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;expires_in&lt;/code&gt; is greater than &lt;code&gt;0&lt;/code&gt; and within policy, such as no more than &lt;code&gt;3600&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;scope&lt;/code&gt; matches the requested scope&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These checks catch authorization servers that silently narrow grants or return malformed responses.&lt;/p&gt;

&lt;p&gt;Apidog test scenarios support visual assertions on response JSON without scripting. You can also extract &lt;code&gt;access_token&lt;/code&gt; into a variable for a follow-up request when testing the raw OAuth handshake instead of managed authentication.&lt;/p&gt;

&lt;p&gt;Run the scenario in CI so an authorization-server regression fails the build rather than appearing as a mysterious &lt;code&gt;401&lt;/code&gt; in production.&lt;/p&gt;

&lt;p&gt;A practical test structure looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configure OAuth 2.0 at the folder level for happy-path requests.&lt;/li&gt;
&lt;li&gt;Override authentication per request for &lt;code&gt;401&lt;/code&gt; and &lt;code&gt;403&lt;/code&gt; cases.&lt;/li&gt;
&lt;li&gt;Add a scenario that validates the token endpoint contract.&lt;/li&gt;
&lt;li&gt;Run the scenario in CI.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This covers user-context APIs with authorization code and PKCE, service-to-service APIs with client credentials, and token refresh without manual intervention. &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt; and try it free. OAuth 2.0 authentication is available on the free plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Which OAuth flow should I use for API testing?
&lt;/h3&gt;

&lt;p&gt;Use client credentials for machine-to-machine APIs and most automated suites because it requires no browser interaction.&lt;/p&gt;

&lt;p&gt;Use authorization code with PKCE when tests depend on user identity, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Per-user data isolation&lt;/li&gt;
&lt;li&gt;Role checks&lt;/li&gt;
&lt;li&gt;Consent behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Avoid implicit and password grants in new test plans; both are discouraged in &lt;a href="https://oauth.net/2/" rel="noopener noreferrer"&gt;current OAuth guidance&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I refresh an expired token automatically in Apidog?
&lt;/h3&gt;

&lt;p&gt;Configure OAuth 2.0 in the &lt;strong&gt;Auth&lt;/strong&gt; tab and click &lt;strong&gt;Get Token&lt;/strong&gt;. When the authorization server returns a refresh token, Apidog refreshes the access token after expiry without requiring you to authenticate again.&lt;/p&gt;

&lt;p&gt;If your provider uses a separate refresh endpoint, configure its URL in advanced settings. For client credentials flows without refresh tokens, click &lt;strong&gt;Get Token&lt;/strong&gt; again to issue a fresh token.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can every request in a scenario share one OAuth token?
&lt;/h3&gt;

&lt;p&gt;Yes. Configure OAuth 2.0 on the parent folder, and child requests inherit the managed token.&lt;/p&gt;

&lt;p&gt;Individual requests can override the folder configuration, allowing you to add expired-token and insufficient-scope tests to the same scenario.&lt;/p&gt;

&lt;h3&gt;
  
  
  What should &lt;code&gt;401&lt;/code&gt; versus &lt;code&gt;403&lt;/code&gt; mean in OAuth-protected APIs?
&lt;/h3&gt;

&lt;p&gt;Return &lt;code&gt;401&lt;/code&gt; when authentication fails because the token is missing, expired, or malformed.&lt;/p&gt;

&lt;p&gt;Return &lt;code&gt;403&lt;/code&gt; when the token is valid but lacks permission, such as a required scope.&lt;/p&gt;

&lt;p&gt;Mixing up these status codes breaks client retry logic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;401&lt;/code&gt; tells the client to authenticate again&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;403&lt;/code&gt; tells the client to stop retrying&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For token-validation coverage, see &lt;a href="http://apidog.com/blog/test-jwt-authentication-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;testing JWT authentication&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>API Retry Logic and Exponential Backoff: Patterns That Actually Work</title>
      <dc:creator>Hassann</dc:creator>
      <pubDate>Mon, 31 Aug 2026 10:49:27 +0000</pubDate>
      <link>https://dev.to/hassann/api-retry-logic-and-exponential-backoff-patterns-that-actually-work-1ein</link>
      <guid>https://dev.to/hassann/api-retry-logic-and-exponential-backoff-patterns-that-actually-work-1ein</guid>
      <description>&lt;h1&gt;
  
  
  Production-Ready API Retry Logic: Backoff, Jitter, and Idempotency
&lt;/h1&gt;

&lt;p&gt;Your payment API call failed at 2 a.m. Was it a network blip, a rate limit, or a dead server? The answer determines whether retrying saves the transaction—or double-charges a customer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Try Apidog today&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Retries are one of the most common resilience patterns in distributed systems—and one of the easiest to get wrong. A loop around an HTTP call may look defensive, but poorly designed retries can turn a 30-second outage into a 30-minute one by making thousands of clients hammer an already struggling server.&lt;/p&gt;

&lt;p&gt;Done correctly, retries absorb transient failures so smoothly that users never notice them.&lt;/p&gt;

&lt;p&gt;This guide covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which failures to retry&lt;/li&gt;
&lt;li&gt;Exponential backoff with full jitter&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Retry-After&lt;/code&gt; headers&lt;/li&gt;
&lt;li&gt;Idempotency keys for &lt;code&gt;POST&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Retry budgets and circuit breakers&lt;/li&gt;
&lt;li&gt;Testing retry behavior with Apidog mock servers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A retry pattern that has never been tested against a failing server is a guess, not a design.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why naive retries make outages worse
&lt;/h2&gt;

&lt;p&gt;Imagine a service handling 1,000 requests per second. It fails for five seconds, and every client retries immediately three times. Demand jumps from 1,000 requests per second to 4,000—directly at a server already under stress.&lt;/p&gt;

&lt;p&gt;The server falls over completely, and every client retries again.&lt;/p&gt;

&lt;p&gt;This feedback loop is called a &lt;strong&gt;retry storm&lt;/strong&gt;. When clients retry in sync as the server recovers, the result is a &lt;strong&gt;thundering herd&lt;/strong&gt;. Google’s &lt;a href="https://sre.google/sre-book/addressing-cascading-failures/" rel="noopener noreferrer"&gt;SRE guidance on addressing cascading failures&lt;/a&gt; explains why retries without backoff amplify load when a system can least afford it.&lt;/p&gt;

&lt;p&gt;Most retry storms come from two design flaws:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No delay:&lt;/strong&gt; Immediate retries multiply load during the worst possible window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fixed delays:&lt;/strong&gt; If every client waits exactly one second, they all retry in lockstep.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The solution is not to avoid retries entirely. Retry selectively, use growing randomized delays, and impose a hard limit on additional load.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retry these failures, not those
&lt;/h2&gt;

&lt;p&gt;Before implementing backoff, define a decision table. Retrying an invalid request wastes capacity and pollutes logs; retrying a transient fault is the purpose of the mechanism.&lt;/p&gt;

&lt;h3&gt;
  
  
  Retry these
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429 Too Many Requests&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;You hit a rate limit. Back off and return more slowly.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;502 Bad Gateway&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;An upstream hop returned an invalid response. Often transient.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503 Service Unavailable&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The server is overloaded or restarting.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;504 Gateway Timeout&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;An upstream dependency took too long.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Connection resets, DNS failures, socket timeouts&lt;/td&gt;
&lt;td&gt;The request may never have reached the server.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A handling idempotency.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do not retry these automatically
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400 Bad Request&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The payload is malformed and will fail again.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401 Unauthorized&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Credentials are wrong or expired. Refresh the token instead.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403 Forbidden&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The caller lacks permission.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;422 Unprocessable Entity&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Validation failed. Fix the data, not the timing.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The general rule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retry when the failure concerns the server’s state or the network.&lt;/li&gt;
&lt;li&gt;Fail fast when the failure concerns the request itself.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A &lt;code&gt;429&lt;/code&gt; is retryable, but repeated &lt;code&gt;429&lt;/code&gt; responses also indicate that your overall request rate needs attention. Solve that with client-side throttling, caching, or another &lt;a href="http://apidog.com/blog/how-to-implement-api-rate-limiting?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;rate-limiting strategy&lt;/a&gt;, not an increasingly aggressive retry loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exponential backoff and full jitter
&lt;/h2&gt;

&lt;p&gt;Exponential backoff increases the delay after each failed attempt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;delay = base * 2^retry_count
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With a base delay of 500 ms, the schedule is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0.5s, 1s, 2s, 4s, 8s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Always add a cap:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;delay = min(cap, base * 2^retry_count)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, a 30-second cap prevents delays from growing indefinitely.&lt;/p&gt;

&lt;p&gt;Plain exponential backoff prevents immediate hammering, but it does not prevent synchronization. If 5,000 clients fail at the same time, they may all retry at 0.5 seconds, then 1 second, then 2 seconds.&lt;/p&gt;

&lt;p&gt;That still creates traffic waves.&lt;/p&gt;

&lt;h3&gt;
  
  
  Full jitter
&lt;/h3&gt;

&lt;p&gt;Full jitter randomizes the delay between zero and the exponential ceiling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;delay = random_between(0, min(cap, base * 2^retry_count))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;a href="https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/" rel="noopener noreferrer"&gt;AWS analysis of exponential backoff and jitter&lt;/a&gt; found that backoff without jitter still produced clustered call spikes. Full jitter produced fewer total calls and near-shortest completion times.&lt;/p&gt;

&lt;p&gt;Randomizing down to zero may feel less orderly than a fixed doubling schedule, but distributing clients across the entire retry window keeps load flatter. Full jitter is a simple, reliable default unless measurements show that another strategy is better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honor &lt;code&gt;Retry-After&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Backoff is your client estimating how long to wait. Sometimes the server provides a better answer.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;Retry-After&lt;/code&gt; header, commonly returned with &lt;code&gt;429&lt;/code&gt; and &lt;code&gt;503&lt;/code&gt; responses, contains either a number of seconds or an HTTP date:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="k"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;1.1&lt;/span&gt; &lt;span class="m"&gt;429&lt;/span&gt; &lt;span class="ne"&gt;Too Many Requests&lt;/span&gt;
&lt;span class="na"&gt;Retry-After&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;12&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When present, &lt;code&gt;Retry-After&lt;/code&gt; should override your computed backoff. The server knows when its rate-limit window resets or maintenance ends; your exponential schedule does not.&lt;/p&gt;

&lt;p&gt;Parse and respect the header, but still enforce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A maximum delay&lt;/li&gt;
&lt;li&gt;A maximum retry count&lt;/li&gt;
&lt;li&gt;A deadline for the overall operation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This prevents a malformed or hostile value such as &lt;code&gt;Retry-After: 86400&lt;/code&gt; from blocking a worker for an entire day. See the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After" rel="noopener noreferrer"&gt;&lt;code&gt;Retry-After&lt;/code&gt; header reference&lt;/a&gt; for parsing details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Idempotency: the precondition for retrying &lt;code&gt;POST&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;504&lt;/code&gt; scenario creates a dangerous ambiguity. &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt;, and &lt;code&gt;DELETE&lt;/code&gt; are generally idempotent: sending the same request more than once should leave the resource in the same state. &lt;code&gt;POST&lt;/code&gt; is not inherently idempotent.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;POST /v1/payments&lt;/code&gt; times out after the server processes the payment, retrying can create a second charge.&lt;/p&gt;

&lt;p&gt;The solution is an &lt;strong&gt;idempotency key&lt;/strong&gt;: a unique, client-generated identifier—usually a UUID—sent as a request header for each logical operation. The server stores the key with the initial response and returns that stored response for duplicates. Stripe’s &lt;a href="https://docs.stripe.com/api/idempotent_requests" rel="noopener noreferrer"&gt;idempotent request implementation&lt;/a&gt; follows this model.&lt;/p&gt;

&lt;p&gt;Two rules are essential:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;One operation, one key.&lt;/strong&gt; Every retry of one payment must reuse the same key. A new user action gets a new key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate the key before the first request.&lt;/strong&gt; Do not create it inside the retry loop.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the API does not support idempotency keys, avoid automatically retrying non-idempotent writes. Surface the failure and let a human or reconciliation process decide what happened.&lt;/p&gt;

&lt;p&gt;For more implementation guidance, see &lt;a href="http://apidog.com/blog/idempotency-key?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;idempotency keys&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retry budgets and circuit breakers
&lt;/h2&gt;

&lt;p&gt;Backoff controls &lt;strong&gt;when&lt;/strong&gt; retries happen. It does not control &lt;strong&gt;how many&lt;/strong&gt; retries occur.&lt;/p&gt;

&lt;p&gt;During a prolonged outage, even well-jittered clients can create substantial retry traffic. Layered retries make this worse: if an API gateway retries three times and the service client also retries three times, one user action can produce up to nine requests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Retry budgets
&lt;/h3&gt;

&lt;p&gt;Instead of allowing “three retries per request,” define a global budget such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Retries may add no more than 10% extra traffic over a sliding window.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When the budget is exhausted, return failures immediately. This bounds retry amplification regardless of how many requests are failing. Linkerd and Envoy both support retry-budget configurations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Circuit breakers
&lt;/h3&gt;

&lt;p&gt;A circuit breaker tracks failures for each downstream dependency. When the failure rate exceeds a threshold, it opens and fails calls immediately without sending network requests.&lt;/p&gt;

&lt;p&gt;After a cooldown, the breaker permits a small number of probe requests. If the dependency has recovered, the breaker closes.&lt;/p&gt;

&lt;p&gt;Backoff slows a stampede; a circuit breaker stops it. Production systems typically use both.&lt;/p&gt;

&lt;h2&gt;
  
  
  A production-ready Python example
&lt;/h2&gt;

&lt;p&gt;This example combines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retryable-status filtering&lt;/li&gt;
&lt;li&gt;Full jitter&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Retry-After&lt;/code&gt; support&lt;/li&gt;
&lt;li&gt;An idempotency key&lt;/li&gt;
&lt;li&gt;A maximum retry count
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;uuid&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;RETRYABLE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;429&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;502&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;503&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;504&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;BASE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;     &lt;span class="c1"&gt;# seconds
&lt;/span&gt;&lt;span class="n"&gt;CAP&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;30.0&lt;/span&gt;     &lt;span class="c1"&gt;# ceiling on any single delay
&lt;/span&gt;&lt;span class="n"&gt;MAX_RETRIES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create_payment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;idempotency_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;uuid4&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;  &lt;span class="c1"&gt;# one key per logical payment
&lt;/span&gt;    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Idempotency-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;idempotency_key&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;retry_count&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;MAX_RETRIES&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.acmepay.com/v1/payments&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;RETRYABLE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;  &lt;span class="c1"&gt;# 400/401/403/422: fail fast
&lt;/span&gt;            &lt;span class="n"&gt;retry_after&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Retry-After&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;except &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;ConnectionError&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Timeout&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;retry_after&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;  &lt;span class="c1"&gt;# network fault: fall through to backoff
&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;retry_count&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;MAX_RETRIES&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;payment failed after all retries&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;retry_after&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;retry_after&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
            &lt;span class="n"&gt;delay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CAP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;retry_after&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;delay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;uniform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CAP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;BASE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;retry_count&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Important details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The idempotency key is generated once, outside the loop.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Retry-After&lt;/code&gt; takes precedence over calculated backoff.&lt;/li&gt;
&lt;li&gt;The delay still respects the cap.&lt;/li&gt;
&lt;li&gt;Non-retryable HTTP statuses fail immediately.&lt;/li&gt;
&lt;li&gt;Network failures fall through to jittered backoff.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On JavaScript projects, &lt;code&gt;axios-retry&lt;/code&gt; provides the same structure through &lt;code&gt;retryCondition&lt;/code&gt; and &lt;code&gt;retryDelay&lt;/code&gt; hooks. The decision table remains the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test retry behavior before production does it for you
&lt;/h2&gt;

&lt;p&gt;Many systems ship retry logic whose failure branch has never executed. The happy path was tested; the &lt;code&gt;503&lt;/code&gt; path runs for the first time during a real outage.&lt;/p&gt;

&lt;p&gt;You can test it with two Apidog features.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Simulate failures with mock servers
&lt;/h3&gt;

&lt;p&gt;Use Apidog’s smart mock server to define an endpoint such as &lt;code&gt;/v1/payments&lt;/code&gt; and control its responses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Return &lt;code&gt;503&lt;/code&gt; for the first two calls and &lt;code&gt;200&lt;/code&gt; on the third.&lt;/li&gt;
&lt;li&gt;Return &lt;code&gt;429&lt;/code&gt; with &lt;code&gt;Retry-After: 5&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Add a 15-second delay to trigger a client timeout.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Point your client at the mock URL and observe the retry behavior without creating a production incident.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Assert behavior with test scenarios
&lt;/h3&gt;

&lt;p&gt;Apidog test scenarios can chain requests and validate responses and timing. Build a scenario that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calls the flaky mock endpoint.&lt;/li&gt;
&lt;li&gt;Verifies that the request eventually succeeds.&lt;/li&gt;
&lt;li&gt;Checks that elapsed time falls within the expected backoff envelope.&lt;/li&gt;
&lt;li&gt;Confirms that exactly one resource was created.&lt;/li&gt;
&lt;li&gt;Proves that the idempotency key deduplicated retries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run the scenario in CI so retry logic is exercised on every commit instead of during every outage.&lt;/p&gt;

&lt;p&gt;That is the difference between “we added retries” and “we verified that our client survives a rate-limited, partially unavailable dependency.” You can &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;download Apidog&lt;/a&gt; and run a failing mock server against your client in about ten minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Should I retry a &lt;code&gt;429&lt;/code&gt;?
&lt;/h3&gt;

&lt;p&gt;Yes. It is the status where the server most often tells you how long to wait. Read &lt;code&gt;Retry-After&lt;/code&gt; and wait at least that long. If the header is missing, use exponential backoff with jitter.&lt;/p&gt;

&lt;p&gt;Repeated &lt;code&gt;429&lt;/code&gt; responses should also trigger client-side throttling, caching, or other changes to reduce request volume.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is full jitter?
&lt;/h3&gt;

&lt;p&gt;Full jitter chooses each delay uniformly at random between zero and the exponential ceiling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;random(0, min(cap, base * 2^n))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It prevents synchronized retry waves. In AWS simulations, it outperformed plain backoff and equal jitter in both total calls and completion time, which is why it is a common default in AWS SDKs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is it safe to retry &lt;code&gt;POST&lt;/code&gt; requests?
&lt;/h3&gt;

&lt;p&gt;Only when the operation is idempotent in practice. For &lt;code&gt;POST&lt;/code&gt;, that usually means supplying an idempotency key that the server uses to deduplicate requests.&lt;/p&gt;

&lt;p&gt;Without one, retrying after a timeout can duplicate a payment, order, or record because the server may have processed the request before the client received the response. &lt;a href="http://apidog.com/blog/ai-agent-error-recovery?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;AI agent error recovery patterns&lt;/a&gt; use the same principles: keyed writes, capped retries, and circuit breakers.&lt;/p&gt;

&lt;h3&gt;
  
  
  How many times should I retry?
&lt;/h3&gt;

&lt;p&gt;Three to five attempts handle most transient faults. Beyond that, success rates typically flatten while latency and load continue to increase.&lt;/p&gt;

&lt;p&gt;Pair the per-request retry cap with a global retry budget—for example, allowing retries to add no more than 10% extra traffic. If a dependency remains unavailable after the final attempt, use circuit-breaker behavior instead of retrying indefinitely.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/fintech-api-retry-logic?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Fintech API retry logic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sre.google/sre-book/addressing-cascading-failures/" rel="noopener noreferrer"&gt;Addressing cascading failures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/status-code-504-gateway-timeout?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;504 gateway timeout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/how-to-implement-api-rate-limiting?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API rate limiting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/" rel="noopener noreferrer"&gt;Exponential backoff and jitter analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After" rel="noopener noreferrer"&gt;&lt;code&gt;Retry-After&lt;/code&gt; header&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/idempotency-key?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Idempotency keys&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.stripe.com/api/idempotent_requests" rel="noopener noreferrer"&gt;Stripe idempotent requests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Download Apidog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apidog.com/blog/ai-agent-error-recovery?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;AI agent error recovery patterns&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
