# Claude Fable 5.2 (`anthropic/claude-fable-5.2`): API > anthropic/claude-fable-5.2 is a language model from Anthropic you can call on the OceanToken API, with a 1M-token context window and up to 128K output tokens; it supports reasoning, tool calling, image input, file input. Endpoint: `POST https://api.oceantoken.ai/v1/chat/completions` (also `/v1/responses` and `/v1/messages`). Auth: `Authorization: Bearer $OCEANTOKEN_API_KEY`. OpenAI-compatible; the OpenAI SDKs work with base URL https://api.oceantoken.ai/v1. ## Request parameters - `model` (string; required): This model's ID. - `messages` (array; required): The conversation so far: objects with a `role` (`system`, `user`, `assistant` or `tool`) and a `content`, a string or a list of content parts: text, and images, video, audio or files on models that take them. - `stream` (boolean; default false): Send the answer as server-sent events as it is written. - `stream_options` (object): With `stream`: `{"include_usage": true}` adds a last event with the token counts. - `max_tokens` (integer; 1 to 128000): The most tokens to write, reasoning included. `max_completion_tokens` is accepted as the same thing. - `stop` (string or array): Up to 4 strings; the answer ends before any of them. - `response_format` (object; json_schema): `{"type": "json_schema", "json_schema": {"name": ..., "schema": {...}}}` for output that matches your schema. Plain `json_object` is not supported on this model; give a schema. - `tools` (array): Functions the model may call: `{"type": "function", "function": {"name", "description", "parameters"}}`. - `user` (string): Your own ID for the end user, for your records. ## Message content parts Besides plain text, `messages[].content` can be a list of parts: ### `text` Text. - `text` (string; required): The text. - `cache_control` (object): On a content part, `{"type": "ephemeral"}` caches the prompt up to and including it, so a repeat of that prefix is billed at the cache price. Prefixes under about 1,024 tokens are not cached. ```json {"type":"text","text":"Describe this."} ``` ### `image_url` An image, as a public https:// URL or a data URL. - `image_url.url` (string; required): https:// URL or `data:image/...;base64,...`. ```json {"type":"image_url","image_url":{"url":"https://example.com/photo.jpg"}} ``` ### `file` A document such as a PDF, by URL or as base64. - `file.file_data` (string; required): A data URL or an https:// URL. ```json {"type":"file","file":{"file_data":"data:application/pdf;base64,...","filename":"report.pdf"}} ``` ## Example: Image input ```bash curl https://api.oceantoken.ai/v1/chat/completions \ -H "Authorization: Bearer $OCEANTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "anthropic/claude-fable-5.2", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What is in this image?" }, { "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } } ] } ] }' ``` ```python import os from openai import OpenAI client = OpenAI(base_url="https://api.oceantoken.ai/v1", api_key=os.environ["OCEANTOKEN_API_KEY"]) response = client.chat.completions.create( model="anthropic/claude-fable-5.2", messages=[ { "role": "user", "content": [ {"type": "text", "text": "What is in this image?"}, { "type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}, }, ], }, ], ) print(response.choices[0].message.content) ``` ## Response - `id` (string): The request's ID. - `choices[].message.content` (string): The answer. - `choices[].message.reasoning_content` (string): The model's reasoning, on models that return it. - `choices[].message.tool_calls` (array): The tools the model wants called, with JSON arguments. - `choices[].finish_reason` (string): `stop`, `length` (hit max_tokens), `tool_calls` or `content_filter`. - `usage.prompt_tokens` (integer): Input tokens, media included. - `usage.completion_tokens` (integer): Output tokens, reasoning included. - `usage.prompt_tokens_details.cached_tokens` (integer): Input tokens read from the prompt cache. - `usage.completion_tokens_details.reasoning_tokens` (integer): Output tokens spent reasoning. With `stream: true`, `chat.completion.chunk` events carry `choices[].delta`; the stream ends with `data: [DONE]`. ```json { "id": "chatcmpl-...", "object": "chat.completion", "created": 1792000000, "model": "anthropic/claude-fable-5.2", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "...", "reasoning_content": null, "tool_calls": null }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 12, "completion_tokens": 20, "total_tokens": 32, "prompt_tokens_details": { "cached_tokens": 0 }, "completion_tokens_details": { "reasoning_tokens": 0 } } } ``` ## More - Model page: https://docs.oceantoken.ai/models/anthropic/claude-fable-5.2 - This spec as JSON (with a JSON Schema of the request): https://docs.oceantoken.ai/models/anthropic/claude-fable-5.2/spec.json - Guide: https://docs.oceantoken.ai/guides/text - All models: https://docs.oceantoken.ai/llms.txt