DeepSeek V4 - Anthropic-Compatible API
- Invoke DeepSeek V4 models using the Anthropic Messages protocol
- Supports
deepseek-v4-flash/deepseek-v4-pro - Request / response structures aligned with the Anthropic API
- Plain text conversation (image / document content types are not yet supported)
- System prompts: Passed via the top-level
systemfield - Thinking mode: Controlled by the
thinkingobject; thinking content is returned as acontent[type=thinking]block - Streaming output: SSE event stream
- Tool calling: Compatible with Anthropic
tool_use/tool_resultflow
Authorization
##All APIs require Bearer Token authentication## **Get API Key**: Visit the [API Key Management Page](https://starmagic.ai/app/api-keys) to obtain your API Key **Add to request header**: ``` Authorization: Bearer YOUR_API_KEY ``` **Note**: Although Anthropic's native API uses the `x-api-key` header, EvoLink's `/v1/messages` uniformly uses Bearer Token authentication.
Authorization: Bearer YOUR_API_KEYRequest body
application/jsonModel to invoke - `deepseek-v4-flash`: Fast general-purpose - `deepseek-v4-pro`: Deep reasoning **Tip**: Both models **have thinking enabled by default**, and responses always contain a `type="thinking"` content block; set `thinking.type="disabled"` explicitly to turn it off. An unspecified or unsupported model is automatically mapped to `deepseek-v4-flash`.
"deepseek-v4-flash"Maximum number of tokens to generate (**required**) **Notes**: - The V4 series can reach up to **384,000** - Tokens produced by thinking also count toward the max_tokens limit
1024List of conversation messages, alternating between user / assistant turns **Notes**: - At least one message must be included - The final message is typically `role=user` - `image` / `document` content types are not yet supported
[
{
"role": "user",
"content": null
}
]System prompt, used to define the AI's role and behavior **Notes**: - Accepts a string or an array of strings - Unlike the `system` message on the OpenAI endpoint, the Anthropic endpoint uses a top-level `system` field
Sampling temperature **Notes**: - Range `[0.0, 2.0]` - Default 1; higher values are more diverse, lower values are more deterministic
1Nucleus sampling threshold **Notes**: - Range `[0, 1]` - Do not adjust temperature and top_p simultaneously
1Custom stop sequences **Notes**: - Generation stops when the model encounters any of these strings - Up to 4 entries (following Anthropic's specification)
[
"string"
]Whether to return via SSE streaming - `true`: Server-Sent Events streaming return - `false`: Return the complete response all at once (default)
falseThinking mode control (V4) **Notes**: - **Enabled by default on both models** (`type=enabled`) - When enabled, the response `content` array includes a `type="thinking"` reasoning block (billed as output tokens) - **Note**: The API **ignores** Anthropic's native `budget_tokens` field; use `output_config.effort` to control depth - In multi-turn conversations, simply place the thinking block from the previous response back into the assistant `content` array verbatim (the Anthropic protocol is more lenient — missing thinking will not cause an error, but preserving the signature helps context consistency)
{
"type": "enabled",
"budget_tokens": 0
}Output configuration (V4 extension) **Notes**: DeepSeek only supports the `effort` field
{
"effort": "medium"
}List of tool definitions **Notes**: - Follows the Anthropic tool definition specification - `input_schema` uses a JSON Schema object
[
{
"name": "string",
"description": "string",
"input_schema": {}
}
]Controls tool-calling behavior **Available types**: - `auto`: Model decides automatically (default when tools are provided) - `any`: Must call some tool (without specifying which) - `tool`: Must call the specified `name` - `none`: Forbid tool calls
{
"type": "auto",
"name": "string",
"disable_parallel_tool_use": true
}Response
application/jsonResponse body
Unique message ID
"string"Response object type
"message""assistant"Model actually used
"deepseek-v4-pro"List of response content blocks **Possible block types**: - `thinking`: Reasoning process (only when thinking is enabled) - `text`: Final answer text - `tool_use`: Tool call initiated by the model
[
{
"type": "text",
"text": "string",
"thinking": "string",
"signature": "string",
"id": "string",
"name": "string",
"input": {}
}
]Stop reason - `end_turn`: Natural completion - `max_tokens`: Reached the max_tokens limit - `stop_sequence`: Hit a stop_sequences entry - `tool_use`: Model triggered a tool call
"end_turn"The specific sequence hit when stop_reason=`stop_sequence`; otherwise null
Token usage statistics (Anthropic specification)
{
"input_tokens": 10,
"output_tokens": 30,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"service_tier": "standard"
}
