1import{a as e,t}from"./jsx-runtime-DMbYRYqz.js";import{n}from"./lib-CNLI0OBE.js";var r=e({default:()=>s,meta:()=>a}),i=t(),a={title:`Claude Fable 5.1 API Access Options: Prices and Your First Call`,seo_title:`Claude Fable 5.1 API Access Options: Prices and First Call`,description:`Choose official Claude access or a gateway, compare dated token costs, and make a first BeatAPI Messages request without assuming SDK feature parity.`,created_at:`2026-09-02`,updated_at:`2026-09-15`,author_name:`Beat API Team`,author_image:`/logo.png`,image:`https://media.beatapi.io/blog/claude-fable-5-1-api/cover-v1.webp`,image_alt:`Article cover for âClaude Fable 5.1 API Access Options: Prices and Your First Callâ`,categories:[`api-guides`,`cost-control`],read_time:`12 min read`,headings:[{id:`claude-fable-5-1-api-access-options`,title:`Claude Fable 5.1 API access options`},{id:`choose-an-access-route`,title:`Choose an access route`},{id:`what-claude-fable-5-1-is-good-at`,title:`What Claude Fable 5.1 is good at`},{id:`claude-fable-5-1-api-pricing`,title:`Claude Fable 5.1 API pricing`},{id:`using-claude-fable-5-1-through-beatapi`,title:`Using Claude Fable 5.1 through BeatAPI`},{id:`your-first-claude-fable-5-1-request`,title:`Your first Claude Fable 5.1 request`},{id:`migration-checklist-from-an-earlier-claude-model`,title:`Migration checklist from an earlier Claude model`},{id:`common-mistakes-and-fixes`,title:`Common mistakes and fixes`},{id:`claude-fable-5-1-api-faq`,title:`Claude Fable 5.1 API FAQ`}]};function o(e){let t={a:`a`,code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...n(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h2,{children:`Claude Fable 5.1 API access options`}),` 2`,(0,i.jsx)(t.p,{children:`Claude Fable 5.1 API access options include the direct Claude API and third-party services such as BeatAPI and OpenRouter. Start with direct access when your priority is Anthropic-specific features and a direct vendor relationship. Consider BeatAPI when you want the documented Messages format, a shared account for text and media, and the public token rates below. Consider OpenRouter when choosing between its listed providers is part of your requirement.`}),` 3`,(0,i.jsxs)(t.p,{children:[`For a field-by-field procurement decision, use the `,(0,i.jsx)(t.a,{href:`/blog/claude-fable-5-1-provider-comparison`,children:`Claude Fable 5.1 provider comparison`}),`, which separates upstream identity, beta-feature support, cache billing, and operational fit.`]}),` 4`,(0,i.jsxs)(t.p,{children:[`If you already have an OpenAI SDK application, use the `,(0,i.jsx)(t.a,{href:`/blog/openai-app-to-claude-fable-5-1`,children:`OpenAI to Claude Fable 5.1 migration guide`}),` for message, tool, JSON, history, error, and rollback tests.`]}),` 5`,(0,i.jsxs)(t.p,{children:[`If you are building review automation, use the `,(0,i.jsx)(t.a,{href:`/blog/claude-fable-5-1-code-review-bot`,children:`bounded Claude Fable 5.1 code review bot workflow`}),` to freeze the diff, validate structured findings, and keep comment publication behind human approval.`]}),` 6`,(0,i.jsxs)(t.ul,{children:[` 7`,(0,i.jsxs)(t.li,{children:[`BeatAPI has already integrated `,(0,i.jsx)(t.code,{children:`claude-fable-5-1`}),`; check your key's model access before your first paid request.`]}),` 8`,(0,i.jsx)(t.li,{children:`Start with native Messages for Claude-specific fields. A compatible endpoint is not proof that every SDK feature works unchanged.`}),` 9`,(0,i.jsx)(t.li,{children:`Compare final task cost, not input price alone: include outputs, cache writes, additional turns, and retries.`}),` 10`,(0,i.jsx)(t.li,{children:`This guide checks documentation and public prices on September 15, 2026. The examples are illustrative, not a recorded latency, quality, or billing benchmark.`}),` 11`]}),` 12`,(0,i.jsxs)(t.p,{children:[`Claude Fable 5.1 is intended for demanding reasoning, coding and document-heavy work. Its documented API profile includes a 1M-token context window, up to 128K output tokens, always-on adaptive thinking, and a default `,(0,i.jsx)(t.code,{children:`high`}),` effort level.`]}),` 13`,(0,i.jsxs)(t.p,{children:[`Use it when a task crosses files, tools, long documents, or several reasoning steps. Do not choose it merely because a short classification or simple rewrite sounds impressive. Confirm the dated rate comparison below and the `,(0,i.jsx)(t.a,{href:`/pricing`,children:`live pricing page`}),` before approving a production budget.`]}),` 14`,(0,i.jsx)(t.p,{children:`The important implementation decision is not just changing a model string. Fable 5.1 always uses adaptive thinking, does not support forced tool choice, and expects thinking blocks and conversation prefixes to be preserved correctly. A robust integration should treat the request history as append-only, let the model decide when a tool applies, and measure effort against the actual task rather than assuming the same effort label means the same amount of reasoning across models.`}),` 15`,(0,i.jsxs)(`div`,{className:`my-7 rounded-xl border border-[#d9d5cc] bg-white/80 p-5 shadow-[0_16px_40px_rgba(31,30,27,0.06)]`,children:[(0,i.jsx)(`div`,{className:`text-xs font-semibold uppercase !text-[#817d72]`,children:`Quick decision`}),(0,i.jsx)(`div`,{className:`mt-2 text-base leading-7 !text-[#312f2a]`,children:`Choose Fable 5.1 for long-horizon coding, research, or document work. Start at the default effort, then lower it only after your own evals show that quality holds.`}),(0,i.jsx)(`a`,{href:`/pricing`,className:`mt-4 inline-flex rounded-lg bg-[#1f1e1b] px-4 py-2.5 text-sm font-semibold !text-white !no-underline transition-colors hover:bg-black hover:!text-white hover:!no-underline`,children:(0,i.jsx)(`span`,{className:`!text-white`,children:`Check current BeatAPI pricing`})})]}),` 16`,(0,i.jsx)(t.h2,{children:`Choose an access route`}),` 17`,(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:`Your requirement`}),(0,i.jsx)(t.th,{children:`Route to evaluate first`}),(0,i.jsx)(t.th,{children:`Check before paying`})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Direct Anthropic support and model-specific features`}),(0,i.jsx)(t.td,{children:`Claude API`}),(0,i.jsx)(t.td,{children:`Account eligibility, native feature availability, data terms and your rate limits`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Claude plus other model families under one BeatAPI account`}),(0,i.jsx)(t.td,{children:`BeatAPI`}),(0,i.jsx)(t.td,{children:`Enabled model, supported request format, current rates and settled usage`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Explicit selection among a router's providers`}),(0,i.jsx)(t.td,{children:`OpenRouter`}),(0,i.jsx)(t.td,{children:`Exact provider endpoint, model identifier, request filters and retention terms`})]})]})]}),` 18`,(0,i.jsxs)(t.p,{children:[`OpenRouter's `,(0,i.jsx)(t.a,{href:`https://openrouter.ai/anthropic/claude-fable-5.1`,children:`Fable model page`}),` exposes provider-specific prices, availability information and routing controls. Those are useful procurement facts, not evidence that it is faster for your workload or that BeatAPI offers the same provider controls. The identifier there is `,(0,i.jsx)(t.code,{children:`anthropic/claude-fable-5.1`}),`; do not paste it into a BeatAPI request that expects `,(0,i.jsx)(t.code,{children:`claude-fable-5-1`}),`.`]}),` 19`,(0,i.jsx)(t.p,{children:`For confidential documents, ask each service about data handling and applicable terms before uploading them. Do not infer zero retention, a contractual uptime guarantee, dedicated capacity, or official partnership from an API compatibility claim.`}),` 20`,(0,i.jsx)(t.h2,{children:`What Claude Fable 5.1 is good at`}),` 21`,(0,i.jsx)(t.p,{children:`Anthropic positions Fable 5.1 for work that takes longer than a single answer: multi-file coding changes, deep research, browser or desktop operation, and analysis that ends in a document, spreadsheet, or slide deck. It accepts text and images and can connect details across a very large context window.`}),` 22`,(0,i.jsx)(t.p,{children:`That does not mean every prompt should include a million tokens. Large context is a ceiling, not a requirement. Start with the smallest relevant context, preserve stable prefixes for caching, and add files or tool results only when they change the decision. This makes both latency and cost easier to reason about.`}),` 23`,(0,i.jsxs)(t.p,{children:[`The modelâs effort control is especially important. The default is `,(0,i.jsx)(t.code,{children:`high`}),`, but the official prompting guidance recommends testing `,(0,i.jsx)(t.code,{children:`low`}),`, `,(0,i.jsx)(t.code,{children:`medium`}),`, `,(0,i.jsx)(t.code,{children:`xhigh`}),`, and `,(0,i.jsx)(t.code,{children:`max`}),` against your own evals. Effort labels are model-specific; `,(0,i.jsx)(t.code,{children:`medium`}),` on Fable 5.1 should not be treated as a direct equivalent of `,(0,i.jsx)(t.code,{children:`medium`}),` on another model.`]}),` 24`,(0,i.jsx)(t.h2,{children:`Claude Fable 5.1 API pricing`}),` 25`,(0,i.jsxs)(t.p,{children:[`The following public token rates were checked on September 15, 2026 against the `,(0,i.jsx)(t.a,{href:`https://platform.claude.com/docs/en/about-claude/pricing`,children:`Claude pricing documentation`}),` and `,(0,i.jsx)(t.a,{href:`/claude-fable-5-1-api`,children:`BeatAPI model page`}),`. Prices are in USD per million tokens, abbreviated as MTok.`]}),` 26`,(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:`Usage item`}),(0,i.jsx)(t.th,{style:{textAlign:`right`},children:`Official price`}),(0,i.jsx)(t.th,{style:{textAlign:`right`},children:`BeatAPI price`}),(0,i.jsx)(t.th,{children:`Billing note`})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Base input`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`$10.00`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`$5.00`}),(0,i.jsx)(t.td,{children:`Uncached input, excluding separately metered cache tokens`})]}
26),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`5-minute cache write`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`$12.50`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`$6.25`}),(0,i.jsx)(t.td,{children:`Useful for a stable prompt prefix`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`1-hour cache write`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`$20.00`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`$10.00`}),(0,i.jsx)(t.td,{children:`Useful for longer agent sessions`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Cache read`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`$0.25`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`$0.125`}),(0,i.jsx)(t.td,{children:`Count only tokens actually reported as cache reads`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Output`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`$50.00`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`$25.00`}),(0,i.jsx)(t.td,{children:`Use metered output, not a count of displayed words`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Batch input / output`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`$5.00 / $25.00`}),(0,i.jsx)(t.td,{style:{textAlign:`right`},children:`â`}),(0,i.jsx)(t.td,{children:`The current BeatAPI table does not list a separate batch rate`})]})]})]}),` 27`,(0,i.jsxs)(t.p,{children:[`The BeatAPI column agrees with the public retail configuration on that date. The `,(0,i.jsx)(t.a,{href:`/pricing`,children:`live pricing table`}),` remains the source of truth; these rates are not a promise of the lowest price across all providers or account contracts.`]}),` 28`,(0,i.jsxs)(t.p,{children:[`For a simple budget example, a request with 200K input tokens and 10K output tokens would use the official base rates to estimate $2.50 before caching: `,(0,i.jsx)(t.code,{children:`0.2 Ã $10 + 0.01 Ã $50`}),`. The same arithmetic at BeatAPIâs current half-price rate is about $1.25. Real agent sessions can be cheaper when a stable prefix is read from cache, or more expensive when the model produces long outputs and repeated tool turns.`]}),` 29`,(0,i.jsxs)(t.p,{children:[`For a smaller first-call budget, assume 2,000 uncached input and 500 output tokens: `,(0,i.jsx)(t.code,{children:`0.002 Ã $5 + 0.0005 Ã $25 = $0.0225`}),` on BeatAPI. One thousand such requests would be $22.50 before additional billed turns or retries. This is arithmetic, not a measured token count or invoice. If only 900 results meet your acceptance criteria, the same $22.50 is $0.025 per accepted result. That denominator matters more than a slogan about cheap tokens.`]}),` 30`,(0,i.jsx)(t.p,{children:`For caching, calculate uncached input, each cache-write class, cache reads, and output as separate buckets. Do not charge the same token as both uncached input and a cache read in your worksheet. Confirm the actual usage fields for your chosen format before estimating savings.`}),` 31`,(0,i.jsx)(t.h2,{children:`Using Claude Fable 5.1 through BeatAPI`}),` 32`,(0,i.jsxs)(t.p,{children:[`BeatAPI has an Anthropic-compatible `,(0,i.jsx)(t.code,{children:`POST /v1/messages`}),` surface. It accepts the familiar `,(0,i.jsx)(t.code,{children:`x-api-key`}),` or Bearer authentication shape and forwards the provider-format request through the text gateway. The public text model list and the model registry are the authority for which IDs are enabled for a specific BeatAPI environment.`]}),` 33`,(0,i.jsx)(t.p,{children:`The integration boundary matters: BeatAPI owns the API key, balance check, request routing, usage reconciliation, and compatible response surface; the request body remains in Anthropicâs Messages shape. Existing applications can therefore keep most of their client code and change the base URL, authentication, and model selection at the BeatAPI boundary.`}),` 34`,(0,i.jsxs)(t.p,{children:[`The public `,(0,i.jsx)(t.a,{href:`/claude-fable-5-1-api`,children:`Claude Fable 5.1 model page`}),` is the product entry point for the current integration. Before sending production traffic, still check the environmentâs model list and account balance; a model page does not remove account-level limits or billing checks.`]}),` 35`,(0,i.jsx)(t.h2,{children:`Your first Claude Fable 5.1 request`}),` 36`,(0,i.jsxs)(t.p,{children:[`Create a key in your signed-in BeatAPI dashboard, confirm sufficient balance, and store `,(0,i.jsx)(t.code,{children:`BEATAPI_API_KEY`}),` as a server-side environment variable. Do not put it in browser code, a public repository, or a prompt sent to another service. First check the model list:`]}),` 37`,(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:`language-bash`,children:`curl --fail-with-body https://api.beatapi.io/v1/models \\ 38 -H "Authorization: Bearer $BEATAPI_API_KEY" 39`})}),` 40`,(0,i.jsxs)(t.p,{children:[`Confirm that `,(0,i.jsx)(t.code,{children:`data`}),` contains `,(0,i.jsx)(t.code,{children:`claude-fable-5-1`}),`. If it is missing, stop and check model access; repeatedly sending a paid generation request is not an access test. The following snippets show request shapes and have not been executed as part of this refresh.`]}),` 41`,(0,i.jsxs)(t.p,{children:[`This is the direct Anthropic-compatible request shape. Replace the base URL and key with the provider or gateway y
41ou have actually enabled. Keep `,(0,i.jsx)(t.code,{children:`anthropic-version`}),` explicit when using raw HTTP.`]}),` 42`,(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:`language-bash`,children:`curl https://api.anthropic.com/v1/messages \\ 43 -H "x-api-key: $ANTHROPIC_API_KEY" \\ 44 -H "anthropic-version: 2023-06-01" \\ 45 -H "content-type: application/json" \\ 46 -d '{ 47 "model": "claude-fable-5-1", 48 "max_tokens": 4096, 49 "messages": [ 50 { 51 "role": "user", 52 "content": "Migration plan: replace the current chat model, reuse existing tool schemas, and switch all traffic at once. Identify the three highest-risk assumptions and propose a test for each." 53 } 54 ] 55 }' 56`})}),` 57`,(0,i.jsx)(t.p,{children:`The same message structure can be sent through BeatAPI:`}),` 58`,(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:`language-bash`,children:`curl https://api.beatapi.io/v1/messages \\ 59 -H "Authorization: Bearer $BEATAPI_API_KEY" \\ 60 -H "Content-Type: application/json" \\ 61 -H "anthropic-version: 2023-06-01" \\ 62 -d '{ 63 "model": "claude-fable-5-1", 64 "max_tokens": 4096, 65 "messages": [ 66 {"role": "user", "content": "Review this release plan: add a required customer_id column to an existing orders table, deploy the application first, then backfill old rows. Give three risks and one verification step for each. Do not invent a successful test result."} 67 ] 68 }' 69`})}),` 70`,(0,i.jsx)(t.p,{children:`For a production client, record your own request ID, model ID, effort setting, input and output token usage, latency, and whether a retry occurred. If the request is part of an agent loop, also record tool turns and the final user-visible outcome. A lower token price is useful only when the whole task remains reliable.`}),` 71`,(0,i.jsxs)(t.p,{children:[`For this example, acceptance means the answer identifies the required-field/backfill sequencing risk, explains deployment compatibility, and proposes checks you can actually run. Inspect text blocks rather than assuming the first content block is text. Check `,(0,i.jsx)(t.code,{children:`stop_reason`}),` for truncation or a tool request, and reconcile the returned usage with the settled Dashboard entry. HTTP success alone does not mean the response is complete or correct.`]}),` 72`,(0,i.jsx)(t.h3,{children:`Which SDK format should I use?`}),` 73`,(0,i.jsxs)(t.p,{children:[`Before switching formats, save a non-streaming Messages response as `,(0,i.jsx)(t.code,{children:`response.json`}),` and extract text blocks explicitly. This parsing example is illustrative, not a recorded successful call:`]}),` 74`,(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:`language-bash`,children:`jq -r '.content[]? | select(.type == "text") | .text' response.json 75jq '{stop_reason, usage}' response.json 76`})}),` 77`,(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:(0,i.jsx)(t.code,{children:`stop_reason`})}),(0,i.jsx)(t.th,{children:`Application action`})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:`end_turn`})}),(0,i.jsx)(t.td,{children:`Extract text and check it against the task's acceptance criteria.`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:`max_tokens`})}),(0,i.jsx)(t.td,{children:`Mark the answer incomplete; review the budget before choosing whether to continue. Do not blindly retry.`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:`tool_use`})}),(0,i.jsx)(t.td,{children:`Run only authorized tools, preserve returned conversation blocks, and send the corresponding tool results.`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:`refusal`})}),(0,i.jsx)(t.td,{children:`Show an appropriate message and stop repeating the same request.`})]})]})]}),` 78`,(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:`Existing client`}),(0,i.jsx)(t.th,{children:`BeatAPI endpoint`}),(0,i.jsx)(t.th,{children:`Boundary to test`})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Anthropic Messages`}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:`/v1/messages`})}
78),(0,i.jsx)(t.td,{children:`Native Claude fields and content blocks`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`OpenAI Chat Completions`}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:`/v1/chat/completions`})}),(0,i.jsx)(t.td,{children:`Chat message, tool and response shapes`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`OpenAI Responses`}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:`/v1/responses`})}),(0,i.jsx)(t.td,{children:`Input, output and reasoning options`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Gemini-compatible client`}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:`/v1beta/models/claude-fable-5-1:generateContent`})}),(0,i.jsx)(t.td,{children:`Contents and parts format`})]})]})]}),` 79`,(0,i.jsxs)(t.p,{children:[`These are the formats documented in `,(0,i.jsx)(t.a,{href:`https://docs.beatapi.io/text-api/claude`,children:`BeatAPI's Claude API reference`}),`. They do not make the request bodies interchangeable. Start with one text request, then test streaming, tools and caching individually. Do not assume hosted tools, beta headers or an entire vendor SDK are supported because plain text works.`]}),` 80`,(0,i.jsx)(t.h2,{children:`Migration checklist from an earlier Claude model`}),` 81`,(0,i.jsx)(t.h3,{children:`1. Change the model ID, then run evals`}),` 82`,(0,i.jsxs)(t.p,{children:[`Use `,(0,i.jsx)(t.code,{children:`claude-fable-5-1`}),` on the Claude API. Provider-specific model IDs can differ; confirm the identifier in your target platformâs model list. Keep a small representative suite of coding, research, tool-use, and long-context tasks so that you can compare quality, cost, and latency.`]}),` 83`,(0,i.jsx)(t.h3,{children:`2. Remove forced tool choice`}),` 84`,(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.code,{children:`tool_choice: {"type":"any"}`}),` and `,(0,i.jsx)(t.code,{children:`tool_choice: {"type":"tool", ...}`}),` are rejected. Use the default `,(0,i.jsx)(t.code,{children:`auto`}),` choice and explain in the prompt when a tool applies. If the output must satisfy a schema, use strict tool use or structured outputs instead of forcing the call.`]}),` 85`,(0,i.jsx)(t.h3,{children:`3. Preserve thinking blocks and stable prefixes`}),` 86`,(0,i.jsx)(t.p,{children:`Fable 5.1 uses adaptive thinking. Do not ask it to disable thinking with the older enabled/disabled shapes. When you send a later turn, pass thinking blocks back unchanged and avoid editing an earlier message, the system prompt, or the tools array. Use append-only history, turn-scoped system messages, or server-side compaction when the conversation needs new instructions or less context. Scoped system messages are a beta feature; verify support in the selected provider and request format before using them.`}),` 87`,(0,i.jsx)(t.h3,{children:`4. Test effort as a cost-quality control`}),` 88`,(0,i.jsxs)(t.p,{children:[`Start with `,(0,i.jsx)(t.code,{children:`high`}),`. For routine turns, test `,(0,i.jsx)(t.code,{children:`medium`}),` or `,(0,i.jsx)(t.code,{children:`low`}),`; for the hardest tasks, test `,(0,i.jsx)(t.code,{children:`xhigh`}),` or `,(0,i.jsx)(t.code,{children:`max`}),`. Treat this as an eval-backed routing decision, not a global setting copied from another model.`]}),` 89`,(0,i.jsx)(t.h2,{children:`Common mistakes and fixes`}),` 90`,(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:`Mistake`}),(0,i.jsx)(t.th,{children:`What happens`}),(0,i.jsx)(t.th,{children:`Fix`})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Force a tool call`}),(0,i.jsx)(t.td,{children:`The request returns a 400 error`}),(0,i.jsxs)(t.td,{children:[`Use `,(0,i.jsx)(t.code,{children:`tool_choice: {"type":"auto"}`}),` and state the tool condition in the prompt`]})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Edit earlier history after a thinking turn`}),(0,i.jsx)(t.td,{children:`Thinking blocks can be rejected or dropped`}),(0,i.jsx)(t.td,{children:`Keep the prefix append-only; use scoped system messages or compaction`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsxs)(t.td,{children:[`Assume `,(0,i.jsx)(t.code,{children:`medium`}),` means the same thing everywhere`]}),(0,i.jsx)(t.td,{children:`Cost and quality comparisons become misleading`}),(0,i.jsx)(t.td,{children:`Re-run the same eval suite at each effort level`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Send a huge context by default`}),(0,i.jsx)(t.td,{children:`Latency and input cost rise without better decisions`}),(0,i.jsx)(t.td,{children:`Start small and add only relevant files or tool results`})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Treat a refusal as a transport failure`}),(0,i.jsx)(t.td,{children:`The application retries the same unsafe request forever`}),(0,i.jsxs)(t.td,{children:[`Handle `,(0,i.jsx)(t.code,{children:`stop_reason: refusal`}),`, inspect the allowed error metadata, and use a documented fallback path`]})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Hardcode a BeatAPI rate`}),(0,i.jsx)(t.td,{children:`The article or product UI drifts from the live configuration`}),(0,i.jsxs)(t.td,{children:[`Recheck the model registry and `,(0,i.jsx)(t.a,{href:`/pricing`,children:`pricing page`}),` before launch`]})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:`Retry every failure immediately`}),(0,i.jsx)(t.td,{children:`Costs or rate-limit pressure increase`}),(0,i.jsx)(t.td,{children:`Fix authentication on 401; inspect balance on 402; back off with a cap on 429; investigate 502/503 and uncertain request outcomes before resubmitting`})]})]})]}),` 91`,(0,i.jsx)(t.h2,{children:`Claude Fable 5.1 API FAQ`}),` 92`,(0,i.jsx)(t.h3,{children:`What is the Claude Fable 5.1 model ID?`}),` 93`,(0,i.jsxs)(t.p,{children:[`The Claude API model ID is `,(0,i.jsx)(t.code,{children:`claude-fable-5-1`}),`. Partner platforms may use their own qualified identifier, so read the target platformâs model list before deployment.`]}),` 94`,(0,i.jsx)(t.h3,{children:`How large is the context window?`}),` 95`,(0,i.jsx)(t.p,{children:`The official specification lists a 1M-token context window and up to 128K output tokens. Your application should still budget context deliberately; maximum capacity is not a recommendation to send every available document.`}),` 96`,(0,i.jsx)(t.h3,{children:`Can adaptive thinking be disabled?`}),` 97`,(0,i.jsxs)(t.p,{children:[`No. Fable 5.1 uses adaptive thinking. Control depth with the `,(0,i.jsx)(t.code,{children:`effort`}),` setting and validate the trade-off with your own tasks.`]}),` 98`,(0,i.jsx)(t.h3,{children:`Can I force Fable 5.1 to call a specific tool?`}),` 99`,(0,i.jsxs)(t.p,{children:[`No. Forced `,(0,i.jsx)(t.code,{children:`any`}),` and named-tool choices are not supported. Use `,(0,i.jsx)(t.code,{children:`auto`}),`, strict tool schemas, and an explicit instruction describing when the tool applies.`]}),` 100`,(0,i.jsx)(t.h3,{children:`Is BeatAPIâs price exactly half of Anthropicâs?`}),` 101`,(0,i.jsxs)(t.p,{children:[`BeatAPI currently positions the public Fable 5.1 rates at approximately half of the official list price. The final customer-facing quote must come from the live `,(0,i.jsx)(t.a,{href:`/pricing`,children:`pricing table`}),` and enabled model configuration, not from a static blog paragraph.`]}),` 102`,(0,i.jsx)(t.h3,{children:`Can I call Fable 5.1 with a BeatAPI key?`}),` 103`,(0,i.jsxs)(t.p,{children:[`Yes. BeatAPI provides the Anthropic-compatible route for Claude Fable 5.1. Use the `,(0,i.jsx)(t.a,{href:`/claude-fable-5-1-api`,children:`model page`}),` and `,(0,i.jsx)(t.code,{children:`GET /v1/models`}),` to confirm the current public configuration, then make sure the account has balance and permission to send production traffic.`]}),` 104`,(0,i.jsx)(t.h3,{children:`Does choosing a cheaper route guarantee identical output quality?`}),` 105`,(0,i.jsx)(t.p,{children:`No. Keep the exact model, prompt, context, effort and output budget fixed, then compare accepted results and failure cases. Public prices and compatible response shapes cannot establish quality equivalence, latency or service reliability.`}),` 106`,(0,i.jsx)(t.h3,{children:`Is an API call included in my Claude chat subscription?`}),` 107`,(0,i.jsx)(t.p,{children:`Do not assume a chat subscription supplies API credentials or balance. For BeatAPI you need a BeatAPI key and funded account; verify direct Claude billing separately if you choose that route.`}),` 108`,(0,i.jsxs)(`div`,{className:`mt-10 rounded-xl border border-[#d9d5cc] bg-[#1f1e1b] p-6 text-white shadow-[0_18px_50px_rgba(31,30,27,0.12)]`,children:[(0,i.jsx)(`div`,{className:`text-xs font-semibold uppercase !text-[#cfc7bb]`,children:`Build the integration around the contract`}),(0,i.jsx)(`div`,{className:`mt-2 text-lg font-semibold !text-white`,children:`Keep model selection, usage, and pricing observable.`}),(0,i.jsxs)(`div`,{className:`mt-2 text-sm leading-6 !text-[#e8e1d6]`,children:[`Read the `,(0,i.jsx)(`a`,{href:`https://docs.beatapi.io/text-api/claude`,children:`BeatAPI Claude API docs`}),` for authentication and compatible endpoints, then confirm the live price before you route production traffic.`]}),(0,i.jsx)(`a`,{href:`/claude-fable-5-1-api`,className:`mt-5 inline-flex rounded-lg bg-white px-4 py-2.5 text-sm font-semibold !text-[#1f1e1b] !no-underline transition-colors hover:bg-[#f3eee6] hover:!text-[#1f1e1b] hover:!no-underline`,children:(0,i.jsx)(`span`,{className:`!text-[#1f1e1b]`,children:`Check Fable access and create an API key`})})]}),` 109`,(0,i.jsx)(t.h3,{children:`Sources`}),` 110`,(0,i.jsxs)(t.ul,{children:[` 111`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:`https://platform.claude.com/docs/en/models/fable-5-1/overview`,children:`Claude Fable 5.1 overview`})}),` 112`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:`https://platform.claude.com/docs/en/models/fable-5-1/whats-new-fable-5-1`,children:`Whatâs new in Claude Fable 5.1`})}),` 113`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:`https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-1`,children:`Prompting Claude Fable 5.1`})}),` 114`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:`https://platform.claude.com/docs/en/api/messages/create`,children:`Create a Message API reference`})}),` 115`,(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:`https://platform.claude.com/docs/en/about-claude/pricing`,children:`Anthropic API pricing`})}),` 116`]})]})}function s(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}export{a as n,r as t};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.