DeepSeek API. Unlimited tokens. OpenAI compatible.
11 models online → · Recommended: Cline
Live list from API — only models that work right now.
Fast chat — код, боты, IDE, повседневные запросы.
FilesWeb search enabled — актуальная информация из интернета.
SearchFilesFast chat — код, боты, IDE, повседневные запросы.
FilesWeb search enabled — актуальная информация из интернета.
SearchFilesExpert mode — максимальное качество на тяжёлых задачах.
ChatReasoning mode — complex logic, math, multi-step analysis.
ThinkingFilesReasoning mode — complex logic, math, multi-step analysis.
ThinkingSearchFilesReasoning mode — complex logic, math, multi-step analysis.
ThinkingFilesReasoning mode — complex logic, math, multi-step analysis.
ThinkingSearchFilesFast chat — код, боты, IDE, повседневные запросы.
FilesReasoning mode — complex logic, math, multi-step analysis.
ThinkingGET /v1/model-capabilities · 11 supported
Works with your stack
Premium DeepSeek access — clean API, no routing surprises.
No token billing. One key — full access for your session.
OpenAI Chat Completions — change base URL and API key.
HTTPS, isolated keys dllm-…
Production proxy. Streaming SSE supported.
POST /v1/chat/completions Authorization: Bearer dllm-••• { "model": "deepseek-chat", "messages": [{ "role": "user", "content": "..." }] }
Chat, reasoning, expert, search — pick the right model.
OpenAI, Anthropic, and Responses-compatible paths. Same key dllm-… everywhere.
Single-turn request. Works in Cline, Cursor, Continue, Open WebUI, and any OpenAI-compatible client.
curl https://deepseek.llm-api.fun/v1/chat/completions \
-H "Authorization: Bearer dllm-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"messages": [
{ "role": "system", "content": "You are a senior Python developer." },
{ "role": "user", "content": "Write a FastAPI health check endpoint." }
],
"max_tokens": 2048,
"temperature": 0.7
}'
Authorization: Bearer dllm-YOUR_KEY Content-Type: application/json
Send full conversation history in messages — system + prior user/assistant turns. The model sees the whole thread.
{
"model": "deepseek-chat",
"messages": [
{ "role": "system", "content": "You help refactor Python code. Be concise." },
{ "role": "user", "content": "Here is my auth module. How can I simplify it?" },
{ "role": "assistant", "content": "You can extract token validation into a dependency..." },
{ "role": "user", "content": "Show the dependency as code." }
],
"max_tokens": 4096
}
system — instructions / persona (optional) user — human or client message assistant — previous model replies (include for context) tool — tool result after tool_calls (agents / function calling)
{
"model": "deepseek-chat",
"messages": [
{ "role": "user", "content": "What is the weather in Berlin?" },
{
"role": "assistant",
"content": null,
"tool_calls": [{
"id": "call_1",
"type": "function",
"function": { "name": "get_weather", "arguments": "{\"city\":\"Berlin\"}" }
}]
},
{ "role": "tool", "tool_call_id": "call_1", "content": "{\"temp_c\": 12, \"condition\": \"cloudy\"}" }
]
}
Use *-search model IDs for web-enabled replies. Vision (deepseek-vision) is not available right now — returns 400.
{
"model": "deepseek-chat-search",
"messages": [
{ "role": "user", "content": "What changed in Python 3.13? Cite sources briefly." }
],
"max_tokens": 2048
}
deepseek-chat-search deepseek-default-search deepseek-reasoner-search deepseek-r1-search
Works. Send OpenAI tools JSON — response returns tool_calls + finish_reason: "tool_calls". Tested on production with deepseek-chat, deepseek-reasoner, deepseek-v4-pro, deepseek-default, deepseek-expert. Cline / Continue agents use this path.
curl https://deepseek.llm-api.fun/v1/chat/completions \
-H "Authorization: Bearer dllm-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"messages": [
{ "role": "user", "content": "Call read_file for path config.json only. Do not explain." }
],
"tools": [{
"type": "function",
"function": {
"name": "read_file",
"description": "Read a file from disk",
"parameters": {
"type": "object",
"properties": {
"path": { "type": "string", "description": "File path" }
},
"required": ["path"]
}
}
}],
"tool_choice": "auto",
"max_tokens": 512
}'
{
"model": "deepseek-chat",
"choices": [{
"message": {
"role": "assistant",
"content": null,
"tool_calls": [{
"id": "call_1781005249449_n5addi",
"type": "function",
"function": {
"name": "read_file",
"arguments": "{\"path\":\"config.json\"}"
}
}]
},
"finish_reason": "tool_calls"
}]
}
{
"model": "deepseek-reasoner",
"messages": [{ "role": "user", "content": "Call get_weather for Berlin." }],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a city",
"parameters": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
}],
"tool_choice": "auto"
}
Same key — Anthropic-style body. Use when your client sends x-api-key instead of Bearer.
curl https://deepseek.llm-api.fun/v1/messages \
-H "x-api-key: dllm-YOUR_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"max_tokens": 4096,
"system": "You are a coding assistant.",
"messages": [
{ "role": "user", "content": "Refactor this function to use async/await." }
]
}'
{
"model": "deepseek-chat",
"max_tokens": 4096,
"system": "You are a helpful agent.",
"tools": [{
"name": "get_weather",
"description": "Get weather for a city",
"input_schema": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}],
"messages": [
{ "role": "user", "content": "Weather in Berlin?" },
{
"role": "assistant",
"content": [{
"type": "tool_use",
"id": "tu_1",
"name": "get_weather",
"input": { "city": "Berlin" }
}]
},
{
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": "tu_1",
"content": "{\"temp_c\": 12}"
}]
}
]
}
Set "stream": true on OpenAI or Anthropic requests. Response is text/event-stream with data: {...} chunks.
curl https://deepseek.llm-api.fun/v1/chat/completions \
-H "Authorization: Bearer dllm-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-reasoner",
"stream": true,
"messages": [{ "role": "user", "content": "Explain recursion briefly" }]
}'
from openai import OpenAI
client = OpenAI(
api_key="dllm-YOUR_KEY",
base_url="https://deepseek.llm-api.fun/v1",
)
stream = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "Hello"}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
curl https://deepseek.llm-api.fun/v1/models \ -H "Authorization: Bearer dllm-YOUR_KEY"
curl https://deepseek.llm-api.fun/v1/model-capabilities \ -H "Authorization: Bearer dllm-YOUR_KEY"
Use any ID from the response as model in chat requests. Live list also on the models section above.
Same Base URL everywhere. Cline is our top pick from client feedback.
Cline + deepseek-chat — stable tool calls for coding agents.
{
"cline.apiProvider": "openai-compatible",
"cline.openAiBaseUrl": "https://deepseek.llm-api.fun/v1",
"cline.openAiApiKey": "dllm-YOUR_KEY",
"cline.openAiModelId": "deepseek-chat"
}
https://deepseek.llm-api.fun/v1Uses OpenAI format under the hood — same as POST /v1/chat/completions.
name: DeepSeek API
version: 1.0.0
schema: v1
models:
- name: DeepSeek Chat
provider: openai
model: deepseek-chat
apiBase: https://deepseek.llm-api.fun/v1
apiKey: dllm-YOUR_KEY
roles:
- chat
- edit
- apply
capabilities:
- tool_use
defaultCompletionOptions:
temperature: 0.7
maxTokens: 4096
- name: DeepSeek Reasoner
provider: openai
model: deepseek-reasoner
apiBase: https://deepseek.llm-api.fun/v1
apiKey: dllm-YOUR_KEY
roles:
- chat
Roles: chat (sidebar), edit (inline edits), apply (apply diff). Docs: continue.dev/reference
{
"provider": {
"deepseek-api": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://deepseek.llm-api.fun/v1",
"apiKey": "{env:DEEPSEEK_API_KEY}"
},
"models": {
"deepseek-chat": { "name": "DeepSeek Chat" }
}
}
}
}
import requests
API_KEY = "dllm-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
r = requests.post(
"https://deepseek.llm-api.fun/v1/chat/completions",
headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
json={
"model": "deepseek-chat",
"messages": [{"role": "user", "content": "Say OK if you hear me."}],
"max_tokens": 100,
},
timeout=120,
)
print("HTTP", r.status_code)
data = r.json()
if r.ok:
print(data["choices"][0]["message"]["content"])
else:
print(data)
const API_KEY = "dllm-YOUR_KEY";
const res = await fetch("https://deepseek.llm-api.fun/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "deepseek-chat",
messages: [{ role: "user", content: "Hello" }],
}),
});
const data = await res.json();
console.log(data.choices[0].message.content);
{
"model": "deepseek-chat",
"messages": [{ "role": "user", "content": userMessage }]
}
For long projects with token balance — use the main LLM API.