Sweep 22 Sep 2026 · 17:19Z Build v2.1.280 501 read Stable v2.1.267 Latest v2.1.280 Next v2.1.280 Feeds RSS JSON llms.txt Unofficial
One change · api

thinking changed

build-with-claude/thinking

Nearest release: v2.1.275, published an hour before this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.

Recorded here
Lines+102added
Lines−69removed
From line 98 where the diff opens
First seen 14 Aug 2026 this site's first read of the page
Recorded edits11to this page, all time

The whole hunk

from line 98, old and new numbered
/
lines
from line 98
9898 )
9999 
100100 for block in response.content:
101 if block.type == "thinking":
102 print(f"\nThinking: {block.thinking}")
103 elif block.type == "text":
104 print(f"\nResponse: {block.text}")
101 match block.type:
102 case "thinking":
103 print(f"\nThinking: {block.thinking}")
104 case "text":
105 print(f"\nResponse: {block.text}")
105106 ```
106107 
107108 ```typescript TypeScript
from line 124
123124 });
124125 
125126 for (const block of response.content) {
126 if (block.type === "thinking") {
127 console.log(`\nThinking: ${block.thinking}`);
128 } else if (block.type === "text") {
129 console.log(`\nResponse: ${block.text}`);
127 switch (block.type) {
128 case "thinking":
129 console.log(`\nThinking: ${block.thinking}`);
130 break;
131 case "text":
132 console.log(`\nResponse: ${block.text}`);
133 break;
130134 }
131135 }
132136 ```
from line 224
220224 ```
221225 
222226 ```php PHP
227 use Anthropic\Messages\TextBlock;
228 use Anthropic\Messages\ThinkingBlock;
229 
223230 $client = new Client();
224231 
225232 $message = $client->messages->create(
from line 242
235242 );
236243 
237244 foreach ($message->content as $block) {
238 if ($block->type === 'thinking') {
239 echo "\nThinking: " . $block->thinking;
240 } elseif ($block->type === 'text') {
241 echo "\nResponse: " . $block->text;
245 switch (true) {
246 case $block instanceof ThinkingBlock:
247 echo "\nThinking: " . $block->thinking;
248 break;
249 case $block instanceof TextBlock:
250 echo "\nResponse: " . $block->text;
251 break;
242252 }
243253 }
244254 ```
from line 272
262272 )
263273 
264274 message.content.each do |block|
265 case block.type
266 when :thinking
275 case block
276 when Anthropic::Models::ThinkingBlock
267277 puts "\nThinking: #{block.thinking}"
268 when :text
278 when Anthropic::Models::TextBlock
269279 puts "\nResponse: #{block.text}"
270280 end
271281 end
from line 562
552562 ],
553563 ) as stream:
554564 for event in stream:
555 if event.type == "content_block_start":
556 print(f"\nStarting {event.content_block.type} block...")
557 elif event.type == "content_block_delta":
558 if event.delta.type == "thinking_delta":
559 print(event.delta.thinking, end="", flush=True)
560 elif event.delta.type == "text_delta":
561 print(event.delta.text, end="", flush=True)
565 match event.type:
566 case "content_block_start":
567 print(f"\nStarting {event.content_block.type} block...")
568 case "content_block_delta":
569 delta = event.delta
570 match delta.type:
571 case "thinking_delta":
572 print(delta.thinking, end="", flush=True)
573 case "text_delta":
574 print(delta.text, end="", flush=True)
562575 ```
563576 
564577 ```typescript TypeScript
from line 585
572585 });
573586 
574587 for await (const event of stream) {
575 if (event.type === "content_block_start") {
576 console.log(`\nStarting ${event.content_block.type} block...`);
577 } else if (event.type === "content_block_delta") {
578 if (event.delta.type === "thinking_delta") {
579 process.stdout.write(event.delta.thinking);
580 } else if (event.delta.type === "text_delta") {
581 process.stdout.write(event.delta.text);
582 }
588 switch (event.type) {
589 case "content_block_start":
590 console.log(`\nStarting ${event.content_block.type} block...`);
591 break;
592 case "content_block_delta":
593 switch (event.delta.type) {
594 case "thinking_delta":
595 process.stdout.write(event.delta.thinking);
596 break;
597 case "text_delta":
598 process.stdout.write(event.delta.text);
599 break;
600 }
601 break;
583602 }
584603 }
585604 ```
from line 686
667686 
668687 try (var streamResponse = client.messages().createStreaming(params)) {
669688 streamResponse.stream().forEach(event -> {
670 if (event.contentBlockStart().isPresent()) {
671 var startEvent = event.contentBlockStart().get();
672 var block = startEvent.contentBlock();
673 if (block.isThinking()) {
674 IO.println("\nStarting thinking block...");
675 } else if (block.isText()) {
676 IO.println("\nStarting text block...");
689 switch (event.type().value()) {
690 case CONTENT_BLOCK_START -> {
691 var startEvent = event.asContentBlockStart();
692 var block = startEvent.contentBlock();
693 switch (block.type().value()) {
694 case THINKING -> IO.println("\nStarting thinking block...");
695 case TEXT -> IO.println("\nStarting text block...");
696 }
677697 }
678 } else if (event.contentBlockDelta().isPresent()) {
679 var deltaEvent = event.contentBlockDelta().get();
680 deltaEvent.delta().thinking().ifPresent(td ->
681 IO.print(td.thinking())
682 );
683 deltaEvent.delta().text().ifPresent(td ->
684 IO.print(td.text())
685 );
698 case CONTENT_BLOCK_DELTA -> {
699 var deltaEvent = event.asContentBlockDelta();
700 deltaEvent.delta().thinking().ifPresent(td ->
701 IO.print(td.thinking())
702 );
703 deltaEvent.delta().text().ifPresent(td ->
704 IO.print(td.text())
705 );
706 }
686707 }
687708 });
688709 }
from line 711
690711 ```
691712 
692713 ```php PHP
714 use Anthropic\Messages\RawContentBlockDeltaEvent;
715 use Anthropic\Messages\RawContentBlockStartEvent;
716 use Anthropic\Messages\TextDelta;
717 use Anthropic\Messages\ThinkingDelta;
718 
693719 $client = new Client();
694720 
695721 $stream = $client->messages->createStream(
from line 728
702728 );
703729 
704730 foreach ($stream as $event) {
705 if ($event->type === 'content_block_start') {
706 echo "\nStarting {$event->contentBlock->type} block...\n";
707 } elseif ($event->type === 'content_block_delta') {
708 if ($event->delta->type === 'thinking_delta') {
709 echo $event->delta->thinking;
710 } elseif ($event->delta->type === 'text_delta') {
711 echo $event->delta->text;
712 }
731 switch (true) {
732 case $event instanceof RawContentBlockStartEvent:
733 echo "\nStarting {$event->contentBlock->type} block...\n";
734 break;
735 case $event instanceof RawContentBlockDeltaEvent:
736 switch (true) {
737 case $event->delta instanceof ThinkingDelta:
738 echo $event->delta->thinking;
739 break;
740 case $event->delta instanceof TextDelta:
741 echo $event->delta->text;
742 break;
743 }
744 break;
713745 }
714746 }
715747 ```
from line 1163
11311163 
11321164Each model accepts `max_tokens` up to the ceiling listed here. On the [Message Batches API](https://platform.claude.com/docs/en/build-with-claude/batch-processing#extended-output-beta), the `output-300k-2026-03-24` [beta header](https://platform.claude.com/docs/en/api/beta-headers) raises that ceiling for the models with a batches ceiling listed.
11331165 
1134| Model | Max output tokens | Batches beta ceiling |
1135| --------------------- | ----------------- | -------------------- |
1136| Claude Fable 5.1 | 128k | — |
1137| Claude Mythos 5.1 | 128k | — |
1138| Claude Fable 5 | 128k | — |
1139| Claude Mythos 5 | 128k | — |
1140| Claude Mythos Preview | 128k | Not available |
1141| Claude Opus 5 | 128k | 300k |
1142| Claude Opus 4.8 | 128k | 300k |
1143| Claude Opus 4.7 | 128k | 300k |
1144| Claude Sonnet 5 | 128k | 300k |
1145| Claude Opus 4.6 | 128k | 300k |
1146| Claude Sonnet 4.6 | 128k | 300k |
1147| Claude Haiku 4.5 | 64k | Not available |
1148| Claude Sonnet 4.5 | 64k | Not available |
1149| Claude Opus 4.5 | 64k | Not available |
1166| Model | Max output tokens | Batches beta ceiling |
1167| :---------------- | :---------------- | :------------------- |
1168| Claude Fable 5.1 | 128K | — |
1169| Claude Mythos 5.1 | 128K | — |
1170| Claude Fable 5 | 128K | — |
1171| Claude Mythos 5 | 128K | — |
1172| Claude Opus 5 | 128K | 300K |
1173| Claude Opus 4.8 | 128K | 300K |
1174| Claude Opus 4.7 | 128K | 300K |
1175| Claude Opus 4.6 | 128K | 300K |
1176| Claude Opus 4.5 | 64K | Not available |
1177| Claude Sonnet 5 | 128K | 300K |
1178| Claude Sonnet 4.6 | 128K | 300K |
1179| Claude Sonnet 4.5 | 64K | Not available |
1180| Claude Haiku 4.5 | 64K | Not available |
1181 
1182[Claude Mythos Preview](https://anthropic.com/glasswing) accepts `max_tokens` up to 128K; the Batches beta ceiling is not available for it.
11501183 
11511184See the [models overview](https://platform.claude.com/docs/en/models/overview) for limits on legacy models.
11521185