DeepSeek-V4.1-Flash (1017)

Starting at
Input
$0.30/ 1M
Output
$1.20/ 1M
Open dashboard

Channel

Each channel is compared at its lowest input-price tier; output breaks ties. A dash means /api/pricing does not provide that rate. Selecting a channel updates the endpoints and call example below.

deepseek/deepseek-v4.1-flash-1017
Input
$0.30 USD per 1M tokens
Output
$1.20 USD per 1M tokens
Cache read
$0.006 USD per 1M tokens
Cache write
- USD per 1M tokens

Endpoints

POST/v1/chat/completionsChat Completions

API call spec

Observed from real test calls on this channel. Names, paths and values are shown exactly as the API uses them. Verified by test calls on Oct 19, 2026.

POST/v1/chat/completions

Streaming supportedUsage reported in the stream
Stream optionsinclude_usage
InputSystem message: YesImage as data URL: Yes
Request parameters 24 supported parameters

Core

  • messagesarraybodyRequiredSupportedEffect observed
  • messages[].role=systemarraybodySupportedEffect observed
  • modelstringbodyRequiredSupportedEffect observed
  • nintegerbodyNot supported

Output length

  • max_tokensintegerbodySupportedEffect observed
    Accepted values384000384001
    Rejected values1536000
    Maximum
    384001
  • max_completion_tokensintegerbodyNot supported

Sampling

  • frequency_penaltynumberbodySupportedValidated
    Accepted values-202
    Rejected values-33
    Minimum
    -2
    Maximum
    2
  • logprobsbooleanbodySupportedEffect observed
  • presence_penaltynumberbodySupportedValidated
    Accepted values-202
    Rejected values-33
    Minimum
    -2
    Maximum
    2
  • seedintegerbodySupportedAccepted
    Accepted values1
  • temperaturenumberbodySupportedValidated
    Accepted values00.712
    Rejected values-13
    Minimum
    0
    Maximum
    2
  • top_kintegerbodySupportedAccepted
    Accepted values120
  • top_logprobsintegerbodySupportedEffect observed
  • top_pnumberbodySupportedValidated
    Accepted values0.10.51
    Rejected values-0.52
    Minimum
    0.1
    Maximum
    1

Stop sequences

  • stoparraybodySupportedEffect observed

Reasoning

  • reasoning_effortstringbodySupportedValidated
    Accepted valueshighlowmedium
    Rejected valuesbogus
  • thinking.typestringbodySupportedEffect observed
    Accepted valuesdisabledenabled
    Rejected valuesbogus
    • Switches reasoning on or off

Structured output

  • response_format.type=json_objectstringbodySupportedEffect observed
  • response_format.type=json_schemastringbodyNot supported

Tools

  • parallel_tool_callsbooleanbodySupportedAccepted
  • tool_choiceobjectbodySupportedEffect observed
    Accepted valuesautonone
    Rejected values{"type":"function","function":{"name":"get_weather"}}required
  • toolsarraybodySupportedEffect observed
  • tools[].type=functionarraybodySupportedEffect observed

Streaming

  • streambooleanbodySupportedEffect observed
  • stream_options.include_usagebooleanbodySupportedEffect observed

Multimodal input

  • messages[].content[].type=image_urlarraybodySupportedEffect observed

Metadata

  • userstringbodySupportedAccepted
    Accepted valuesops-probe
Response fields 49 fields
  • choices
    arrayAlways returnedStreamed in each chunk
  • choices[].delta.content
    stringConditional · when streamingStreamed in each chunk
  • choices[].delta.reasoning_content
    stringConditional · when streamingStreamed in each chunk
  • choices[].delta.role
    stringConditional · when streamingStreamed in each chunk
  • choices[].finish_reason
    stringAlways returnedStreamed in each chunk
  • choices[].index
    integerAlways returnedStreamed in each chunk
  • choices[].logprobs
    nullAlways returnedStreamed in each chunk
  • choices[].logprobs.content
    arrayConditional · when log probabilities are requested
  • choices[].logprobs.content[].bytes
    arrayConditional · when log probabilities are requested
  • choices[].logprobs.content[].bytes[]
    integerConditional · when log probabilities are requested
  • choices[].logprobs.content[].logprob
    numberConditional · when log probabilities are requested
  • choices[].logprobs.content[].token
    stringConditional · when log probabilities are requested
  • choices[].logprobs.content[].top_logprobs
    arrayConditional · when log probabilities are requested
  • choices[].logprobs.content[].top_logprobs[].bytes
    arrayConditional · when log probabilities are requested
  • choices[].logprobs.content[].top_logprobs[].bytes[]
    integerConditional · when log probabilities are requested
  • choices[].logprobs.content[].top_logprobs[].logprob
    numberConditional · when log probabilities are requested
  • choices[].logprobs.content[].top_logprobs[].token
    stringConditional · when log probabilities are requested
  • choices[].logprobs.reasoning_content
    arrayConditional · when log probabilities are requested
  • choices[].logprobs.reasoning_content[].bytes
    arrayConditional · when log probabilities are requested
  • choices[].logprobs.reasoning_content[].bytes[]
    integerConditional · when log probabilities are requested
  • choices[].logprobs.reasoning_content[].logprob
    numberConditional · when log probabilities are requested
  • choices[].logprobs.reasoning_content[].token
    stringConditional · when log probabilities are requested
  • choices[].logprobs.reasoning_content[].top_logprobs
    arrayConditional · when log probabilities are requested
  • choices[].logprobs.reasoning_content[].top_logprobs[].bytes
    arrayConditional · when log probabilities are requested
  • choices[].logprobs.reasoning_content[].top_logprobs[].bytes[]
    integerConditional · when log probabilities are requested
  • choices[].logprobs.reasoning_content[].top_logprobs[].logprob
    numberConditional · when log probabilities are requested
  • choices[].logprobs.reasoning_content[].top_logprobs[].token
    stringConditional · when log probabilities are requested
  • choices[].message.content
    stringAlways returned
  • choices[].message.reasoning_content
    stringAlways returned
  • choices[].message.role
    stringAlways returned
  • choices[].message.tool_calls
    arrayConditional · when tools are used
  • choices[].message.tool_calls[].function.arguments
    stringConditional · when tools are used
  • choices[].message.tool_calls[].function.name
    stringConditional · when tools are used
  • choices[].message.tool_calls[].id
    stringConditional · when tools are used
  • choices[].message.tool_calls[].index
    integerConditional · when tools are used
  • choices[].message.tool_calls[].type
    stringConditional · when tools are used
  • created
    integerAlways returnedStreamed in each chunk
  • id
    stringAlways returnedStreamed in each chunk
  • model
    stringAlways returnedStreamed in each chunk
  • object
    stringAlways returnedStreamed in each chunk
  • system_fingerprint
    stringAlways returnedStreamed in each chunk
  • usage
    nullConditional · when streamingSent in the final chunk
  • usage.completion_tokens
    integerAlways returnedSent in the final chunk
  • usage.completion_tokens_details.reasoning_tokens
    integerAlways returnedSent in the final chunk
  • usage.prompt_cache_hit_tokens
    integerAlways returnedSent in the final chunk
  • usage.prompt_cache_miss_tokens
    integerAlways returnedSent in the final chunk
  • usage.prompt_tokens
    integerAlways returnedSent in the final chunk
  • usage.prompt_tokens_details.cached_tokens
    integerAlways returnedSent in the final chunk
  • usage.total_tokens
    integerAlways returnedSent in the final chunk
Finish reasonslengthstoptool_calls

Caching

Automatic prompt caching

Cache lifetimes5m

Smallest cached prompt observed: 4,877 tokens

Usage fieldsprompt_cache_hit_tokensprompt_cache_miss_tokensprompt_tokens_details.cached_tokens

Call it

Using deepseek/deepseek-v4.1-flash-1017

1from openai import OpenAI23client = OpenAI(4    base_url="https://www.realrelay.ai/v1",5    api_key="sk-***",6)78response = client.chat.completions.create(9    model="deepseek/deepseek-v4.1-flash-1017",10    messages=[{"role": "user", "content": "Hello"}],11)1213print(response.choices[0].message.content)
1import OpenAI from "openai";23const client = new OpenAI({4  baseURL: "https://www.realrelay.ai/v1",5  apiKey: process.env.REALRELAY_API_KEY,6});78const response = await client.chat.completions.create({9  model: "deepseek/deepseek-v4.1-flash-1017",10  messages: [{ role: "user", content: "Hello" }],11});1213console.log(response.choices[0].message.content);
1curl https://www.realrelay.ai/v1/chat/completions \2  -H "Authorization: Bearer $REALRELAY_API_KEY" \3  -H "Content-Type: application/json" \4  -d '{5    "model": "deepseek/deepseek-v4.1-flash-1017",6    "messages": [{ "role": "user", "content": "Hello" }]7  }'

Prices and availability as published on Oct 19, 2026.

Capabilities

ReasoningTool useVision
Input
TextImage
Output
Text

Frequently asked questions

What is DeepSeek-V4.1-Flash (1017)?
DeepSeek-V4.1-Flash (1017) is a model from DeepSeek. RealRelay.ai serves it through one OpenAI-compatible API.
How much does DeepSeek-V4.1-Flash (1017) cost?
DeepSeek-V4.1-Flash (1017) costs from $0.30 per 1M input tokens and $1.20 per 1M output tokens. Pricing is tiered, and this is the starting tier.
What inputs and outputs does DeepSeek-V4.1-Flash (1017) support?
Input: Text and Image. Output: Text.
What is the context window of DeepSeek-V4.1-Flash (1017)?
DeepSeek-V4.1-Flash (1017) has a context window of 1M tokens. It returns up to 384K output tokens.
What can DeepSeek-V4.1-Flash (1017) do?
Listed capabilities: Reasoning, Tool use, and Vision.
How do I call DeepSeek-V4.1-Flash (1017) through the API?
Use the model ID deepseek/deepseek-v4.1-flash-1017 with a RealRelay.ai API key on the OpenAI-compatible API.

More from DeepSeek

All 6 DeepSeek models