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

handling-stop-reasons changed

build-with-claude/handling-stop-reasons

Nearest release: v2.1.280, published under 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+141added
Lines−141removed
From line 58 where the diff opens
First seen 14 Aug 2026 this site's first read of the page
Recorded edits5to this page, all time

The whole hunk

from line 58, old and new numbered
/
lines
from line 58
5858 -H "anthropic-version: 2023-06-01" \
5959 -H "content-type: application/json" \
6060 -d '{
61 "model": "claude-opus-5",
61 "model": "claude-opus-5-5",
6262 "max_tokens": 1024,
6363 "messages": [{"role": "user", "content": "Hello!"}]
6464 }' | jq 'if .stop_reason == "end_turn" then (.content[] | select(.type == "text") | .text) else . end'
from line 66
6666 
6767 ```bash CLI
6868 ant messages create \
69 --model claude-opus-5 \
69 --model claude-opus-5-5 \
7070 --max-tokens 1024 \
7171 --message '{role: user, content: "Hello!"}' \
7272 --format json | jq 'if .stop_reason == "end_turn" then (.content[] | select(.type == "text") | .text) else . end'
from line 76
7676 client = anthropic.Anthropic()
7777 
7878 response = client.messages.create(
79 model="claude-opus-5",
79 model="claude-opus-5-5",
8080 max_tokens=1024,
8181 messages=[{"role": "user", "content": "Hello!"}],
8282 )
from line 91
9191 const client = new Anthropic();
9292 
9393 const response = await client.messages.create({
94 model: "claude-opus-5",
94 model: "claude-opus-5-5",
9595 max_tokens: 1024,
9696 messages: [{ role: "user", content: "Hello!" }]
9797 });
from line 110
110110 
111111 var response = await client.Messages.Create(new MessageCreateParams
112112 {
113 Model = Model.ClaudeOpus5,
113 Model = Model.ClaudeOpus5_5,
114114 MaxTokens = 1024,
115115 Messages = [new() { Role = Role.User, Content = "Hello!" }]
116116 });
from line 132
132132 client := anthropic.NewClient()
133133 
134134 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
135 Model: anthropic.ModelClaudeOpus5,
135 Model: anthropic.ModelClaudeOpus5_5,
136136 MaxTokens: 1024,
137137 Messages: []anthropic.MessageParam{
138138 anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
from line 157
157157 
158158 Message response = client.messages().create(
159159 MessageCreateParams.builder()
160 .model(Model.CLAUDE_OPUS_5)
160 .model(Model.CLAUDE_OPUS_5_5)
161161 .maxTokens(1024L)
162162 .addUserMessage("Hello!")
163163 .build()
from line 177
177177 $response = $client->messages->create(
178178 maxTokens: 1024,
179179 messages: [['role' => 'user', 'content' => 'Hello!']],
180 model: 'claude-opus-5',
180 model: 'claude-opus-5-5',
181181 );
182182 
183183 if ($response->stopReason === 'end_turn') {
from line 194
194194 client = Anthropic::Client.new
195195 
196196 response = client.messages.create(
197 model: "claude-opus-5",
197 model: "claude-opus-5-5",
198198 max_tokens: 1024,
199199 messages: [{ role: "user", content: "Hello!" }]
200200 )
from line 544
544544 ```python Python
545545 def handle_empty_response(client, messages):
546546 response = client.messages.create(
547 model="claude-opus-5", max_tokens=1024, messages=messages
547 model="claude-opus-5-5", max_tokens=1024, messages=messages
548548 )
549549 
550550 # Check if response is empty
from line 556
556556 messages.append({"role": "user", "content": "Please continue"})
557557 
558558 response = client.messages.create(
559 model="claude-opus-5", max_tokens=1024, messages=messages
559 model="claude-opus-5-5", max_tokens=1024, messages=messages
560560 )
561561 
562562 return response
from line 568
568568 messages: Anthropic.MessageParam[]
569569 ): Promise<Anthropic.Message> {
570570 let response = await client.messages.create({
571 model: "claude-opus-5",
571 model: "claude-opus-5-5",
572572 max_tokens: 1024,
573573 messages
574574 });
from line 582
582582 messages.push({ role: "user", content: "Please continue" });
583583 
584584 response = await client.messages.create({
585 model: "claude-opus-5",
585 model: "claude-opus-5-5",
586586 max_tokens: 1024,
587587 messages
588588 });
from line 597
597597 {
598598 var response = await client.Messages.Create(new MessageCreateParams
599599 {
600 Model = Model.ClaudeOpus5,
600 Model = Model.ClaudeOpus5_5,
601601 MaxTokens = 1024,
602602 Messages = messages
603603 });
from line 610
610610 
611611 response = await client.Messages.Create(new MessageCreateParams
612612 {
613 Model = Model.ClaudeOpus5,
613 Model = Model.ClaudeOpus5_5,
614614 MaxTokens = 1024,
615615 Messages = messages
616616 });
from line 623
623623 ```go Go
624624 func handleEmptyResponse(client anthropic.Client, messages []anthropic.MessageParam) (*anthropic.Message, error) {
625625 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
626 Model: anthropic.ModelClaudeOpus5,
626 Model: anthropic.ModelClaudeOpus5_5,
627627 MaxTokens: 1024,
628628 Messages: messages,
629629 })
from line 637
637637 messages = append(messages, anthropic.NewUserMessage(anthropic.NewTextBlock("Please continue")))
638638 
639639 response, err = client.Messages.New(context.TODO(), anthropic.MessageNewParams{
640 Model: anthropic.ModelClaudeOpus5,
640 Model: anthropic.ModelClaudeOpus5_5,
641641 MaxTokens: 1024,
642642 Messages: messages,
643643 })
from line 654
654654 static Message handleEmptyResponse(AnthropicClient client, List<MessageParam> messages) {
655655 Message response = client.messages().create(
656656 MessageCreateParams.builder()
657 .model(Model.CLAUDE_OPUS_5)
657 .model(Model.CLAUDE_OPUS_5_5)
658658 .maxTokens(1024L)
659659 .messages(messages)
660660 .build()
from line 672
672672 
673673 response = client.messages().create(
674674 MessageCreateParams.builder()
675 .model(Model.CLAUDE_OPUS_5)
675 .model(Model.CLAUDE_OPUS_5_5)
676676 .maxTokens(1024L)
677677 .messages(extended)
678678 .build()
from line 689
689689 $response = $client->messages->create(
690690 maxTokens: 1024,
691691 messages: $messages,
692 model: 'claude-opus-5',
692 model: 'claude-opus-5-5',
693693 );
694694 
695695 // Check if response is empty
from line 700
700700 $response = $client->messages->create(
701701 maxTokens: 1024,
702702 messages: $messages,
703 model: 'claude-opus-5',
703 model: 'claude-opus-5-5',
704704 );
705705 }
706706 
from line 711
711711 ```ruby Ruby
712712 def handle_empty_response(client, messages)
713713 response = client.messages.create(
714 model: "claude-opus-5",
714 model: "claude-opus-5-5",
715715 max_tokens: 1024,
716716 messages: messages
717717 )
from line 722
722722 messages << { role: "user", content: "Please continue" }
723723 
724724 response = client.messages.create(
725 model: "claude-opus-5",
725 model: "claude-opus-5-5",
726726 max_tokens: 1024,
727727 messages: messages
728728 )
from line 751
751751 -H "anthropic-version: 2023-06-01" \
752752 -H "content-type: application/json" \
753753 -d '{
754 "model": "claude-opus-5",
754 "model": "claude-opus-5-5",
755755 "max_tokens": 10,
756756 "messages": [{"role": "user", "content": "Explain quantum physics"}]
757757 }' | jq '.stop_reason'
from line 759
759759 
760760 ```bash CLI
761761 ant messages create \
762 --model claude-opus-5 \
762 --model claude-opus-5-5 \
763763 --max-tokens 10 \
764764 --message '{role: user, content: "Explain quantum physics"}' \
765765 --format json | jq '.stop_reason'
from line 769
769769 client = anthropic.Anthropic()
770770 # Request with limited tokens
771771 response = client.messages.create(
772 model="claude-opus-5",
772 model="claude-opus-5-5",
773773 max_tokens=10,
774774 messages=[{"role": "user", "content": "Explain quantum physics"}],
775775 )
from line 785
785785 
786786 // Request with limited tokens
787787 const response = await client.messages.create({
788 model: "claude-opus-5",
788 model: "claude-opus-5-5",
789789 max_tokens: 10,
790790 messages: [{ role: "user", content: "Explain quantum physics" }]
791791 });
from line 803
803803 // Request with limited tokens
804804 var response = await client.Messages.Create(new MessageCreateParams
805805 {
806 Model = Model.ClaudeOpus5,
806 Model = Model.ClaudeOpus5_5,
807807 MaxTokens = 10,
808808 Messages = [new() { Role = Role.User, Content = "Explain quantum physics" }]
809809 });
from line 821
821821 
822822 // Request with limited tokens
823823 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
824 Model: anthropic.ModelClaudeOpus5,
824 Model: anthropic.ModelClaudeOpus5_5,
825825 MaxTokens: 10,
826826 Messages: []anthropic.MessageParam{
827827 anthropic.NewUserMessage(anthropic.NewTextBlock("Explain quantum physics")),
from line 844
844844 // Request with limited tokens
845845 Message response = client.messages().create(
846846 MessageCreateParams.builder()
847 .model(Model.CLAUDE_OPUS_5)
847 .model(Model.CLAUDE_OPUS_5_5)
848848 .maxTokens(10L)
849849 .addUserMessage("Explain quantum physics")
850850 .build()
from line 864
864864 $response = $client->messages->create(
865865 maxTokens: 10,
866866 messages: [['role' => 'user', 'content' => 'Explain quantum physics']],
867 model: 'claude-opus-5',
867 model: 'claude-opus-5-5',
868868 );
869869 
870870 if ($response->stopReason === 'max_tokens') {
from line 879
879879 
880880 # Request with limited tokens
881881 response = client.messages.create(
882 model: "claude-opus-5",
882 model: "claude-opus-5-5",
883883 max_tokens: 10,
884884 messages: [{ role: "user", content: "Explain quantum physics" }]
885885 )
from line 916
916916 if last_block.type == "tool_use":
917917 # Send the request with higher max_tokens
918918 response = client.messages.create(
919 model="claude-opus-5",
919 model="claude-opus-5-5",
920920 max_tokens=4096, # Increased limit
921921 messages=messages,
922922 tools=tools,
from line 931
931931 if (lastBlock.type === "tool_use") {
932932 // Send the request with higher max_tokens
933933 response = await client.messages.create({
934 model: "claude-opus-5",
934 model: "claude-opus-5-5",
935935 max_tokens: 4096, // Increased limit
936936 messages: messages,
937937 tools: tools
from line 949
949949 
950950 var parameters = new MessageCreateParams
951951 {
952 Model = Model.ClaudeOpus5,
952 Model = Model.ClaudeOpus5_5,
953953 MaxTokens = 1024,
954954 Messages = messages,
955955 Tools = tools
from line 969
969969 
970970 ```go Go
971971 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
972 Model: anthropic.ModelClaudeOpus5,
972 Model: anthropic.ModelClaudeOpus5_5,
973973 MaxTokens: 1024,
974974 Messages: messages,
975975 Tools: tools,
from line 983
983983 switch lastBlock.AsAny().(type) {
984984 case anthropic.ToolUseBlock:
985985 response, err = client.Messages.New(context.TODO(), anthropic.MessageNewParams{
986 Model: anthropic.ModelClaudeOpus5,
986 Model: anthropic.ModelClaudeOpus5_5,
987987 MaxTokens: 4096,
988988 Messages: messages,
989989 Tools: tools,
from line 1003
10031003 // Send the request with higher max_tokens
10041004 response = client.messages().create(
10051005 MessageCreateParams.builder()
1006 .model(Model.CLAUDE_OPUS_5)
1006 .model(Model.CLAUDE_OPUS_5_5)
10071007 .maxTokens(4096L) // Increased limit
10081008 .messages(messages)
10091009 .tools(tools)
from line 1017
10171017 $response = $client->messages->create(
10181018 maxTokens: 1024,
10191019 messages: $messages,
1020 model: 'claude-opus-5',
1020 model: 'claude-opus-5-5',
10211021 tools: $tools,
10221022 );
10231023 
from line 1027
10271027 $response = $client->messages->create(
10281028 maxTokens: 4096,
10291029 messages: $messages,
1030 model: 'claude-opus-5',
1030 model: 'claude-opus-5-5',
10311031 tools: $tools,
10321032 );
10331033 }
from line 1036
10361036 
10371037 ```ruby Ruby
10381038 response = client.messages.create(
1039 model: "claude-opus-5",
1039 model: "claude-opus-5-5",
10401040 max_tokens: 1024,
10411041 messages: messages,
10421042 tools: tools
from line 1046
10461046 last_block = response.content.last
10471047 if last_block.type == :tool_use
10481048 response = client.messages.create(
1049 model: "claude-opus-5",
1049 model: "claude-opus-5-5",
10501050 max_tokens: 4096,
10511051 messages: messages,
10521052 tools: tools
from line 1068
10681068 -H "anthropic-version: 2023-06-01" \
10691069 -H "content-type: application/json" \
10701070 -d '{
1071 "model": "claude-opus-5",
1071 "model": "claude-opus-5-5",
10721072 "max_tokens": 1024,
10731073 "stop_sequences": ["END", "STOP"],
10741074 "messages": [{"role": "user", "content": "Generate text until you say END"}]
from line 1077
10771077 
10781078 ```bash CLI
10791079 ant messages create \
1080 --model claude-opus-5 \
1080 --model claude-opus-5-5 \
10811081 --max-tokens 1024 \
10821082 --stop-sequence END --stop-sequence STOP \
10831083 --message '{role: user, content: "Generate text until you say END"}' \
from line 1087
10871087 ```python Python
10881088 client = anthropic.Anthropic()
10891089 response = client.messages.create(
1090 model="claude-opus-5",
1090 model="claude-opus-5-5",
10911091 max_tokens=1024,
10921092 stop_sequences=["END", "STOP"],
10931093 messages=[{"role": "user", "content": "Generate text until you say END"}],
from line 1101
11011101 const client = new Anthropic();
11021102 
11031103 const response = await client.messages.create({
1104 model: "claude-opus-5",
1104 model: "claude-opus-5-5",
11051105 max_tokens: 1024,
11061106 stop_sequences: ["END", "STOP"],
11071107 messages: [{ role: "user", content: "Generate text until you say END" }]
from line 1117
11171117 
11181118 var response = await client.Messages.Create(new MessageCreateParams
11191119 {
1120 Model = Model.ClaudeOpus5,
1120 Model = Model.ClaudeOpus5_5,
11211121 MaxTokens = 1024,
11221122 StopSequences = ["END", "STOP"],
11231123 Messages = [new() { Role = Role.User, Content = "Generate text until you say END" }]
from line 1133
11331133 client := anthropic.NewClient()
11341134 
11351135 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
1136 Model: anthropic.ModelClaudeOpus5,
1136 Model: anthropic.ModelClaudeOpus5_5,
11371137 MaxTokens: 1024,
11381138 StopSequences: []string{"END", "STOP"},
11391139 Messages: []anthropic.MessageParam{
from line 1154
11541154 
11551155 Message response = client.messages().create(
11561156 MessageCreateParams.builder()
1157 .model(Model.CLAUDE_OPUS_5)
1157 .model(Model.CLAUDE_OPUS_5_5)
11581158 .maxTokens(1024L)
11591159 .addStopSequence("END")
11601160 .addStopSequence("STOP")
from line 1173
11731173 $response = $client->messages->create(
11741174 maxTokens: 1024,
11751175 messages: [['role' => 'user', 'content' => 'Generate text until you say END']],
1176 model: 'claude-opus-5',
1176 model: 'claude-opus-5-5',
11771177 stopSequences: ['END', 'STOP'],
11781178 );
11791179 
from line 1186
11861186 client = Anthropic::Client.new
11871187 
11881188 response = client.messages.create(
1189 model: "claude-opus-5",
1189 model: "claude-opus-5-5",
11901190 max_tokens: 1024,
11911191 stop_sequences: ["END", "STOP"],
11921192 messages: [{ role: "user", content: "Generate text until you say END" }]
from line 1213
12131213 -H "anthropic-version: 2023-06-01" \
12141214 -H "content-type: application/json" \
12151215 -d '{
1216 "model": "claude-opus-5",
1216 "model": "claude-opus-5-5",
12171217 "max_tokens": 1024,
12181218 "tools": [{
12191219 "name": "get_weather",
from line 1230
12301230 
12311231 ```bash CLI
12321232 ant messages create --format json <<'YAML' | jq '.stop_reason, (.content[] | select(.type == "tool_use"))'
1233 model: claude-opus-5
1233 model: claude-opus-5-5
12341234 max_tokens: 1024
12351235 messages:
12361236 - role: user
from line 1267
12671267 
12681268 
12691269 response = client.messages.create(
1270 model="claude-opus-5",
1270 model="claude-opus-5-5",
12711271 max_tokens=1024,
12721272 tools=[weather_tool],
12731273 messages=[{"role": "user", "content": "What is the weather in San Francisco?"}],
from line 1300
13001300 }
13011301 
13021302 const response = await client.messages.create({
1303 model: "claude-opus-5",
1303 model: "claude-opus-5-5",
13041304 max_tokens: 1024,
13051305 tools: [weatherTool],
13061306 messages: [{ role: "user", content: "What is the weather in San Francisco?" }]
from line 1338
13381338 
13391339 var response = await client.Messages.Create(new MessageCreateParams
13401340 {
1341 Model = Model.ClaudeOpus5,
1341 Model = Model.ClaudeOpus5_5,
13421342 MaxTokens = 1024,
13431343 Tools = [weatherTool],
13441344 Messages = [new() { Role = Role.User, Content = "What is the weather in San Francisco?" }]
from line 1372
13721372 }
13731373 
13741374 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
1375 Model: anthropic.ModelClaudeOpus5,
1375 Model: anthropic.ModelClaudeOpus5_5,
13761376 MaxTokens: 1024,
13771377 Tools: []anthropic.ToolUnionParam{{OfTool: &weatherTool}},
13781378 Messages: []anthropic.MessageParam{
from line 1411
14111411 
14121412 Message response = client.messages().create(
14131413 MessageCreateParams.builder()
1414 .model(Model.CLAUDE_OPUS_5)
1414 .model(Model.CLAUDE_OPUS_5_5)
14151415 .maxTokens(1024L)
14161416 .addTool(weatherTool)
14171417 .addUserMessage("What is the weather in San Francisco?")
from line 1446
14461446 $response = $client->messages->create(
14471447 maxTokens: 1024,
14481448 messages: [['role' => 'user', 'content' => 'What is the weather in San Francisco?']],
1449 model: 'claude-opus-5',
1449 model: 'claude-opus-5-5',
14501450 tools: [$weatherTool],
14511451 );
14521452 
from line 1476
14761476 }
14771477 
14781478 response = client.messages.create(
1479 model: "claude-opus-5",
1479 model: "claude-opus-5-5",
14801480 max_tokens: 1024,
14811481 tools: [weather_tool],
14821482 messages: [{ role: "user", content: "What is the weather in San Francisco?" }]
from line 1556
15561556 -H "anthropic-version: 2023-06-01" \
15571557 -H "content-type: application/json" \
15581558 -d '{
1559 "model": "claude-opus-5",
1559 "model": "claude-opus-5-5",
15601560 "max_tokens": 4096,
15611561 "tools": [{"type": "web_search_20250305", "name": "web_search"}],
15621562 "messages": [{"role": "user", "content": "Search for latest AI news"}]
from line 1567
15671567 # Inspect stop_reason; if it is pause_turn, re-run with the assistant
15681568 # response appended to --message.
15691569 ant messages create --format json <<'YAML' | jq '{stop_reason, content}'
1570 model: claude-opus-5
1570 model: claude-opus-5-5
15711571 max_tokens: 4096
15721572 tools:
15731573 - {type: web_search_20250305, name: web_search}
from line 1578
15781578 
15791579 ```python Python
15801580 response = client.messages.create(
1581 model="claude-opus-5",
1581 model="claude-opus-5-5",
15821582 max_tokens=4096,
15831583 tools=[{"type": "web_search_20250305", "name": "web_search"}],
15841584 messages=[{"role": "user", "content": "Search for latest AI news"}],
from line 1591
15911591 {"role": "assistant", "content": response.content},
15921592 ]
15931593 continuation = client.messages.create(
1594 model="claude-opus-5",
1594 model="claude-opus-5-5",
15951595 max_tokens=4096,
15961596 messages=messages,
15971597 tools=[{"type": "web_search_20250305", "name": "web_search"}],
from line 1600
16001600 
16011601 ```typescript TypeScript
16021602 const response = await client.messages.create({
1603 model: "claude-opus-5",
1603 model: "claude-opus-5-5",
16041604 max_tokens: 4096,
16051605 tools: [{ type: "web_search_20250305", name: "web_search" }],
16061606 messages: [{ role: "user", content: "Search for latest AI news" }]
from line 1609
16091609 if (response.stop_reason === "pause_turn") {
16101610 // Continue the conversation by sending the response back
16111611 const continuation = await client.messages.create({
1612 model: "claude-opus-5",
1612 model: "claude-opus-5-5",
16131613 max_tokens: 4096,
16141614 tools: [{ type: "web_search_20250305", name: "web_search" }],
16151615 messages: [
from line 1626
16261626 
16271627 var response = await client.Messages.Create(new MessageCreateParams
16281628 {
1629 Model = Model.ClaudeOpus5,
1629 Model = Model.ClaudeOpus5_5,
16301630 MaxTokens = 4096,
16311631 Tools = tools,
16321632 Messages = [userMessage]
from line 1637
16371637 // Continue the conversation by sending the response back
16381638 var continuation = await client.Messages.Create(new MessageCreateParams
16391639 {
1640 Model = Model.ClaudeOpus5,
1640 Model = Model.ClaudeOpus5_5,
16411641 MaxTokens = 4096,
16421642 Tools = tools,
16431643 Messages =
from line 1660
16601660 userMessage := anthropic.NewUserMessage(anthropic.NewTextBlock("Search for latest AI news"))
16611661 
16621662 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
1663 Model: anthropic.ModelClaudeOpus5,
1663 Model: anthropic.ModelClaudeOpus5_5,
16641664 MaxTokens: 4096,
16651665 Tools: tools,
16661666 Messages: []anthropic.MessageParam{userMessage},
from line 1676
16761676 contentParams = append(contentParams, block.ToParam())
16771677 }
16781678 continuation, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
1679 Model: anthropic.ModelClaudeOpus5,
1679 Model: anthropic.ModelClaudeOpus5_5,
16801680 MaxTokens: 4096,
16811681 Tools: tools,
16821682 Messages: []anthropic.MessageParam{userMessage, anthropic.NewAssistantMessage(contentParams...)},
from line 1691
16911691 ```java Java
16921692 Message response = client.messages().create(
16931693 MessageCreateParams.builder()
1694 .model(Model.CLAUDE_OPUS_5)
1694 .model(Model.CLAUDE_OPUS_5_5)
16951695 .maxTokens(4096L)
16961696 .addTool(WebSearchTool20250305.builder().build())
16971697 .addUserMessage("Search for latest AI news")
from line 1702
17021702 // Continue the conversation by sending the response back
17031703 Message continuation = client.messages().create(
17041704 MessageCreateParams.builder()
1705 .model(Model.CLAUDE_OPUS_5)
1705 .model(Model.CLAUDE_OPUS_5_5)
17061706 .maxTokens(4096L)
17071707 .addTool(WebSearchTool20250305.builder().build())
17081708 .addUserMessage("Search for latest AI news")
from line 1719
17191719 $response = $client->messages->create(
17201720 maxTokens: 4096,
17211721 messages: [$userMessage],
1722 model: 'claude-opus-5',
1722 model: 'claude-opus-5-5',
17231723 tools: $tools,
17241724 );
17251725 
from line 1731
17311731 $userMessage,
17321732 ['role' => 'assistant', 'content' => $response->content],
17331733 ],
1734 model: 'claude-opus-5',
1734 model: 'claude-opus-5-5',
17351735 tools: $tools,
17361736 );
17371737 }
from line 1742
17421742 user_message = { role: "user", content: "Search for latest AI news" }
17431743 
17441744 response = client.messages.create(
1745 model: "claude-opus-5",
1745 model: "claude-opus-5-5",
17461746 max_tokens: 4096,
17471747 tools: tools,
17481748 messages: [user_message]
from line 1751
17511751 if response.stop_reason == :pause_turn
17521752 # Continue the conversation by sending the response back
17531753 continuation = client.messages.create(
1754 model: "claude-opus-5",
1754 model: "claude-opus-5-5",
17551755 max_tokens: 4096,
17561756 tools: tools,
17571757 messages: [user_message, { role: "assistant", content: response.content }]
from line 1775
17751775 -H "anthropic-version: 2023-06-01" \
17761776 -H "content-type: application/json" \
17771777 -d '{
1778 "model": "claude-opus-5",
1778 "model": "claude-opus-5-5",
17791779 "max_tokens": 1024,
17801780 "messages": [{"role": "user", "content": "[Unsafe request]"}]
17811781 }' | jq '{stop_reason, stop_details}'
from line 1783
17831783 
17841784 ```bash CLI
17851785 ant messages create \
1786 --model claude-opus-5 \
1786 --model claude-opus-5-5 \
17871787 --max-tokens 1024 \
17881788 --message '{role: user, content: "[Unsafe request]"}' \
17891789 --format json | jq '{stop_reason, stop_details}'
from line 1792
17921792 ```python Python
17931793 client = anthropic.Anthropic()
17941794 response = client.messages.create(
1795 model="claude-opus-5",
1795 model="claude-opus-5-5",
17961796 max_tokens=1024,
17971797 messages=[{"role": "user", "content": "[Unsafe request]"}],
17981798 )
from line 1807
18071807 const client = new Anthropic();
18081808 
18091809 const response = await client.messages.create({
1810 model: "claude-opus-5",
1810 model: "claude-opus-5-5",
18111811 max_tokens: 1024,
18121812 messages: [{ role: "user", content: "[Unsafe request]" }]
18131813 });
from line 1824
18241824 
18251825 var response = await client.Messages.Create(new MessageCreateParams
18261826 {
1827 Model = Model.ClaudeOpus5,
1827 Model = Model.ClaudeOpus5_5,
18281828 MaxTokens = 1024,
18291829 Messages = [new() { Role = Role.User, Content = "[Unsafe request]" }]
18301830 });
from line 1841
18411841 client := anthropic.NewClient()
18421842 
18431843 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
1844 Model: anthropic.ModelClaudeOpus5,
1844 Model: anthropic.ModelClaudeOpus5_5,
18451845 MaxTokens: 1024,
18461846 Messages: []anthropic.MessageParam{
18471847 anthropic.NewUserMessage(anthropic.NewTextBlock("[Unsafe request]")),
from line 1863
18631863 
18641864 Message response = client.messages().create(
18651865 MessageCreateParams.builder()
1866 .model(Model.CLAUDE_OPUS_5)
1866 .model(Model.CLAUDE_OPUS_5_5)
18671867 .maxTokens(1024L)
18681868 .addUserMessage("[Unsafe request]")
18691869 .build()
from line 1882
18821882 $response = $client->messages->create(
18831883 maxTokens: 1024,
18841884 messages: [['role' => 'user', 'content' => '[Unsafe request]']],
1885 model: 'claude-opus-5',
1885 model: 'claude-opus-5-5',
18861886 );
18871887 
18881888 if ($response->stopReason === 'refusal') {
from line 1896
18961896 client = Anthropic::Client.new
18971897 
18981898 response = client.messages.create(
1899 model: "claude-opus-5",
1899 model: "claude-opus-5-5",
19001900 max_tokens: 1024,
19011901 messages: [{ role: "user", content: "[Unsafe request]" }]
19021902 )
from line 1915
19151915 
19161916On a refusal, the `stop_details` object identifies the policy category that triggered it. The categories and the full refusal response shape are covered on [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response). `stop_details` is `null` for all stop reasons other than `refusal`.
19171917 
1918A refused request on Claude Fable 5.1, Claude Fable 5, or Claude Opus 5 can usually be served by retrying on another Claude model. [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback) shows how to set up that retry, server-side or in your client. If you build the retry yourself from Claude Fable 5.1, Claude Fable 5, or Claude Opus 5, [fallback credit](https://platform.claude.com/docs/en/build-with-claude/fallback-credit) covers how to avoid paying the prompt-cache cost twice.
1918A refused request on Claude Fable 5.1, Claude Fable 5, Claude Opus 5.5, or Claude Opus 5 can usually be served by retrying on another Claude model. [Refusals and fallback](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback) shows how to set up that retry, server-side or in your client. If you build the retry yourself from Claude Fable 5.1, Claude Fable 5, Claude Opus 5.5, or Claude Opus 5, [fallback credit](https://platform.claude.com/docs/en/build-with-claude/fallback-credit) covers how to avoid paying the prompt-cache cost twice.
19191919 
19201920### model\_context\_window\_exceeded
19211921 
from line 1932
19321932 -H "anthropic-version: 2023-06-01" \
19331933 -H "content-type: application/json" \
19341934 -d '{
1935 "model": "claude-opus-5",
1935 "model": "claude-opus-5-5",
19361936 "max_tokens": 20000,
19371937 "messages": [{"role": "user", "content": "Large input that uses most of context window..."}]
19381938 }' | jq '.stop_reason'
from line 1940
19401940 
19411941 ```bash CLI
19421942 ant messages create \
1943 --model claude-opus-5 \
1943 --model claude-opus-5-5 \
19441944 --max-tokens 20000 \
19451945 --message '{role: user, content: "Large input that uses most of context window..."}' \
19461946 --format json | jq '.stop_reason'
from line 1949
19491949 ```python Python
19501950 # Request with maximum tokens to get as much as possible
19511951 response = client.beta.messages.create(
1952 model="claude-opus-5",
1952 model="claude-opus-5-5",
19531953 max_tokens=20000, # Python SDK requires streaming for max_tokens above ~21k
19541954 messages=[
19551955 {"role": "user", "content": "Large input that uses most of context window..."}
from line 1965
19651965 ```typescript TypeScript
19661966 // Request with maximum tokens to get as much as possible
19671967 const response = await client.beta.messages.create({
1968 model: "claude-opus-5",
1968 model: "claude-opus-5-5",
19691969 max_tokens: 20000,
19701970 messages: [{ role: "user", content: "Large input that uses most of context window..." }]
19711971 });
from line 1984
19841984 // Request with maximum tokens to get as much as possible
19851985 var response = await client.Beta.Messages.Create(new MessageCreateParams
19861986 {
1987 Model = Model.ClaudeOpus5,
1987 Model = Model.ClaudeOpus5_5,
19881988 MaxTokens = 20000,
19891989 Messages = [new() { Role = Role.User, Content = "Large input that uses most of context window..." }]
19901990 });
from line 2000
20002000 ```go Go
20012001 // Request with maximum tokens to get as much as possible
20022002 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
2003 Model: anthropic.ModelClaudeOpus5,
2003 Model: anthropic.ModelClaudeOpus5_5,
20042004 MaxTokens: 20000,
20052005 Messages: []anthropic.BetaMessageParam{
20062006 anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock("Large input that uses most of context window...")),
from line 2025
20252025 // Request with maximum tokens to get as much as possible
20262026 BetaMessage response = client.beta().messages().create(
20272027 MessageCreateParams.builder()
2028 .model(Model.CLAUDE_OPUS_5)
2028 .model(Model.CLAUDE_OPUS_5_5)
20292029 .maxTokens(20000L)
20302030 .addUserMessage("Large input that uses most of context window...")
20312031 .build()
from line 2043
20432043 $response = $client->beta->messages->create(
20442044 maxTokens: 20000,
20452045 messages: [['role' => 'user', 'content' => 'Large input that uses most of context window...']],
2046 model: 'claude-opus-5',
2046 model: 'claude-opus-5-5',
20472047 );
20482048 
20492049 if ($response->stopReason === 'model_context_window_exceeded') {
from line 2056
20562056 ```ruby Ruby
20572057 # Request with maximum tokens to get as much as possible
20582058 response = client.beta.messages.create(
2059 model: "claude-opus-5",
2059 model: "claude-opus-5-5",
20602060 max_tokens: 20000,
20612061 messages: [{ role: "user", content: "Large input that uses most of context window..." }]
20622062 )
from line 2363
23632363 
23642364 for _ in range(max_continuations):
23652365 response = client.messages.create(
2366 model="claude-opus-5", max_tokens=4096, messages=messages, tools=tools
2366 model="claude-opus-5-5", max_tokens=4096, messages=messages, tools=tools
23672367 )
23682368 
23692369 if response.stop_reason != "pause_turn":
from line 2392
23922392 
23932393 for (let i = 0; i < maxContinuations; i++) {
23942394 response = await client.messages.create({
2395 model: "claude-opus-5",
2395 model: "claude-opus-5-5",
23962396 max_tokens: 4096,
23972397 messages,
23982398 tools
from line 2429
24292429 {
24302430 response = await client.Messages.Create(new MessageCreateParams
24312431 {
2432 Model = Model.ClaudeOpus5,
2432 Model = Model.ClaudeOpus5_5,
24332433 MaxTokens = 4096,
24342434 Messages = messages,
24352435 Tools = tools
from line 2471
24712471 
24722472 for range maxContinuations {
24732473 response, err = client.Messages.New(context.TODO(), anthropic.MessageNewParams{
2474 Model: anthropic.ModelClaudeOpus5,
2474 Model: anthropic.ModelClaudeOpus5_5,
24752475 MaxTokens: 4096,
24762476 Messages: messages,
24772477 Tools: tools,
from line 2513
25132513 for (int i = 0; i < maxContinuations; i++) {
25142514 // Rebuild the params each iteration so messages aren't accumulated
25152515 MessageCreateParams.Builder params = MessageCreateParams.builder()
2516 .model(Model.CLAUDE_OPUS_5)
2516 .model(Model.CLAUDE_OPUS_5_5)
25172517 .maxTokens(4096L)
25182518 .addUserMessage(userQuery);
25192519 tools.forEach(params::addTool);
from line 2549
25492549 $response = $client->messages->create(
25502550 maxTokens: 4096,
25512551 messages: $messages,
2552 model: 'claude-opus-5',
2552 model: 'claude-opus-5-5',
25532553 tools: $tools,
25542554 );
25552555 
from line 2577
25772577 
25782578 max_continuations.times do
25792579 response = client.messages.create(
2580 model: "claude-opus-5",
2580 model: "claude-opus-5-5",
25812581 max_tokens: 4096,
25822582 messages: messages,
25832583 tools: tools
from line 2624
26242624 -H "anthropic-version: 2023-06-01" \
26252625 -H "content-type: application/json" \
26262626 -d '{
2627 "model": "claude-opus-5",
2627 "model": "claude-opus-5-5",
26282628 "max_tokens": 1024,
26292629 "messages": [{"role": "user", "content": "Hello!"}]
26302630 }' | jq '.stop_reason'
from line 2633
26332633 ```bash CLI
26342634 # The CLI exits non-zero on API errors; stop_reason appears on success.
26352635 ant messages create \
2636 --model claude-opus-5 \
2636 --model claude-opus-5-5 \
26372637 --max-tokens 1024 \
26382638 --message '{role: user, content: "Hello!"}' \
26392639 --format json | jq '.stop_reason'
from line 2644
26442644 
26452645 try:
26462646 response = client.messages.create(
2647 model="claude-opus-5",
2647 model="claude-opus-5-5",
26482648 max_tokens=1024,
26492649 messages=[{"role": "user", "content": "Hello!"}],
26502650 )
from line 2667
26672667 
26682668 try {
26692669 const response = await client.messages.create({
2670 model: "claude-opus-5",
2670 model: "claude-opus-5-5",
26712671 max_tokens: 1024,
26722672 messages: [{ role: "user", content: "Hello!" }]
26732673 });
from line 2700
27002700 {
27012701 var response = await client.Messages.Create(new MessageCreateParams
27022702 {
2703 Model = Model.ClaudeOpus5,
2703 Model = Model.ClaudeOpus5_5,
27042704 MaxTokens = 1024,
27052705 Messages = [new() { Role = Role.User, Content = "Hello!" }]
27062706 });
from line 2726
27262726 client := anthropic.NewClient()
27272727 
27282728 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
2729 Model: anthropic.ModelClaudeOpus5,
2729 Model: anthropic.ModelClaudeOpus5_5,
27302730 MaxTokens: 1024,
27312731 Messages: []anthropic.MessageParam{
27322732 anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
from line 2758
27582758 try {
27592759 Message response = client.messages().create(
27602760 MessageCreateParams.builder()
2761 .model(Model.CLAUDE_OPUS_5)
2761 .model(Model.CLAUDE_OPUS_5_5)
27622762 .maxTokens(1024L)
27632763 .addUserMessage("Hello!")
27642764 .build()
from line 2785
27852785 $response = $client->messages->create(
27862786 maxTokens: 1024,
27872787 messages: [['role' => 'user', 'content' => 'Hello!']],
2788 model: 'claude-opus-5',
2788 model: 'claude-opus-5-5',
27892789 );
27902790 
27912791 // Handle successful response with stop_reason
from line 2805
28052805 
28062806 begin
28072807 response = client.messages.create(
2808 model: "claude-opus-5",
2808 model: "claude-opus-5-5",
28092809 max_tokens: 1024,
28102810 messages: [{ role: "user", content: "Hello!" }]
28112811 )
from line 2839
28392839 -H "anthropic-version: 2023-06-01" \
28402840 -H "content-type: application/json" \
28412841 -d '{
2842 "model": "claude-opus-5",
2842 "model": "claude-opus-5-5",
28432843 "max_tokens": 1024,
28442844 "stream": true,
28452845 "messages": [{"role": "user", "content": "Hello!"}]
from line 2849
28492849 ```bash CLI
28502850 # stop_reason appears in the message_delta event.
28512851 ant messages create --stream --format jsonl \
2852 --model claude-opus-5 \
2852 --model claude-opus-5-5 \
28532853 --max-tokens 1024 \
28542854 --message '{role: user, content: "Hello!"}' |
28552855 jq -c 'select(.type == "message_delta") | .delta.stop_reason'
from line 2859
28592859 client = anthropic.Anthropic()
28602860 
28612861 with client.messages.stream(
2862 model="claude-opus-5",
2862 model="claude-opus-5-5",
28632863 max_tokens=1024,
28642864 messages=[{"role": "user", "content": "Hello!"}],
28652865 ) as stream:
from line 2874
28742874 const client = new Anthropic();
28752875 
28762876 const stream = client.messages.stream({
2877 model: "claude-opus-5",
2877 model: "claude-opus-5-5",
28782878 max_tokens: 1024,
28792879 messages: [{ role: "user", content: "Hello!" }]
28802880 });
from line 2891
28912891 
28922892 var parameters = new MessageCreateParams
28932893 {
2894 Model = Model.ClaudeOpus5,
2894 Model = Model.ClaudeOpus5_5,
28952895 MaxTokens = 1024,
28962896 Messages = [new() { Role = Role.User, Content = "Hello!" }]
28972897 };
from line 2911
29112911 client := anthropic.NewClient()
29122912 
29132913 stream := client.Messages.NewStreaming(context.TODO(), anthropic.MessageNewParams{
2914 Model: anthropic.ModelClaudeOpus5,
2914 Model: anthropic.ModelClaudeOpus5_5,
29152915 MaxTokens: 1024,
29162916 Messages: []anthropic.MessageParam{
29172917 anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
from line 2938
29382938 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
29392939 
29402940 MessageCreateParams params = MessageCreateParams.builder()
2941 .model(Model.CLAUDE_OPUS_5)
2941 .model(Model.CLAUDE_OPUS_5_5)
29422942 .maxTokens(1024L)
29432943 .addUserMessage("Hello!")
29442944 .build();
from line 2961
29612961 $stream = $client->messages->createStream(
29622962 maxTokens: 1024,
29632963 messages: [['role' => 'user', 'content' => 'Hello!']],
2964 model: 'claude-opus-5',
2964 model: 'claude-opus-5-5',
29652965 );
29662966 
29672967 foreach ($stream as $event) {
from line 2975
29752975 client = Anthropic::Client.new
29762976 
29772977 stream = client.messages.stream(
2978 model: "claude-opus-5",
2978 model: "claude-opus-5-5",
29792979 max_tokens: 1024,
29802980 messages: [{ role: "user", content: "Hello!" }]
29812981 )
from line 3003
30033003 
30043004 while True:
30053005 response = client.messages.create(
3006 model="claude-opus-5", max_tokens=1024, messages=messages, tools=tools
3006 model="claude-opus-5-5", max_tokens=1024, messages=messages, tools=tools
30073007 )
30083008 
30093009 if response.stop_reason == "tool_use":
from line 3026
30263026 
30273027 while (true) {
30283028 const response = await client.messages.create({
3029 model: "claude-opus-5",
3029 model: "claude-opus-5-5",
30303030 max_tokens: 1024,
30313031 messages,
30323032 tools
from line 3057
30573057 {
30583058 var response = await client.Messages.Create(new MessageCreateParams
30593059 {
3060 Model = Model.ClaudeOpus5,
3060 Model = Model.ClaudeOpus5_5,
30613061 MaxTokens = 1024,
30623062 Messages = messages,
30633063 Tools = tools
from line 3093
30933093 
30943094 for {
30953095 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
3096 Model: anthropic.ModelClaudeOpus5,
3096 Model: anthropic.ModelClaudeOpus5_5,
30973097 MaxTokens: 1024,
30983098 Messages: messages,
30993099 Tools: tools,
from line 3130
31303130 
31313131 while (true) {
31323132 MessageCreateParams.Builder params = MessageCreateParams.builder()
3133 .model(Model.CLAUDE_OPUS_5)
3133 .model(Model.CLAUDE_OPUS_5_5)
31343134 .maxTokens(1024L)
31353135 .messages(messages);
31363136 tools.forEach(params::addTool);
from line 3162
31623162 $response = $client->messages->create(
31633163 maxTokens: 1024,
31643164 messages: $messages,
3165 model: 'claude-opus-5',
3165 model: 'claude-opus-5-5',
31663166 tools: $tools,
31673167 );
31683168 
from line 3185
31853185 
31863186 loop do
31873187 response = client.messages.create(
3188 model: "claude-opus-5",
3188 model: "claude-opus-5-5",
31893189 max_tokens: 1024,
31903190 messages: messages,
31913191 tools: tools
from line 3213
32133213 
32143214 for _ in range(max_attempts):
32153215 response = client.messages.create(
3216 model="claude-opus-5", messages=messages, max_tokens=4096
3216 model="claude-opus-5-5", messages=messages, max_tokens=4096
32173217 )
32183218 
32193219 full_response += next(
from line 3244
32443244 
32453245 for (let i = 0; i < maxAttempts; i++) {
32463246 const response = await client.messages.create({
3247 model: "claude-opus-5",
3247 model: "claude-opus-5-5",
32483248 max_tokens: 4096,
32493249 messages
32503250 });
from line 3280
32803280 {
32813281 var response = await client.Messages.Create(new MessageCreateParams
32823282 {
3283 Model = Model.ClaudeOpus5,
3283 Model = Model.ClaudeOpus5_5,
32843284 MaxTokens = 4096,
32853285 Messages = messages
32863286 });
from line 3319
33193319 
33203320 for range maxAttempts {
33213321 response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
3322 Model: anthropic.ModelClaudeOpus5,
3322 Model: anthropic.ModelClaudeOpus5_5,
33233323 MaxTokens: 4096,
33243324 Messages: messages,
33253325 })
from line 3360
33603360 for (int i = 0; i < maxAttempts; i++) {
33613361 Message response = client.messages().create(
33623362 MessageCreateParams.builder()
3363 .model(Model.CLAUDE_OPUS_5)
3363 .model(Model.CLAUDE_OPUS_5_5)
33643364 .maxTokens(4096L)
33653365 .messages(messages)
33663366 .build()
from line 3397
33973397 $response = $client->messages->create(
33983398 maxTokens: 4096,
33993399 messages: $messages,
3400 model: 'claude-opus-5',
3400 model: 'claude-opus-5-5',
34013401 );
34023402 
34033403 $fullResponse .= array_find($response->content, static fn ($block): bool => $block->type === 'text')?->text ?? '';
from line 3425
34253425 
34263426 max_attempts.times do
34273427 response = client.messages.create(
3428 model: "claude-opus-5",
3428 model: "claude-opus-5-5",
34293429 max_tokens: 4096,
34303430 messages: messages
34313431 )
from line 3459
34593459 without needing to calculate input token count
34603460 """
34613461 response = client.beta.messages.create(
3462 model="claude-opus-5",
3462 model="claude-opus-5-5",
34633463 messages=[{"role": "user", "content": prompt}],
34643464 max_tokens=20000, # Python SDK requires streaming for max_tokens above ~21k
34653465 )
from line 3487
34873487 ```typescript TypeScript
34883488 async function getMaxPossibleTokens(client: Anthropic, prompt: string): Promise<string> {
34893489 const response = await client.beta.messages.create({
3490 model: "claude-opus-5",
3490 model: "claude-opus-5-5",
34913491 max_tokens: 20000,
34923492 messages: [{ role: "user", content: prompt }]
34933493 });
from line 3522
35223522 {
35233523 var response = await client.Beta.Messages.Create(new MessageCreateParams
35243524 {
3525 Model = Model.ClaudeOpus5,
3525 Model = Model.ClaudeOpus5_5,
35263526 MaxTokens = 20000,
35273527 Messages = [new() { Role = Role.User, Content = prompt }]
35283528 });
from line 3552
35523552 ```go Go
35533553 func getMaxPossibleTokens(client anthropic.Client, prompt string) (string, error) {
35543554 response, err := client.Beta.Messages.New(context.TODO(), anthropic.BetaMessageNewParams{
3555 Model: anthropic.ModelClaudeOpus5,
3555 Model: anthropic.ModelClaudeOpus5_5,
35563556 MaxTokens: 20000,
35573557 Messages: []anthropic.BetaMessageParam{
35583558 anthropic.NewBetaUserMessage(anthropic.NewBetaTextBlock(prompt)),
from line 3593
35933593 static String getMaxPossibleTokens(AnthropicClient client, String prompt) {
35943594 BetaMessage response = client.beta().messages().create(
35953595 MessageCreateParams.builder()
3596 .model(Model.CLAUDE_OPUS_5)
3596 .model(Model.CLAUDE_OPUS_5_5)
35973597 .maxTokens(20000L)
35983598 .addUserMessage(prompt)
35993599 .build()
from line 3626
36263626 $response = $client->beta->messages->create(
36273627 maxTokens: 20000,
36283628 messages: [['role' => 'user', 'content' => $prompt]],
3629 model: 'claude-opus-5',
3629 model: 'claude-opus-5-5',
36303630 );
36313631 
36323632 $tokens = $response->usage->outputTokens;
from line 3646
36463646 ```ruby Ruby
36473647 def get_max_possible_tokens(client, prompt)
36483648 response = client.beta.messages.create(
3649 model: "claude-opus-5",
3649 model: "claude-opus-5-5",
36503650 max_tokens: 20000,
36513651 messages: [{ role: "user", content: prompt }]
36523652 )