# How to use the Claude Fable 5.1 API: model ID, API key and your first request

By SeedRouter · Published 2026-09-27 · Updated 2026-09-27

To call the Claude Fable 5.1 API, create a SeedRouter API key, point the official Anthropic SDK at `https://api.seedrouter.ai`, and send `claude-fable-5-1` as the model. The request and response keep Anthropic's Messages format, so existing Claude code changes in two places: the base URL and the key. Claude Fable 5 (`claude-fable-5`) and Claude Opus 5.5 (`claude-opus-5-5`) work the same way.

## What are the Claude model IDs?

| Model            | Model ID           | Default effort |
| ---------------- | ------------------ | -------------- |
| Claude Fable 5.1 | `claude-fable-5-1` | `high`         |
| Claude Fable 5   | `claude-fable-5`   | `high`         |
| Claude Opus 5.5  | `claude-opus-5-5`  | `medium`       |

The IDs are the same as on Anthropic's own API: fixed names with no date suffix. All three have a 1M-token context window and write up to 128K tokens per request.

## How do I get a Claude Fable 5.1 API key?

1. Sign in to SeedRouter and open [API keys](https://seedrouter.ai/apikeys).
2. Create a key and copy it. The full key is shown once; store it in an environment variable such as `SEEDROUTER_API_KEY`.
3. Add credit on the [billing page](https://seedrouter.ai/billing). Requests are billed per token from your balance, and a request that fails is not charged.

One key works for every model in the catalogue, including all three Claude models. Keep it in server-side code, never in a browser or mobile app.

## How do I send my first Claude Fable 5.1 request?

With the Anthropic Python SDK (`pip install anthropic`):

```python
import os
import anthropic

client = anthropic.Anthropic(
    api_key=os.environ["SEEDROUTER_API_KEY"],
    base_url="https://api.seedrouter.ai",
)

message = client.messages.create(
    model="claude-fable-5-1",
    max_tokens=4096,
    messages=[{"role": "user", "content": "Explain the CAP theorem in three sentences."}],
)

print("".join(block.text for block in message.content if block.type == "text"))
print(message.usage)
```

Thinking is always on for these models, so the response can start with thinking blocks. Read the answer from the blocks whose type is `text`, as above, rather than from `content[0]`.

With the Anthropic TypeScript SDK (`npm install @anthropic-ai/sdk`):

```typescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: process.env.SEEDROUTER_API_KEY,
  baseURL: "https://api.seedrouter.ai",
});

const message = await client.messages.create({
  model: "claude-fable-5-1",
  max_tokens: 4096,
  messages: [{ role: "user", content: "Explain the CAP theorem in three sentences." }],
});

for (const block of message.content) {
  if (block.type === "text") console.log(block.text);
}
```

Or with cURL:

```bash
curl https://api.seedrouter.ai/v1/messages \
  -H "x-api-key: $SEEDROUTER_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-fable-5-1",
    "max_tokens": 4096,
    "messages": [{"role": "user", "content": "Explain the CAP theorem in three sentences."}]
  }'
```

`max_tokens` covers thinking and the answer together. If a response stops with `stop_reason: "max_tokens"`, raise it or lower the effort.

## Can I use the OpenAI SDK with Claude Fable 5.1?

Yes. The same key and model ID work with the OpenAI Chat Completions and Responses formats at `https://api.seedrouter.ai/v1`:

```python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["SEEDROUTER_API_KEY"],
    base_url="https://api.seedrouter.ai/v1",
)

chat = client.chat.completions.create(
    model="claude-fable-5-1",
    messages=[{"role": "user", "content": "Explain the CAP theorem in three sentences."}],
)
print(chat.choices[0].message.content)

response = client.responses.create(
    model="claude-fable-5-1",
    input="Explain the CAP theorem in three sentences.",
)
print(response.output_text)
```

Use the Messages format when you need Claude-specific fields such as `output_config.effort`, `thinking.display` or `cache_control`. The OpenAI formats are the shortest path for code that already speaks them.

## How do I set the effort level?

Effort controls how much Claude Fable 5.1 thinks before answering: `low`, `medium`, `high` (the default), `xhigh` or `max`. Thinking tokens are billed as output, so lower effort is cheaper and faster.

```python
message = client.messages.create(
    model="claude-fable-5-1",
    max_tokens=4096,
    output_config={"effort": "low"},
    messages=[{"role": "user", "content": "Rename these variables to snake_case: userName, lastLoginAt."}],
)
```

To see a summary of the model's reasoning, add `thinking={"type": "adaptive", "display": "summarized"}`. Thinking cannot be turned off on these models, only turned down.

## What changes when I switch to Claude Opus 5.5 or Fable 5?

Change `model` and nothing else is required. Three differences are worth knowing:

* Claude Opus 5.5 defaults to `medium` effort, so the same request thinks less than on Claude Fable 5.1 unless you set effort.
* Claude Fable 5.1 and Claude Opus 5.5 reject a forced tool call (`tool_choice` of `any` or `tool`). Claude Fable 5 accepts it.
* Claude Fable 5 has a January 2026 knowledge cutoff; the other two have June 2026.

The [Claude Fable 5.1 vs Fable 5 vs Opus 5.5 guide](https://seedrouter.ai/blog/claude-fable-5-1-vs-fable-5-vs-opus-5-5) compares them in detail, and the [pricing guide](https://seedrouter.ai/blog/claude-api-pricing) shows what each costs.

## Frequently asked questions

### Is Claude Fable 5.1 API only?

On SeedRouter it is reached through the API, plus a chat playground on the [Claude Fable 5.1 page](https://seedrouter.ai/models/claude-fable-5-1) for trying prompts in the browser. Anthropic's Claude apps and Claude subscriptions are a separate product.

### Does the Claude Fable 5.1 API support streaming?

Yes. Set `stream: true` in a Messages request, or use the SDK's streaming helper, and the response arrives as server-sent events in Anthropic's format.

### Can I send images and PDFs?

Yes. Claude Fable 5.1 reads images and PDFs as content blocks in the Messages request, and writes text only. The [API reference](https://seedrouter.ai/docs/claude-fable-5-1) lists the accepted formats and limits.

### What happens if a request fails?

You get an error response with a status code and a message, and you are not charged. The [API reference](https://seedrouter.ai/docs/claude-fable-5-1) lists the error codes.

## Next steps

Try a prompt on the [Claude Fable 5.1](https://seedrouter.ai/models/claude-fable-5-1), [Claude Fable 5](https://seedrouter.ai/models/claude-fable-5) or [Claude Opus 5.5](https://seedrouter.ai/models/claude-opus-5-5) page, create a key on the [API keys page](https://seedrouter.ai/apikeys), and keep the [Claude Fable 5.1 API reference](https://seedrouter.ai/docs/claude-fable-5-1) open for every request field.
