Introduction
Claude Fable 5 is Anthropic's narrative-leaning chat model, served here on one OpenAI-compatible endpoint at /v1/chat/completions. It reads up to 1,000,000 tokens per request and writes up to 128,000 in a single reply - enough to resend a whole roleplay transcript word for word and get a full chapter back.
Message content is text and images. Reasoning effort takes low, medium or high (medium by default), up to 128 tool definitions ride on the same call, and the reply can stream over Server-Sent Events. Sampling is fixed by the model, so temperature and top_p are not part of the request.
Key features & highlights
A million tokens for the story so far
Long sessions rarely break because the prose gets worse; they break when a character forgets a promise made thirty turns back. With 1,000,000 tokens of input you can send the transcript exactly as it was written instead of a summary of it, so the line that only matters later is still there when it does.
Chapter-length replies
max_tokens goes up to 128,000 against a default of 4,096. Raise it on purpose when you want a whole chapter in one pass: a scene written in a single generation keeps its person, tense and pacing, while stitched fragments tend to drift at the seams.
Effort you set per request
low, medium and high are one string on the request body, with medium as the default. Raise it for a scene that has to reconcile planted details and committed facts, and drop it for quick conversational turns where speed matters more than deliberation.
Request parameters
| Parameter | Required | Description |
|---|---|---|
messages | Yes | Ordered conversation turns. Content is a string, or an array of text and |
max_tokens | No | Caps the reply at 128,000; the default is 4,096. Raise it when the ask is a whole chapter rather than an opening. |
reasoning_effort | No | low, medium or high; medium is the default. The top level spends longer holding continuity across dozens of turns. |
stop | No | Up to 4 sequences, as a string or an array. The reply ends as soon as the model writes one of them, and the matched text itself is left out. at least 1 characters · at least 1 items · at most 4 items |
tools | No | Up to 128 function definitions per request. at most 128 items |
parallel_tool_calls | No | true or false, default true: the model may request several tool calls in one turn. Default: |
tool_choice | No | auto, none, required, or an object naming one function. |
Pricing
Input $9 / Output $45 per 1 million tokens
Use cases
One character across fifty turns
Put the persona and the committed facts in the system message and the entire prior text in the history. What the character swore, refused or let slip is read in its original wording on every turn, rather than reconstructed from a reminder.
Ensemble scenes
Four characters in one room, each with their own diction, verbal habits and taboos already on record. Resend the whole scene to continue it and each voice stays attached to its speaker instead of converging on one shared register.
Serial fiction, one chapter per call
Send the story so far and ask for the next chapter with max_tokens raised to fit it. A single long generation has no seams to repair, which saves the editing pass that stitched output usually needs.
Prompt guide & pro tips
Send the prior text, not a summary
A summary keeps what looked important at the time, and in long fiction that is rarely the detail you need later. Put the history in the messages array oldest first and keep voice, point of view and boundaries in the system message.
Write committed facts as a short list
The letter was never sent; the debt is owed to the younger brother; the narrator never uses the sister's given name. Three lines in the system message are harder to overlook than three facts buried 200,000 tokens back.
Plan around the request limits
A max_tokens above 128,000 fails validation, and tool results share the same window as the prose. Video and audio parts are rejected, and a conversation cannot end on an assistant message to prefill the reply. For machine-readable output, define a tool whose parameters are your JSON schema and force it with tool_choice.
API quick start
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "anthropic/claude-fable-5/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
See the API reference for authentication, the complete schema, polling, and error handling.














