API compatibility - 10 documented limits
Anthropic (Claude API) API compatibility
Anthropic's native Messages API is at https://api.anthropic.com, the default ANTHROPIC_BASE_URL. Anthropic also documents an OpenAI SDK layer at https://api.anthropic.com/v1/ (chat/completions). The docs list 10 limitations: 10 for the OpenAI-compatible layer.
Verified against Anthropic's own documentation. Not documented means the docs read that day do not say; it never means No.
Compare every provider in the API compatibility matrix.
OpenAI-compatible API
SupportedNot for production. Anthropic describes this layer as a way to test and compare model capabilities, not a long-term or production-ready solution for most use cases.
https://api.anthropic.com/v1/- Endpoints
- chat/completions
- Auth
- Claude API key as the OpenAI client's api_key (sent as Authorization: Bearer); multi-workspace personal/service account keys also need the anthropic-workspace-id header
- Notes
- Anthropic positions this layer for testing and comparing model capabilities, not as a long-term or production-ready solution for most use cases. The docs describe Chat Completions only. Thinking is enabled via extra_body but the OpenAI SDK does not return Claude's thinking. Most unsupported fields are silently ignored.
From the docs
This compatibility layer is primarily intended to test and compare model capabilities, and is not considered a long-term or production-ready solution for most use cases.
Anthropic-compatible API
Native APIhttps://api.anthropic.com- Auth
- Authorization: Bearer <API key or short-lived token>, or legacy x-api-key; anthropic-version header required
- Notes
- This is the native Messages API that the other providers' Anthropic-compatible layers imitate; https://api.anthropic.com is the default ANTHROPIC_BASE_URL.
From the docs
The Claude API is a RESTful API at https://api.anthropic.com that provides programmatic access to Claude models and Claude Managed Agents.Documented limitations
Parameters, content types and features Anthropic (Claude API)'s docs say its compatibility layers ignore, reject or change, each with the line it comes from. A layer with nothing listed may still differ in ways the docs do not spell out.
OpenAI-compatible layer10
strict (function calling) ignored
The
strictparameter for function calling is ignored, which means the tool use JSON is not guaranteed to follow the supplied schema.platform.claude.com/docs/en/cli-sdks-libraries/libraries/openai-sdk audio input not supported
Audio input is not supported; it will be ignored and stripped from input
platform.claude.com/docs/en/cli-sdks-libraries/libraries/openai-sdk prompt caching not supported
Prompt caching is not supported, but it is supported in the Anthropic SDKs
platform.claude.com/docs/en/cli-sdks-libraries/libraries/openai-sdk system/developer messages hoisted into one top-level system field
System/developer messages are hoisted and concatenated into the top-level
systemfield, wherever they appear in the conversation.platform.claude.com/docs/en/cli-sdks-libraries/libraries/openai-sdk logprobs, top_logprobs, response_format, seed, presence_penalty, frequency_penalty, logit_bias, reasoning_effort, service_tier, metadata, prediction, store, user, modalities, audio ignored
logprobs| Ignored ...response_format| Ignored ...seed| Ignored ...reasoning_effort| Ignoredplatform.claude.com/docs/en/cli-sdks-libraries/libraries/openai-sdk n must be exactly 1
n| Must be exactly 1platform.claude.com/docs/en/cli-sdks-libraries/libraries/openai-sdk temperature capped at 1; on Claude 4.7+ values below 1 return 400
Between 0 and 1 (inclusive). Values greater than 1 are capped at 1. On Claude 4.7 and later models and Claude Mythos Preview, any value below 1 returns a 400 error, so omit it.
platform.claude.com/docs/en/cli-sdks-libraries/libraries/openai-sdk image_url.detail, input_audio and file content parts ignored
detail| Ignored ...array,type == "input_audio"| Ignored ...array,type == "file"| Ignoredplatform.claude.com/docs/en/cli-sdks-libraries/libraries/openai-sdk forced tool_choice errors on Claude Opus 5.5, Sonnet 5.5, Fable 5.1, Mythos 5.1
Claude Opus 5.5, Claude Sonnet 5.5, Claude Fable 5.1, and Claude Mythos 5.1 don't support forced tool use and return an error, so use "auto" on those models.
platform.claude.com/docs/en/cli-sdks-libraries/libraries/openai-sdk thinking not returned through the OpenAI SDK
the OpenAI SDK doesn't return Claude's thinking.
platform.claude.com/docs/en/cli-sdks-libraries/libraries/openai-sdk
Anthropic-compatible layer0
No limitations listed in the docs read.
Example from Anthropic (Claude API)'s docs
Copied verbatim from the provider's documentation, placeholders included.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("ANTHROPIC_API_KEY"), # Your Claude API key
base_url="https://api.anthropic.com/v1/", # the Claude API endpoint
)
response = client.chat.completions.create(
model="claude-opus-5-5", # Claude model name
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who are you?"},
],
)More on Anthropic (Claude API)
Newsletter
Know when a provider changes its API
One email per week. New models, new endpoints and the compatibility changes that break a base URL, and what they mean for your stack.