Claude Fable 5.1은 2026년 9월 1일에 출시되었으며, API 모델 ID는 날짜 접미사 없이 claude-fable-5-1이라는 정확한 문자열입니다. Fable 5와 동일하게 백만 입력 토큰당 10달러, 백만 출력 토큰당 50달러의 비용이 들지만, 캐시 읽기는 백만당 0.25달러로 절감되었고, Fable 5에는 없었던 세 가지 호환성이 깨지는 변경 사항이 포함되어 있습니다.
이 가이드는 키 얻기, 첫 번째 요청 보내기, 노력 제어, 스트리밍, tool_choice 강제 없이 도구 사용, 거부 대체 기능, 진행 상황 업데이트, 그리고 캐시가 새로운 요율로 작동하는지 확인하기 위해 usage 객체 읽기에 이르는 전체 과정을 안내합니다. 모든 요청은 JSON을 사용하는 일반 HTTP이므로, 애플리케이션 코드에 들어가기 전에 Apidog에서 빌드하고 디버깅할 수 있습니다.
새롭게 시작하는 것이 아니라 기존 Fable 5 또는 Opus 5 서비스를 마이그레이션하는 경우, 이 가이드와 함께 전체 마이그레이션 가이드를 읽어보세요. 모델 개요에 대해서는 Claude Fable 5.1이란 무엇인가부터 시작하십시오.

첫 번째 호출 전: 400을 반환하는 세 가지
1. 사고는 구성할 수 없으며, 조종만 가능합니다. Fable 5.1은 모든 요청에서 적응형 사고를 실행합니다. thinking 필드를 생략하거나 {"type": "adaptive"}를 보내십시오. {"type": "disabled"}와 {"type": "enabled", "budget_tokens": N} 모두 400을 반환합니다. disabled가 high 이하의 노력에서 허용되었던 Opus 5에서 넘어온 경우, 이를 제거하고 output_config.effort로 지출을 제어하십시오.
2. 강제 도구 사용이 사라졌습니다. tool_choice: {"type": "any"} 및 {"type": "tool", "name": "..."}는 tool_choice: type "tool" and "any" are not supported for this model.을 반환합니다. 해결책은 아래 도구 사용 단계에 있습니다.
3. 조직에 30일 데이터 보존이 필요합니다. Fable 5.1은 보호 모델(Covered Model)입니다. 데이터 보존 기간이 0인 조직 또는 작업 공간의 요청은 다른 단서 없이 400 invalid_request_error를 반환합니다. 첫 번째 호출이 실패하고 본문이 올바르게 보이는 경우, 다른 무엇보다 먼저 보존 정책을 확인하십시오.
세 가지 모두 Anthropic의 Claude Fable 5.1의 새로운 기능에 문서화되어 있습니다.
1단계: API 키 가져오기
Claude Console에 로그인하고, 조직 설정의 API 키 섹션을 열고, 키를 생성하십시오. 한 번 복사해 두십시오. 나중에 다시 읽을 수 없습니다. 코드에 붙여넣는 대신 내보내십시오:
export ANTHROPIC_API_KEY="sk-ant-..."
Apidog에서는 이를 ANTHROPIC_API_KEY라는 환경 변수로 저장하고 헤더에서 {{ANTHROPIC_API_KEY}}로 참조하여 키가 저장된 요청 본문에 포함되지 않도록 하십시오.
2단계: 첫 번째 요청 보내기
세 가지 헤더(x-api-key, anthropic-version: 2023-06-01, content-type: application/json)를 사용하여 https://api.anthropic.com/v1/messages로 POST 요청을 생성하십시오.
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"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."}
]
}'
공식 SDK를 사용한 Python에서의 동일한 호출:
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
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."}],
)
if response.stop_reason == "refusal":
print("declined:", response.stop_details.category if response.stop_details else None)
else:
for block in response.content:
if block.type == "text":
print(block.text)
첫 번째 호출부터 두 가지 습관을 들이세요. 분류기 거부는 빈 콘텐츠 배열이 있는 HTTP 200이므로 content를 읽기 전에 stop_reason을 확인하십시오. 그리고 max_tokens에 충분한 여유를 주십시오. 이는 사고 토큰과 응답 토큰을 함께 제한하며, 사고는 항상 켜져 있으므로 사고가 없는 모델에 맞춰 조정된 빡빡한 값은 여기에서 잘릴 것입니다.
응답에는 기본 display가 "omitted"일 때 텍스트가 비어 있는 thinking 블록이 포함됩니다. 이는 예상된 동작입니다. 다음 차례에 변경 없이 다시 전달하십시오.
3단계: 노력으로 비용과 깊이 제어하기
노력(effort) 매개변수는 Fable 5.1의 주요 제어 수단입니다. 이는 최상위 수준이 아닌 output_config 내부에 들어가며, low, medium, high, xhigh, max를 허용합니다. 기본값은 high입니다.
{
"model": "claude-fable-5-1",
"max_tokens": 16000,
"output_config": {"effort": "medium"},
"messages": [{"role": "user", "content": "Summarize this changelog in five bullets."}]
}
Anthropic의 지침: high에서 시작한 다음, 자체 평가를 통해 다른 수준을 시도하고, Fable 5에서 한 번 수행했더라도 수준 이름이 모델마다 동일한 사고량에 해당하지 않으므로 다시 시도하십시오. 그들의 주장은 medium이 더 낮은 비용으로 Fable 5와 대략 일치하며, low는 작업당 비용에서 Opus 및 Sonnet과 종종 경쟁력이 있다는 것입니다. 알아야 할 두 가지 노력별 동작: low에서는 Fable 5.1이 검색 및 검색 도구를 덜 자주 호출하고 기억에서 더 많이 답변하며, xhigh 및 max에서는 사고 과정에서 긴 결과물을 초안 작성한 다음 다시 작성할 수 있으므로, 둘 다에 대해 max_tokens를 설정하십시오.
대화 도중 노력 변경 (베타). Fable 5에서는 요청 간에 최상위 수준 노력을 변경하면 캐시된 접두사가 삭제되었습니다. Fable 5.1에서는 빈 콘텐츠와 output_config를 포함하는 role: "system" 메시지가 캐시를 무효화하지 않고 다음 사용자 차례부터 노력을 변경합니다. mid-conversation-output-config-2026-07-01 베타 헤더와 client.beta.messages 네임스페이스가 필요합니다.
response = client.beta.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
output_config={"effort": "high"},
betas=["mid-conversation-output-config-2026-07-01"],
messages=[
{"role": "user", "content": "Plan a migration from SQLite to PostgreSQL in three short steps."},
{"role": "assistant", "content": "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts."},
{"role": "system", "content": [], "output_config": {"effort": "low"}},
{"role": "user", "content": "Summarize the plan in one sentence."},
],
)
이러한 방식으로 노력을 낮추는 것은 신뢰할 수 있습니다. low에서 xhigh와 같은 큰 폭의 증가에 가장 효과적입니다. Opus 5의 노력 매개변수 가이드는 다섯 가지 수준을 자세히 다루며, 동일한 의미론이 여기에 적용됩니다.
4단계: 응답 스트리밍
Fable 5.1은 높은 노력으로 실행되는 어려운 작업에서 몇 분 동안 실행될 수 있으므로, 길어질 수 있는 모든 것을 스트리밍하십시오. SDK는 HTTP 타임아웃을 피하기 위해 128,000 제한에 가까운 max_tokens 값에 대해 스트리밍을 요구합니다.
with client.messages.stream(
model="claude-fable-5-1",
max_tokens=64000,
messages=[{"role": "user", "content": "Write a test plan for a rate-limited public API."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
final = stream.get_final_message()
print(final.stop_reason, final.usage.output_tokens)
Apidog에서는 스트리밍 응답이 도착하는 즉시 렌더링되므로, 첫 번째 텍스트 토큰이 나오기 전에 high 노력 턴이 사고에 얼마나 많은 시간을 소비하는지 확인할 수 있는 가장 빠른 방법입니다.
5단계: 강제 없이 도구 사용 추가
Fable 5와 동일한 방식으로 도구를 정의합니다. 달라지는 것은 호출을 보장하는 방법입니다. Fable 5에서는 tool_choice: {"type": "tool", ...}로 강제할 수 있었습니다. Fable 5.1에서는 강제 호출이 사고를 건너뛰고 모델이 작업 내용을 인수에 기록하기 때문에 400을 반환합니다.
대체 방법은 세 가지 부분으로 구성됩니다: tool_choice를 auto로 유지하고, 지침에 도구 이름을 지정하며, 인수가 항상 유효성을 검사하도록 스키마에 additionalProperties: false를 사용하여 도구에 strict: true(엄격한 도구 사용)를 설정합니다.
record_summary_tool = {
"name": "record_summary",
"description": "Record the structured summary of the document.",
"strict": True,
"input_schema": {
"type": "object",
"properties": {"summary": {"type": "string"}},
"required": ["summary"],
"additionalProperties": False,
},
}
response = client.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
tools=[record_summary_tool],
tool_choice={"type": "auto"},
messages=[{"role": "user", "content": "Summarize: The meeting moved to Thursday. Call the record_summary tool with your result."}],
)
강제 호출이 JSON을 반환하기 위해서만 존재했다면, 도구 대신 구조화된 출력(output_config.format)을 사용하십시오. 사용자가 아닌 애플리케이션이 다중 턴 대화의 현재 턴에서 특정 호출을 요구하는 경우, 최신 사용자 턴 뒤에 도구 이름을 지정하고 호출이 필요하다고 명시하는 role: "system" 메시지를 추가하고, 그 메시지를 나중에 기록에 보관하십시오. tool_choice: {"type": "none"}는 도구를 호출해서는 안 되는 턴에서 여전히 작동합니다.
에이전트 루프 자체는 변경되지 않았습니다. stop_reason이 tool_use일 때, 모든 tool_use 블록을 실행하고, 모든 tool_result 블록을 하나의 사용자 메시지로 반환하며, 어시스턴트 턴을 사고 블록을 포함하여 반환된 그대로 다시 추가합니다. 이 마지막 조항은 보존된 사고 가이드에서 설명하는 이유로 인해 이전 모델보다 Fable 5.1에서 더 중요합니다.
주의할 한 가지 동작: 다음 독립적인 읽기가 작업에 의해 암시될 뿐인 긴 루프에서 Fable 5.1은 Fable 5가 여러 개를 일괄 처리했던 곳에서 턴당 하나의 도구 호출을 발행할 수 있습니다. Anthropic의 해결책은 각 도구 결과 메시지 뒤에 추가되는 한 문장짜리 조언입니다: "먼저 다음으로 필요한 것을 비공개로 나열하십시오. 그런 다음 이 응답에서 다른 결과에 의존하지 않는 모든 항목을 요청하십시오." 이를 턴 범위 시스템 메시지(clear_at: "next_user_message", 베타 헤더 mid-conversation-system-clear-at-2026-08-21)로 보내고 이전 모든 사본을 제자리에 두십시오.
6단계: 대체 기능으로 거부 처리
Fable 5.1은 안전 분류기를 실행합니다. 거부된 요청은 stop_reason: "refusal" 및 범주(cyber, bio, frontier_llm, reasoning_extraction 또는 general_harms)를 명시하는 stop_details 객체와 함께 HTTP 200으로 반환됩니다. 어떤 출력 전의 거부는 요금이 청구되지 않습니다.
기본적으로 대체 기능(fallbacks)을 선택하십시오. 가장 간단한 형태는 server-side-fallback-2026-07-01 베타 헤더와 함께 fallbacks: "default"를 사용하는 것으로, 이는 Anthropic이 해당 범주에 권장하는 모델에서 거부된 요청을 재시도합니다. Fable 5.1의 허용된 대상은 claude-opus-4-8 및 claude-opus-5입니다.
response = client.beta.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
fallbacks="default",
betas=["server-side-fallback-2026-07-01"],
messages=[{"role": "user", "content": "Audit this authentication middleware for logic bugs."}],
)
fallback_ran = any(
entry.type == "fallback_message" for entry in (response.usage.iterations or [])
)
if fallback_ran and response.stop_reason != "refusal":
print("served by", response.model)
응답은 최상위 model 필드에 제공 모델을 명시하며, fallback 콘텐츠 블록은 핸드오프를 표시합니다. 턴을 다시 에코할 때 그 블록이 나타났던 위치에 그대로 두십시오. 두 가지 제한: fallbacks는 Batches API에서 거부되며, Bedrock, Google Cloud 또는 Foundry에서는 사용할 수 없습니다. 이들 플랫폼에서는 대신 클라이언트에 SDK의 BetaRefusalFallbackMiddleware를 등록해야 합니다. 거부 처리 가이드는 청구, 고정 라우팅 및 대체 크레딧을 사용한 수동 재시도를 다룹니다.
7단계: 긴 턴 동안 진행 상황 업데이트 받기
도구 호출 사이에 Fable 5.1은 발견한 내용과 다음에 수행할 작업에 대한 짧은 메모를 작성합니다. 각 메모는 도구 호출 직전 고유한 thinking 블록으로 도착하며, 기본 display에서는 이 블록들이 비어 있습니다. 추론 자체는 숨겨진 상태로 텍스트로 받으려면 thinking-display-updates-2026-08-18 베타 헤더와 함께 display: "updates"를 설정하십시오.
{
"model": "claude-fable-5-1",
"max_tokens": 16000,
"thinking": {"type": "adaptive", "display": "updates"},
"tools": [...],
"messages": [{"role": "user", "content": "Review the PRs open against our billing service."}]
}
비어 있지 않은 텍스트를 가진 thinking 블록은 렌더링할 수 있는 상태 줄이 됩니다. Fable 5.1은 Fable 5보다 이러한 블록을 더 적게 작성하므로, UI가 내레이션에 의존하는 경우, 모델에 최종 응답을 위해 결과를 보류하라고 지시하는 프롬프트 줄도 제거하십시오.
8단계: $0.25 캐시 요율을 위해 사용량 객체 읽기
프롬프트 캐싱은 Fable 5.1의 가격 변경이 적용되는 부분입니다. 안정적인 접두사에 cache_control을 넣고 usage에서 적중을 확인하십시오:
response = client.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
system=[{"type": "text", "text": LONG_STABLE_SYSTEM_PROMPT, "cache_control": {"type": "ephemeral"}}],
messages=[{"role": "user", "content": "Which endpoints in the spec lack an error schema?"}],
)
u = response.usage
print(u.input_tokens, u.cache_creation_input_tokens, u.cache_read_input_tokens)
첫 번째 전송 시, cache_creation_input_tokens는 0이 아닙니다 (5분 TTL에 대해 백만당 12.50달러로 청구됨). 5분 이내의 두 번째 전송 시, cache_read_input_tokens는 0이 아니어야 하며, 백만당 0.25달러로 청구됩니다. 동일한 요청에서 계속 0이라면, 접두사의 무언가가 매번 변경되는 것입니다: 시스템 프롬프트의 타임스탬프, 정렬되지 않은 JSON, 가변 도구 배열. 최소 캐시 가능한 프롬프트는 512 토큰입니다.
이 모델에 특정한 두 가지 캐시 사실. 캐시 미스가 적중보다 40배 더 비싸기 때문에 Fable 5에서보다 캐시를 따뜻하게 유지하는 것이 더 중요하며, 메시지별 노력과 턴 범위 시스템 메시지는 부분적으로 세션 중간에 재설정 없이 변경할 수 있도록 존재합니다. 그리고 캐시를 재설정하는 동일한 편집(system 재구성, 이전 턴 편집)은 이제 사고 블록도 무효화하므로, 추가 전용 원칙이 두 배의 이점을 제공합니다.
Apidog에서 전체 흐름 테스트 및 디버깅
위의 각 단계를 Apidog 컬렉션에 요청으로 저장하십시오: 첫 번째 호출, 노력 변형, 스트리밍, 도구 루프, 대체, 캐시 확인. 키와 model에 환경 변수를 사용하여 claude-fable-5와 claude-fable-5-1 간에 전체 컬렉션을 전환하는 데 한 번의 편집이면 됩니다. 그런 다음 단언(assertion)을 추가하십시오: 온화한 테스트 프롬프트에서는 stop_reason이 refusal이 아니어야 하고, 두 번째 캐시 요청에서는 usage.cache_read_input_tokens가 0보다 커야 하며, 사고 바인딩 헤더로 실행할 때 input_transformations 항목에 reason: "prefix_binding_mismatch"가 없어야 합니다. 하니스 변경 전후에 컬렉션을 실행하십시오. 이를 설정하려면 Apidog를 다운로드하십시오. 동일한 컬렉션은 Apidog CLI를 통해 CI 검사로도 작동합니다.
발생할 수 있는 오류 및 문제점
- 400
tool_choice: type "tool" and "any" are not supported for this model.auto와 지침, 그리고strict: true로 전환하십시오. thinking: {"type": "disabled"}에서 400. 해당 필드를 제거하십시오. 대신 노력을 낮추십시오.- 유효한 본문인데도 400
invalid_request_error. 조직 또는 작업 공간에 30일 보존 기간이 있는지 확인하십시오. - 400
Invalid signature in thinking block. The block is bound to a different conversation.코드가 이전 턴, 시스템 프롬프트 또는 도구 배열을 편집했습니다. 보존된 사고 가이드를 참조하십시오. - 조용한 빈 사고 텍스트.
display: "omitted"에서는 예상되는 동작입니다. 렌더링하는 경우"summarized"또는"updates"를 사용하십시오. - 캐시 읽기가 0. 불안정한 접두사. 타임스탬프와 정렬되지 않은 객체를 감사하십시오.
- 우선순위 계층 요청 유효성 검사 실패. Fable 5.1은 우선순위 계층을 지원하지 않습니다. Fable 5는 지원합니다.
자주 묻는 질문
Claude Fable 5.1 API의 모델 ID는 무엇입니까? claude-fable-5-1입니다. Amazon Bedrock에서는 anthropic.claude-fable-5-1입니다. Google Cloud, Microsoft Foundry, AWS의 Claude Platform에서는 claude-fable-5-1을 사용합니다.
Claude Fable 5.1을 사용하기 위해 베타 헤더가 필요합니까? 아닙니다. 기본 모델, 적응형 사고, 노력, 도구 및 캐싱은 모두 표준 anthropic-version: 2023-06-01 헤더에서 작동합니다. 베타 헤더는 메시지별 노력, 턴 범위 시스템 메시지, 진행 상황 업데이트, 서버 측 대체 기능 및 사고 바인딩 제어에만 필요합니다.
Claude Fable 5.1에서 도구 호출을 강제할 수 있습니까? 아니요. tool_choice의 any 및 tool은 400을 반환합니다. auto를 사용하고, 프롬프트에 도구 이름을 지정하고, 스키마 유효성 검사를 통과하는 인수를 위해 strict: true를 설정하거나, JSON 추출을 위해 구조화된 출력을 사용하십시오.
Claude Fable 5.1 API의 최대 출력은 얼마입니까? Messages API에서는 128,000 토큰입니다. 큰 것은 스트리밍하십시오. 300,000 토큰 Batch API 베타는 Fable 5.1에 대해 나열되어 있지 않습니다.
더 저렴한 캐시 읽기를 어떻게 확인할 수 있습니까? 반복 요청에서 usage.cache_read_input_tokens를 확인하십시오. 이 토큰은 Fable 5.1에서 백만당 $0.25, Fable 5에서는 $1, Opus 5에서는 $0.50으로 청구됩니다. 가격 분석이 해당 수치를 설명합니다.
Fable 5 API 가이드가 여전히 적용됩니까? 대체로 그렇습니다. Fable 5 API 가이드는 동일한 엔드포인트를 다루지만, 강제 도구 사용 예제는 이제 400을 반환하며 메시지별 노력 및 진행 상황 업데이트보다 이전입니다.
