API compatibility - 10 documented limits
DeepSeek API compatibility
DeepSeek documents an OpenAI-compatible API at https://api.deepseek.com (chat/completions). Its Anthropic-compatible base URL, the value for ANTHROPIC_BASE_URL, is https://api.deepseek.com/anthropic. The docs list 10 limitations: 10 for the Anthropic-compatible layer.
Verified against DeepSeek'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
Supportedhttps://api.deepseek.com- Endpoints
- chat/completions
- Auth
- Authorization: Bearer ${DEEPSEEK_API_KEY}
- Notes
- Models listed on the quick start: deepseek-flash and deepseek-v4-pro. Legacy names deepseek-v4-flash and deepseek-v4-flash-vision-exp are still accepted and served by DeepSeek-V4.1-Flash-1017. Thinking is enabled via a non-standard thinking field (extra_body in the Python SDK).
From the docs
The DeepSeek API uses an API format compatible with OpenAI/Anthropic. By modifying the configuration, you can use the OpenAI/Anthropic SDK or softwares compatible with the OpenAI/Anthropic API to access the DeepSeek API.
Anthropic-compatible API
Supportedhttps://api.deepseek.com/anthropic- Auth
- ANTHROPIC_API_KEY env var (x-api-key header: Fully Supported)
- Notes
- Claude model names are mapped: claude-opus* to deepseek-v4-pro, claude-haiku*/claude-sonnet* to deepseek-flash. Non-claude unsupported model names return 400.
From the docs
To meet the demand for using the Anthropic API ecosystem, our API has added support for the Anthropic API format, with thebase_urlbeinghttps://api.deepseek.com/anthropic.
Documented limitations
Parameters, content types and features DeepSeek'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 layer0
No limitations listed in the docs read.
Anthropic-compatible layer10
anthropic-version header ignored
anthropic-version | Ignored
api-docs.deepseek.com/guides/anthropic_api thinking.budget_tokens ignored
thinking | Supported (
budget_tokensis ignored)api-docs.deepseek.com/guides/anthropic_api top_k ignored
top_k | Ignored
api-docs.deepseek.com/guides/anthropic_api container, mcp_servers, service_tier ignored
container | Ignored | mcp_servers | Ignored | ... service_tier | Ignored
api-docs.deepseek.com/guides/anthropic_api cache_control ignored (tools, text, tool_use, tool_result)
cache_control | Ignored
api-docs.deepseek.com/guides/anthropic_api disable_parallel_tool_use ignored
auto | Supported (
disable_parallel_tool_useis ignored)api-docs.deepseek.com/guides/anthropic_api document content blocks not supported
array, type = "document" | | Not Supported
api-docs.deepseek.com/guides/anthropic_api redacted_thinking not supported
array, type="redacted_thinking" | | Not Supported
api-docs.deepseek.com/guides/anthropic_api mcp_tool_use / mcp_tool_result / code_execution_tool_result / container_upload / search_result blocks not supported
array, type = "mcp_tool_use" | | Not Supported
api-docs.deepseek.com/guides/anthropic_api output_config limited to effort
output_config | Only
effortis supportedapi-docs.deepseek.com/guides/anthropic_api
Example from DeepSeek's docs
Copied verbatim from the provider's documentation, placeholders included.
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get('DEEPSEEK_API_KEY'),
base_url="https://api.deepseek.com",
)
response = client.chat.completions.create(
model="deepseek-flash",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "Hello"},
],
stream=False,
reasoning_effort="high",
extra_body={"thinking": {"type": "enabled"}},
)More on DeepSeek
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.