DeepSeek just handed developers the same toolkit that powers its own chat app. On 13 November 2026, the company announced that web search, deep thinking search, file reading, link reading, safety checks and voice are now available through the DeepSeek API.
It also released an open-source chat-demo web app that shows all of it working together. You can try it in your browser with your own API key.
This guide covers every new feature, the exact endpoints and prices, step-by-step code you can copy, how it compares with OpenAI, Claude and Gemini, and the limits you should know before you build on it.
- What: DeepSeek’s “application APIs”, announced on X and in the API docs on 13 November 2026.
- Built-in chat features: web search, deep thinking search, URL reading, file input, a
safety_checkoption and automatic chat titles, all on thedeepseek-flashmodel. - Standalone APIs: Search, Fetch, OCR, Speech to Text (ASR) and Text to Speech (TTS).
- Price: search and fetch cost $0.75 per 1,000 successful calls, OCR $0.225 per 1,000 pages, TTS $0.225 per 10,000 characters and ASR $0.058 per audio hour (both at a limited-time 50% discount).
- Cheap: web search is about 13 times cheaper per call than the $10 per 1,000 that OpenAI and Anthropic list.
- Demo: open-source chat-demo at cdn.deepseek.com/chat-demo, code on GitHub (deepseek-ai/chat-demo).
- Catch: public apps must turn on the safety check, ASR clips max out at 120 seconds, and some sampling settings are ignored when tools are on.
What DeepSeek Launched
Until now, the DeepSeek API gave you the model and little else. If you wanted your bot to search the web, read a PDF or talk out loud, you had to glue in other services yourself.
The new release moves that work to DeepSeek’s servers. You switch features on with a few request fields, and DeepSeek runs the searches and page reads, then streams back structured blocks your app can display.
DeepSeek’s own post put it simply: “The capabilities behind the DeepSeek App are now available through the DeepSeek API.”
deepseek-flash model. Each tool call is billed on top of normal token prices.Which model it runs on
The chat features run on deepseek-flash, which DeepSeek’s docs say is currently served by DeepSeek-V4.1-Flash-1017. The older names deepseek-v4-flash and deepseek-v4-flash-vision-exp still work, but they now point at the same Flash price.
New to the model itself? Our DeepSeek API Python tutorial covers keys, streaming and JSON output from scratch.
Three ways to call it
All chat features work on all three of DeepSeek’s request formats, so you can keep whichever SDK you already use.
| Format | Endpoint | Good for |
|---|---|---|
| Messages (Anthropic-style) | POST https://api.deepseek.com/anthropic/v1/messages |
Apps built for Claude’s Messages format |
| Responses (OpenAI-style) | POST https://api.deepseek.com/responses |
Apps built on OpenAI’s Responses API |
| Chat Completions | POST https://api.deepseek.com/chat/completions |
Most existing DeepSeek and OpenAI code |
Every Feature at a Glance
Here is the full list from DeepSeek’s “Build a Chatbot” guide, with the switch that turns each one on.
| Feature | How you turn it on | What it does |
|---|---|---|
| Web search | Tool deepseek_web_search, thinking off |
Searches the web or images when needed and answers with citations |
| Deep thinking search | Tool deepseek_web_search, thinking on |
Searches and reads pages across several reasoning steps |
| URL reading | Tool deepseek_read_url |
Spots links in the user’s message, fetches them and uses them as context |
| File input | File upload (see File Parsing guide) | Reads PDF, Word, PowerPoint and images via text extraction or rich-layout parsing |
| Safety check | "safety_check": {"level": "high"} |
Reviews input and output and returns a refusal marker if it finds risk |
| Conversation title | "title": {"enabled": true} |
Writes a short chat title when the answer ends |
| User metadata marker | Metadata marker (see its guide) | Tells the model today’s date, the user’s location and language |
| Read aloud / voice input | TTS and ASR APIs | Turns answers into speech and speech into text |
Prices for Every Tool
Tool fees are charged on top of the normal token price. These figures come straight from DeepSeek’s pricing page, read on 14 November 2026.
| Service | Unit | Price |
|---|---|---|
| Search (text and image) | 1,000 searches | $0.75 |
| Web fetch (URL reading) | 1,000 fetches | $0.75 |
| File parsing and OCR | 1,000 pages | $0.225 |
| Text to Speech | 10,000 characters | $0.225 (limited-time, list $0.45) |
| Speech to Text | 1 hour of audio | $0.058 (limited-time, list $0.116) |
| Safety check | – | No separate price listed |
Only successful calls count for search and fetch. DeepSeek’s search guide says failed requests, empty results and timeouts are not billed, and the count field does not change the price.
Token prices for deepseek-flash
Tokens are billed as usual, and off-peak hours are half price. Peak hours are 01:00-04:00 and 06:00-10:00 UTC on weekdays; everything else, including weekends, is off-peak.
| deepseek-flash, per 1M tokens | Off-peak | Peak |
|---|---|---|
| Input, cache hit | $0.003 | $0.006 |
| Input, cache miss | $0.15 | $0.30 |
| Output | $0.60 | $1.20 |
Search results fill the context, so a searched answer uses more input tokens than a plain one. Our DeepSeek API pricing guide explains the cache and off-peak rules in more depth.
How to Add Web Search to a Chat
This is the request DeepSeek uses in its own quick example, on the Messages endpoint. It turns on thinking, web search, URL reading, the safety check and titles in one go.
- Get an API key. Sign in at platform.deepseek.com, top up a small balance, and create a key under API Keys.
- Save it as an environment variable. On Mac or Linux run
export DEEPSEEK_API_KEY="sk-..."; on Windows PowerShell run$env:DEEPSEEK_API_KEY="sk-...". - Send a request with the tools declared. Use the curl or Python example below.
- Render the blocks. Show thinking in a collapsible panel, search steps as result cards, and the final text with its citation markers.
- Send the blocks back unchanged. On the next turn, include the assistant’s returned blocks in the message history exactly as you got them.
curl
curl https://api.deepseek.com/anthropic/v1/messages \
-H "x-api-key: $DEEPSEEK_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "deepseek-flash",
"max_tokens": 4096,
"thinking": {"type": "enabled"},
"tools": [
{"type": "deepseek_web_search", "name": "deepseek_web_search"},
{"type": "deepseek_read_url", "name": "deepseek_read_url"}
],
"safety_check": {"level": "high"},
"title": {"enabled": true},
"messages": [{"role": "user", "content": "What is new in DeepSeek V4.1?"}],
"stream": true
}'
Python (requests, no SDK needed)
import os, requests
body = {
"model": "deepseek-flash",
"max_tokens": 4096,
"tools": [{"type": "deepseek_web_search", "name": "deepseek_web_search"}],
"safety_check": {"level": "high"},
"messages": [{"role": "user", "content": "Latest RTX 5090 price in India?"}],
}
r = requests.post(
"https://api.deepseek.com/anthropic/v1/messages",
headers={"x-api-key": os.environ["DEEPSEEK_API_KEY"],
"content-type": "application/json"},
json=body, timeout=120)
data = r.json()
if data.get("stop_reason") == "refusal":
print("Blocked by safety check")
for block in data.get("content", []):
if block.get("type") == "text":
print(block["text"])
print(data.get("usage"))
Leaving out thinking gives a plain web search answer. Adding "thinking": {"type": "enabled"} switches it to deep thinking search.
What comes back
| Block | How to show it |
|---|---|
thinking |
Collapsible “thinking” panel |
server_tool_use + web_search_tool_result |
A search step with result cards (title, site name, icon) |
server_tool_use + web_fetch_tool_result |
“Opened page” or “read link” step |
text with citations |
The answer, with markers linked to sources |
stop_reason: "refusal" |
Replace the answer with your own refusal message |
The usage object also counts tool calls: web_search_requests, web_fetch_requests, tool_search, tool_fetch and tool_image_search. Log these if you want to track search spend per user.
Using the Standalone APIs
You do not need the chat model to use the tools. Each one has its own endpoint under https://api.deepseek.com/v1/tools/ and uses a normal Authorization: Bearer header.
Search API
Send POST /v1/tools/search with a JSON body. Only query (1-128 characters) is required; count returns 1-50 results (default 10), and need_content: true adds the page text.
curl https://api.deepseek.com/v1/tools/search \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "DeepSeek site:github.com OR site:huggingface.co lang:en after:2025", "count": 10}'
It supports search operators: site:, -site:, "exact phrase", -term, lang:zh,en, and after:/before: with a year or date.
Each result has a title, url, a short snippet, a longer summary for the model, a date, a rerank_score from 0 to 3 (1.5+ is high quality) and an authority score from 0 to 4. The standalone Search API does not do image search yet.
Fetch API
POST /v1/tools/fetch takes one field, url (HTTP or HTTPS, up to 8,192 characters), and returns the page title plus its content as Markdown.
curl https://api.deepseek.com/v1/tools/fetch \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/article"}'
OCR and file parsing
POST /v1/tools/ocr reads PDF, DOC/DOCX, PPT/PPTX and images (PNG, JPEG, WebP, GIF, BMP, TIFF). Send the file and a purpose as multipart form data.
curl https://api.deepseek.com/v1/tools/ocr \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-F purpose="text_recognition" \
-F file="@document.pdf"
Use text_recognition for plain text (Word and PowerPoint files without images skip OCR entirely), or rich_layout_recognition to process every page as an image. Files can be up to 1,000 pages and 100 MiB.
Text to Speech
POST /v1/tools/tts turns up to 10,000 billed characters into WAV or raw PCM audio. There are two voices, stella (female, default) and tide (male), and the language is detected from the text.
curl https://api.deepseek.com/v1/tools/tts \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Hello from DeepSeek.", "voice_id": "stella"}' \
--output speech.wav
TTS speaks 10 languages: Mandarin, Cantonese, English, Japanese, Korean, Malay, Arabic, Indonesian, Thai and Vietnamese. A WebSocket version at wss://api.deepseek.com/v1/tools/tts streams PCM or Opus audio for live read-aloud.
Speech to Text
POST /v1/tools/asr takes one 16-bit PCM WAV or Ogg Opus file of up to 120 seconds and 8 MiB, and returns the full transcript. It covers 21 languages, including Hindi, German, French, Spanish and Arabic.
curl https://api.deepseek.com/v1/tools/asr \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-F file="@speech.wav"
The reply is short JSON: request_id, text and duration_ms. It is built for voice input in a chat box, not for transcribing long meetings.
Limits for each standalone API
| API | Rate limit (per account) | Main size limit |
|---|---|---|
| Search | 100 QPS | Query 1-128 characters, 1-50 results |
| Fetch | 25 QPS, plus a per-domain limit | URL up to 8,192 characters |
| OCR | 15 jobs in progress | 1,000 pages, 100 MiB, 180 s total |
| TTS | 50 requests in progress | 10,000 billed characters, 30 min audio |
| ASR | 50 requests in progress | 120 seconds, 8 MiB, no streaming |
Try the Open-Source chat-demo
The fastest way to see everything working is DeepSeek’s demo app. It runs in your browser and talks to the API with your own key.
- Open the demo at
https://cdn.deepseek.com/chat-demo. - Paste your API key. The demo stores the key, chats and uploaded images only in your browser.
- Ask something current with web search on, then try deep thinking search on the same question to see the difference.
- Drop in a PDF or image, or paste a link, to test file input and URL reading.
- Import your old chats if you want: it reads chat history exported from the DeepSeek app. Importing replaces the history already in the demo.
- Fork the code from
github.com/deepseek-ai/chat-demowhen you are ready to build your own front end.
The demo also supports editing and regenerating replies, read-aloud, voice input, Markdown and Mermaid diagrams, chat export, image safety review, and Chinese or English with light and dark themes.
DeepSeek vs OpenAI, Claude and Gemini
Price is the headline. Here are the listed web search prices per 1,000 calls, as compiled by Nesyona from each provider’s pricing page on 26 October 2026 and checked against DeepSeek’s page today.
| Provider | Web search price | Built-in voice (TTS/ASR) | Notes |
|---|---|---|---|
| DeepSeek | $0.75 per 1,000 searches | Yes, same API key | Fetch billed separately at $0.75 per 1,000 |
| OpenAI | $10 per 1,000 calls | Separate audio models | Search content tokens billed on top |
| Anthropic (Claude) | $10 per 1,000 searches | No first-party TTS API | Search content tokens billed on top |
| Google (Gemini) | $14 per 1,000 grounded requests | Separate TTS models | 5,000 free requests a month on paid tier (Gemini 3 and newer) |
The units are not identical (a “call” can hold several searches on some platforms), so treat this as a price signal rather than an exact match. Still, DeepSeek is roughly 13 to 19 times cheaper per search.
Who should use which
- Pick DeepSeek for low-cost chatbots, support bots and side projects that need search, file reading and voice from one vendor.
- Pick Claude or OpenAI when you need their stronger frontier models, strict data rules, or features DeepSeek lacks; see our DeepSeek vs ChatGPT comparison.
- Pick Gemini if you already live in Google Cloud and want Google Search grounding.
- Self-host if data must never leave your machine; our run DeepSeek locally guide covers the open models, though these hosted tools do not come with them.
Limits, Ignored Settings and Rules
Settings DeepSeek overrides
When you declare the web tools, set safety_check to high, or turn on titles, DeepSeek sets some values itself and ignores yours. Your temperature and top_p no longer apply on any endpoint.
| Endpoint | Ignored fields |
|---|---|
| Messages | temperature, top_p, top_k, stop_sequences, thinking.budget_tokens, preserve_thinking, tool_choice.disable_parallel_tool_use, metadata (except user_id) |
| Responses | temperature, top_p, reasoning.summary, text.verbosity, include, max_tool_calls, truncation, metadata, parallel_tool_calls, store |
| Chat Completions | temperature, top_p, frequency_penalty, presence_penalty, stop, seed, n, preserve_thinking, parallel_tool_calls |
max_tokens still works, but it now limits each inference step, not the whole round. A deep search with several steps can therefore write more in total than your max_tokens value.
Safety and compliance
- DeepSeek says public-facing apps must enable the safety check.
- The docs add that public services must meet their own duties, including content safety review, large model registration and AI labelling, and follow the DeepSeek Open Platform terms.
- Your users’ prompts, files and search queries go to DeepSeek’s servers. Read our Is DeepSeek safe guide before you send personal or company data.
Still unknown
- The exact tool syntax for the Chat Completions and Responses tabs is in DeepSeek’s docs, but the announcement only spells out the Messages version.
- How long the 50% TTS and ASR discount lasts.
- Whether the standalone Search API will get image search (the docs say “not yet”).
Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
402 from any tool |
Balance is empty | Top up on platform.deepseek.com; granted balance is used first |
429 on Search or Fetch |
Over 100 or 25 QPS, or the per-domain fetch limit | Wait and retry with backoff; queue fetches per domain |
403 or 404 on Fetch |
Blocked by security policy, or no usable content | Do not retry the same URL; try another source |
ASR returns 413 or 400 |
File over 8 MiB, over 120 s, or not WAV/Ogg Opus | Split audio into short clips and convert with ffmpeg -i in.mp3 -ac 1 -ar 16000 out.wav |
TTS returns 400 |
No readable text, or the text failed content review | Check the text is not empty or pure Markdown symbols |
| Answer replaced by refusal | stop_reason is refusal from the safety check |
Show a polite message; rephrase or narrow the request |
| Temperature seems ignored | Tools or safety_check are on | Expected; see the ignored fields table above |
OCR text has odd <|ref|> tags |
Page-by-page recognition returns layout markers and boxes | Strip the markers, or use them to locate text on the page |
For general DeepSeek errors such as “server is busy” or 422s, see our DeepSeek API errors fix guide and DeepSeek limits explained.
My Take
This is DeepSeek doing what it always does: taking a feature other labs charge a premium for and pricing it close to zero. At $0.75 per 1,000 searches, adding live search to a hobby bot stops being a budget decision.
The bigger shift is convenience. One key now covers the model, search, page reading, OCR and voice, which is the kind of stack small teams used to stitch together from three or four vendors.
I would not ignore the trade-offs. Your sampling settings get overridden when tools are on, ASR is limited to two-minute clips, and every query passes through DeepSeek’s servers. For a public app, budget time for the safety and compliance rules, not just the code.
If you already run a DeepSeek bot, the cheapest experiment is to switch on deepseek_web_search for one route and compare answer quality and cost for a week.
FAQ
What are DeepSeek’s application APIs?
They are the features from the DeepSeek chat app, such as web search, link reading, file input, safety checks and voice, offered through the DeepSeek API from 13 November 2026.
How much does DeepSeek web search cost through the API?
$0.75 per 1,000 successful searches, plus normal deepseek-flash token charges. Failed or empty searches are not billed.
Which model supports the new tools?
deepseek-flash, currently served by DeepSeek-V4.1-Flash-1017, on the Messages, Responses and Chat Completions endpoints.
Is the DeepSeek chat-demo free?
The demo app and its source code are free to use, but every request uses your own API key, so model and tool calls are billed to your balance.
Can DeepSeek’s API speak and listen?
Yes. The TTS API speaks 10 languages with two voices, and the ASR API transcribes clips of up to 120 seconds in 21 languages, including Hindi.
Do I have to use the safety check?
DeepSeek says public-facing apps must enable it. For private testing it is optional, but it is a single field, "safety_check": {"level": "high"}.
Why are my temperature settings ignored?
When web tools, a high safety check or titles are enabled, DeepSeek controls sampling itself and ignores fields like temperature and top_p.
Can I use these tools with a locally run DeepSeek model?
No. Search, fetch, OCR and voice run on DeepSeek’s servers. You can still call the standalone APIs from an app that uses a local model, since they only need an API key.
Sources
- DeepSeek on X, “The full DeepSeek App experience, now via API” (13 Nov 2026): x.com/deepseek_ai
- DeepSeek API docs, news item 13 Nov 2026: api-docs.deepseek.com/news/news261113
- DeepSeek API docs, “Build a Chatbot”: api-docs.deepseek.com/guides/build_a_chatbot
- DeepSeek API docs, Search and Fetch, OCR, Text to Speech and Speech to Text guides: api-docs.deepseek.com/guides/
- DeepSeek pricing page: api-docs.deepseek.com/quick_start/pricing
- chat-demo: cdn.deepseek.com/chat-demo and github.com/deepseek-ai/chat-demo
- Startup Fortune, “DeepSeek Turns Its Whole App Into an API” (13 Nov 2026)
- Nesyona, “AI web search tool prices per 1,000 calls” (26 Oct 2026), citing OpenAI, Anthropic and Google pricing pages




