URL BASE
https://devseek.space/v1
DOCUMENTACIÓN · v2
devseek habla el protocolo OpenAI Chat Completions. Cualquier SDK de OpenAI funciona en cuanto cambias la URL base.
URL BASE
https://devseek.space/v1
AUTENTICACIÓN
Authorization: Bearer dsk-…
MODELO
deepseek-v4.1-flash-free
224K tokens · 64K de tokens
curl https://devseek.space/v1/chat/completions \
-H "Authorization: Bearer $DEVSEEK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash-free",
"stream": true,
"messages": [{"role": "user", "content": "Write a binary search in Rust"}]
}'import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DEVSEEK_API_KEY"],
base_url="https://devseek.space/v1",
)
stream = client.chat.completions.create(
model="deepseek-v4.1-flash-free",
messages=[{"role": "user", "content": "Write a binary search in Rust"}],
max_tokens=4096,
stream=True,
)
for chunk in stream:
if chunk.choices:
print(chunk.choices[0].delta.content or "", end="")import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.DEVSEEK_API_KEY,
baseURL: "https://devseek.space/v1",
});
const stream = await client.chat.completions.create({
model: "deepseek-v4.1-flash-free",
messages: [{ role: "user", content: "Review this diff for bugs" }],
stream: true,
});
for await (const c of stream) process.stdout.write(c.choices[0]?.delta?.content ?? "");from openai import OpenAI
client = OpenAI(api_key=KEY, base_url="https://devseek.space/v1")
tools = [{"type": "function", "function": {
"name": "run_tests",
"description": "Run the test suite and return failures",
"parameters": {"type": "object",
"properties": {"path": {"type": "string"}},
"required": ["path"]}}}]
r = client.chat.completions.create(
model="deepseek-v4.1-flash-free", tools=tools,
messages=[{"role": "user", "content": "Tests in src/ fail. Investigate."}])
print(r.choices[0].message.tool_calls)# opencode.json — add devseek as an OpenAI-compatible provider
{
"provider": {
"devseek": {
"npm": "@ai-sdk/openai-compatible",
"options": { "baseURL": "https://devseek.space/v1", "apiKey": "{env:DEVSEEK_API_KEY}" },
"models": { "deepseek-v4.1-flash-free": { "limit": { "context": 224000, "output": 65536 } } }
}
}
}
# aider
export OPENAI_API_BASE=https://devseek.space/v1 OPENAI_API_KEY=$DEVSEEK_API_KEY
aider --model openai/deepseek-v4.1-flash-free
| Ruta | Qué hace | Notas |
|---|---|---|
GET /v1/models | Listar modelos | Requiere clave |
POST /v1/chat/completions | Chat, con o sin streaming, con herramientas | stream: true para SSE; el bloque de uso llega al final |
GET /api/status | JSON de estado público | Sin clave |
GET /health | Comprobación de vida | Sin clave |
La entrada está limitada a 224K tokens y la salida a 64K tokens. Estimamos el tamaño de la entrada a partir de los bytes de la petición (unos 3,3 bytes por token) antes de llamar al modelo, así que una petición cerca del límite puede rechazarse un poco antes.
Una sesión es una petición de chat completion que ha empezado y aún no ha terminado. Tu nivel fija cuántas sesiones pueden ejecutarse a la vez:
Si superas tu límite recibes:
HTTP/1.1 429 Too Many Requests
Retry-After: 1
{"error":{"message":"Level 1 allows 3 concurrent sessions; 3 are already running. …",
"type":"rate_limit_error","code":"session_limit_reached",
"level":1,"session_limit":3,"sessions_in_use":3}}
Sirve cualquier herramienta que acepte un proveedor compatible con OpenAI. Usa la URL base, tu clave y el ID de modelo de abajo. Mantén los procesos de herramientas en paralelo en tu límite de sesiones o por debajo.
| Estado / código | Significado | Qué hacer |
|---|---|---|
401 missing_api_key / invalid_api_key | Clave ausente o incorrecta | Envía Authorization: Bearer dsk-… |
400 invalid_json / invalid_messages | Cuerpo o messages mal formados | Corrige la petición; no la reintentes tal cual |
400 context_length_exceeded | Entrada de más de 224K tokens | Acorta o resume la conversación |
404 model_not_found | Modelo desconocido | Usa deepseek-v4.1-flash-free |
413 body_too_large | Cuerpo de más de 4 MB | Envía menos contexto |
429 session_limit_reached | Demasiadas sesiones simultáneas | Espera a que termine una petición y reintenta |
503 upstream_saturated / upstream_busy | devseek o el modelo están al máximo de capacidad | Reintenta después del tiempo indicado en la cabecera Retry-After |
502 upstream_error | El backend del modelo falló | Es seguro reintentar |