Última verificación técnica: 29 de julio de 2026. Revisión documental y de sintaxis; no se ejecutó una solicitud facturable porque no había una clave API válida y saldo disponibles.
La DeepSeek API permite integrar deepseek-v4-flash y deepseek-v4-pro desde un servidor mediante un formato compatible con OpenAI Chat Completions o con la API de Anthropic. En esta guía aprenderá a crear una primera solicitud segura con cURL, Node.js y Python, elegir el modelo, controlar thinking, transmitir respuestas, obtener JSON, usar herramientas, interpretar el cache y gestionar precios y límites.
Aviso de independencia: DeepSeek Español es un sitio independiente operado por Ahmed Aly. No es la documentación oficial, no pertenece a DeepSeek y no está afiliado ni respaldado por la empresa. Esta página no vende API keys. Los enlaces para crear una cuenta o una clave conducen a la plataforma oficial de DeepSeek.
Respuesta rápida: use https://api.deepseek.com como base URL, mantenga la clave exclusivamente en su backend y seleccione de forma explícita deepseek-v4-flash o deepseek-v4-pro. Ambos admiten modos thinking y non-thinking; thinking está activado por defecto. Para proyectos nuevos, no utilice los aliases deepseek-chat ni deepseek-reasoner. DeepSeek anunció su retirada para el 24 de julio de 2026 a las 15:59 UTC y la documentación operativa actual solo enumera los dos IDs V4 explícitos. No verificamos con una clave válida la respuesta actual de los aliases.
Contenido de la guía
- Referencia rápida y modelos disponibles
- Cómo crear y proteger una API key
- Primera solicitud con cURL
- Integración con Node.js
- Integración con Python
- Parámetros y corrección sobre penalties
- Thinking, razonamiento y conversaciones
- Streaming
- JSON Output
- Tool Calls
- FIM y Chat Prefix Completion (Beta)
- Context Caching y user_id
- Concurrencia y errores
- Precios actuales
- Formato Anthropic
- Migración de aliases antiguos
- Seguridad para producción
- Preguntas frecuentes
Referencia rápida de DeepSeek API
| Elemento | Valor verificado |
|---|---|
| Base URL, formato OpenAI | https://api.deepseek.com |
| Endpoint de chat | https://api.deepseek.com/chat/completions |
| Base URL, formato Anthropic | https://api.deepseek.com/anthropic |
| Modelos actuales | deepseek-v4-flash y deepseek-v4-pro |
| Contexto publicado | 1 millón de tokens en ambos modelos |
| Salida máxima de Chat Completions | 384.000 tokens en ambos modelos |
| Modo predeterminado | Thinking activado |
| Autenticación | Authorization: Bearer API_KEY |
| Formato principal | Chat Completions compatible con OpenAI |
La compatibilidad de formato permite utilizar SDK y software diseñados para OpenAI o Anthropic cambiando la configuración. No significa paridad total de endpoints, parámetros o comportamiento. Consulte siempre la referencia de DeepSeek para los campos admitidos.
¿V4 Flash o V4 Pro?
| Modelo | Cuándo evaluarlo primero | Datos operativos |
|---|---|---|
deepseek-v4-flash | Flujos sensibles al coste, alto volumen y tareas sencillas o intermedias. DeepSeek lo presenta como la opción rápida, eficiente y económica. | Menor precio y límite estándar de 2.500 solicitudes concurrentes por cuenta. |
deepseek-v4-pro | Razonamiento, programación y agentes complejos cuando una evaluación propia demuestre una mejora útil. | Mayor precio y límite estándar de 500 solicitudes concurrentes por cuenta. |
No elija solo por el nombre. Prepare un conjunto de casos reales en español, compare precisión, latencia, tokens y coste, y decida con resultados medidos. Para características de arquitectura y capacidades, consulte la guía de DeepSeek V4.
Cómo crear y proteger una API key
- Abra la plataforma oficial de DeepSeek y cree o inicie sesión en su cuenta.
- Genere una API key desde el panel oficial.
- Guárdela en un gestor de secretos o variable de entorno; no la incluya en el código fuente.
- Confirme que la cuenta dispone de saldo utilizable.
- Haga las llamadas desde su backend. No exponga la clave en JavaScript del navegador, WordPress público, una aplicación móvil distribuida ni una captura de pantalla.
Ejemplo para una sesión local de terminal:
export DEEPSEEK_API_KEY="sustituir-por-la-clave-real"
En producción, limite quién puede leer el secreto, rote la clave si se filtra y evite registrar cabeceras de autorización. El archivo .env tampoco debe subirse al repositorio.
Primera solicitud con cURL
Este ejemplo usa V4 Flash en modo non-thinking. Declarar el modo de forma explícita evita depender del valor predeterminado.
curl https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DEEPSEEK_API_KEY}" \
-d '{
"model": "deepseek-v4-flash",
"messages": [
{
"role": "system",
"content": "Responde en español de forma breve, precisa y verificable."
},
{
"role": "user",
"content": "Explica en dos frases qué devuelve una API REST."
}
],
"thinking": {
"type": "disabled"
},
"max_tokens": 400,
"stream": false
}'
En una respuesta normal, el texto final se encuentra en choices[0].message.content. Revise también finish_reason: un valor length indica que la salida o el contexto alcanzaron un límite y el contenido puede estar incompleto.
Integración con Node.js
Instale el SDK de OpenAI, cuyo formato puede utilizarse con la base URL de DeepSeek:
npm install openai
npm pkg set type=module
Guarde el ejemplo como deepseek-example.js. El comando anterior declara el proyecto como ESM para que import funcione en Node.js:
import OpenAI from "openai";
const apiKey = process.env.DEEPSEEK_API_KEY;
if (!apiKey) {
throw new Error("Falta la variable DEEPSEEK_API_KEY");
}
const client = new OpenAI({
apiKey,
baseURL: "https://api.deepseek.com",
timeout: 60_000,
maxRetries: 2,
});
async function main() {
const response = await client.chat.completions.create({
model: "deepseek-v4-flash",
messages: [
{
role: "system",
content: "Eres un asistente técnico. Responde en español.",
},
{
role: "user",
content: "Resume tres ventajas de guardar secretos fuera del código.",
},
],
thinking: {
type: "disabled",
},
max_tokens: 600,
stream: false,
});
const choice = response.choices[0];
const content = choice?.message?.content;
if (!content) {
throw new Error(`Respuesta sin contenido. finish_reason=${choice?.finish_reason}`);
}
console.log(content);
}
main().catch((error) => {
console.error(error instanceof Error ? error.message : "Error desconocido");
process.exitCode = 1;
});
En un servicio real, añada una cola, un límite de gasto por usuario y registros que excluyan prompts sensibles, la API key y el razonamiento. Los reintentos deben ser limitados y reservarse para fallos transitorios; no reenvíe indefinidamente una solicitud inválida.
Integración con Python
pip install openai
En el SDK de OpenAI para Python, la documentación de DeepSeek indica que thinking y user_id deben enviarse dentro de extra_body.
import os
from openai import OpenAI
api_key = os.environ.get("DEEPSEEK_API_KEY")
if not api_key:
raise RuntimeError("Falta la variable DEEPSEEK_API_KEY")
client = OpenAI(
api_key=api_key,
base_url="https://api.deepseek.com",
timeout=60.0,
max_retries=2,
)
response = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[
{
"role": "system",
"content": "Eres un asistente técnico. Responde en español.",
},
{
"role": "user",
"content": "Propón una estrategia breve para probar una API antes de producción.",
},
],
reasoning_effort="high",
extra_body={
"thinking": {"type": "enabled"},
"user_id": "tenant_42_user_781",
},
max_tokens=1200,
stream=False,
)
choice = response.choices[0]
content = choice.message.content
if not content:
raise RuntimeError(
f"Respuesta sin contenido. finish_reason={choice.finish_reason}"
)
print(content)
user_id debe ser un identificador interno pseudónimo. No use nombre, correo, teléfono, IP ni otro dato personal como identificador.
Parámetros principales y su efecto real
Corrección importante:
frequency_penaltyypresence_penaltyestán obsoletos y no producen efecto en ningún modo. No es una limitación exclusiva de thinking. En cambio,temperatureytop_psiguen apareciendo como parámetros de muestreo para non-thinking, pero son aceptados sin efecto cuando thinking está activado.

frequency_penalty y presence_penalty como obsoletos y afirma que no tienen efecto al enviarlos a la API. Captura realizada el 22 de julio de 2026.| Parámetro | Uso actual | Comportamiento |
|---|---|---|
model | Obligatorio | Use deepseek-v4-flash o deepseek-v4-pro. |
messages | Obligatorio | Historial que la aplicación envía en la solicitud actual. |
thinking | Admitido | enabled o disabled; el valor predeterminado es enabled. |
reasoning_effort | Thinking | Valores documentados: high y max. |
max_tokens | Admitido | Limita la generación; entrada y salida deben caber dentro del contexto. |
temperature | Muestreo | Rango documentado de 0 a 2; no tiene efecto en thinking. |
top_p | Muestreo | Alternativa a temperature; no tiene efecto en thinking. |
frequency_penalty | Obsoleto | No tiene efecto en thinking ni en non-thinking. |
presence_penalty | Obsoleto | No tiene efecto en thinking ni en non-thinking. |
response_format | Admitido | {"type":"json_object"} activa JSON Output. |
stream | Admitido | Envía deltas mediante Server-Sent Events. |
tools | Admitido | Funciones que el modelo puede proponer; la aplicación las valida y ejecuta. |
tool_choice | Admitido | none, auto, required o una función concreta. |
user_id | Opcional | Aislamiento de seguridad de contenido, KVCache y programación; no es autenticación. |
DeepSeek indica que, por compatibilidad, low y medium se asignan a high, mientras que xhigh se asigna a max. Para que el comportamiento sea legible, use directamente high o max.
Thinking, esfuerzo y conversaciones
Los dos modelos V4 admiten thinking y non-thinking. Thinking está activado por defecto, pero conviene declararlo en cada flujo para evitar cambios accidentales.

temperature y top_p tampoco tienen efecto cuando thinking está activo. La referencia general anterior aclara que los dos penalties están obsoletos en todos los modos. Captura realizada el 22 de julio de 2026.Activar thinking
{
"thinking": {
"type": "enabled"
},
"reasoning_effort": "high"
}
Desactivar thinking
{
"thinking": {
"type": "disabled"
}
}
Cuando thinking está activo, el razonamiento se devuelve en reasoning_content y la respuesta final en content. No trate reasoning_content como una explicación verificable del funcionamiento interno ni lo registre o muestre automáticamente al usuario.
Conversación de varios turnos
La solicitud incluye los mensajes que el modelo debe considerar. La aplicación debe conservar y reenviar el historial útil; el endpoint no añade por sí solo los turnos anteriores. Esto describe la construcción del contexto y no demuestra ausencia de logs, cache o retención del proveedor.
- Si no hubo Tool Call, el
reasoning_contentanterior no es necesario para el siguiente turno y, si se envía, la API lo ignora. - Si hubo Tool Call en thinking, reenvíe el mensaje completo del asistente, incluido
reasoning_content, en las solicitudes posteriores. Omitirlo puede producir HTTP 400. - Recorte el historial con una estrategia comprobada para no superar la ventana de contexto ni conservar datos innecesarios.
Streaming con Node.js
Con stream: true, la API envía deltas mediante SSE y finaliza con data: [DONE]. Este ejemplo acumula por separado el razonamiento y la respuesta, pero solo muestra la respuesta final:
const stream = await client.chat.completions.create({
model: "deepseek-v4-pro",
messages: [
{
role: "user",
content: "Propón un plan breve para migrar una API sin interrumpir el servicio.",
},
],
thinking: {
type: "enabled",
},
reasoning_effort: "high",
stream: true,
stream_options: {
include_usage: true,
},
});
let reasoningContent = "";
let finalContent = "";
for await (const chunk of stream) {
const delta = chunk.choices[0]?.delta;
if (delta?.reasoning_content) {
reasoningContent += delta.reasoning_content;
}
if (delta?.content) {
finalContent += delta.content;
}
}
// No registre reasoningContent ni lo envíe al cliente por defecto.
process.stdout.write(finalContent);
Mientras una solicitud espera, el servidor puede enviar líneas vacías en non-streaming o comentarios : keep-alive en streaming. Si implementa su propio parser, debe ignorarlos correctamente. DeepSeek también indica que el servidor puede cerrar la conexión si la inferencia no ha comenzado después de diez minutos; configure timeouts coherentes en cliente, proxy y balanceador.
JSON Output: configuración y validación
Para pedir JSON válido, establezca response_format, incluya la palabra “json” en el prompt, muestre una estructura esperada y reserve suficientes tokens. No confunda JSON válido con datos correctos o autorizados.
const response = await client.chat.completions.create({
model: "deepseek-v4-flash",
messages: [
{
role: "system",
content:
'Devuelve solo un objeto json. Ejemplo: {"tema":"API","nivel":"básico"}.',
},
{
role: "user",
content: "Clasifica este tema: autenticación mediante tokens.",
},
],
response_format: {
type: "json_object",
},
thinking: {
type: "disabled",
},
max_tokens: 300,
});
const raw = response.choices[0]?.message?.content;
if (!raw) {
throw new Error("JSON vacío: revisar el prompt antes de reintentar");
}
const data = JSON.parse(raw);
if (
typeof data.tema !== "string" ||
typeof data.nivel !== "string"
) {
throw new Error("El JSON no cumple la estructura esperada");
}
console.log(data);
La documentación avisa de que JSON Output puede devolver contenido vacío ocasionalmente. Compruebe además finish_reason; si es length, el objeto puede estar truncado. Valide tipos, enumeraciones, tamaños, permisos y reglas de negocio antes de usar los datos. Nunca convierta una cadena generada directamente en SQL, comandos del sistema o acciones externas.
Tool Calls: el modelo propone, la aplicación decide
Tool Calls permite que el modelo proponga una función y sus argumentos. El modelo no ejecuta la función por sí mismo. Su backend debe validar la llamada, comprobar permisos, ejecutar la herramienta y devolver el resultado como mensaje con rol tool.
const tools = [
{
type: "function",
function: {
name: "buscar_pedido",
description: "Busca un pedido autorizado por su identificador.",
parameters: {
type: "object",
properties: {
id_pedido: {
type: "string",
description: "Identificador interno del pedido.",
},
},
required: ["id_pedido"],
additionalProperties: false,
},
},
},
];
- Envíe las definiciones permitidas junto con los mensajes.
- Compruebe si la respuesta contiene
tool_calls. - Valide nombre, argumentos, esquema y permisos del usuario.
- Ejecute la función con timeout, allowlist y límites propios.
- Añada el resultado como mensaje
toolasociado atool_call_id. - Solicite al modelo la respuesta final.
El modo strict sigue marcado como Beta. Requiere https://api.deepseek.com/beta, strict: true en todas las funciones y un subconjunto compatible de JSON Schema. Aunque el esquema sea estricto, la aplicación debe continuar verificando autorización y reglas de negocio.
FIM y Chat Prefix Completion (Beta)
Fill-in-the-Middle (FIM) completa texto a partir de un prefijo y, opcionalmente, un sufijo mediante POST /beta/completions. Chat Prefix Completion fuerza el comienzo de una respuesta de chat marcando el último mensaje del asistente con prefix: true. Ambas funciones están en Beta y utilizan https://api.deepseek.com/beta. El endpoint FIM Beta admite como máximo 4K tokens de salida; el límite de 384K publicado para V4 corresponde a Chat Completions, no a FIM. Pruebe de nuevo estas funciones antes de utilizarlas como dependencia de producción.
Discrepancia oficial: la tabla Models & Pricing marca FIM para V4 Flash y V4 Pro en non-thinking, pero la referencia actual de
POST /completionssolo enumeradeepseek-v4-pro. Por prudencia, el ejemplo usa Pro y esta guía no confirma Flash hasta que DeepSeek unifique ambas páginas.
curl https://api.deepseek.com/beta/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DEEPSEEK_API_KEY}" \
-d '{
"model": "deepseek-v4-pro",
"prompt": "def fibonacci(n):\n ",
"suffix": "\n\nprint(fibonacci(10))",
"max_tokens": 160
}'
- FIM está documentado para non-thinking; no añada parámetros de Thinking a esta solicitud.
- Trate la salida como texto no confiable: revise sintaxis, permisos, dependencias y pruebas antes de ejecutarla.
- Las funciones Beta pueden cambiar; registre el modelo y valide el comportamiento en cada actualización.
Context Caching y aislamiento con user_id
El Context Caching en disco está activado por defecto para los usuarios de la API. DeepSeek persiste unidades de prefijo en límites de solicitudes, al detectar prefijos comunes y en intervalos de tokens para textos largos. Una solicitud posterior consigue un hit cuando coincide por completo con una unidad ya persistida.
usage.prompt_cache_hit_tokens: tokens de entrada recuperados del cache.usage.prompt_cache_miss_tokens: tokens de entrada que no produjeron un hit.- El cache funciona con criterio best effort y no garantiza un porcentaje de hits.
- Su construcción puede tardar segundos.
- Cuando deja de utilizarse, la documentación indica que normalmente se elimina en unas horas o unos días.
- El cache reutiliza el prefijo de entrada; la salida vuelve a generarse.
Límite de esta afirmación: el plazo de horas o días se refiere al Context Caching en disco descrito en esa guía. No debe presentarse como una política general de retención para todos los logs, datos de cuenta u otros tratamientos de la API.
Cómo usar user_id
user_id admite los caracteres [a-zA-Z0-9\-_]+ y un máximo de 512 caracteres. DeepSeek lo documenta para aislamiento de seguridad de contenido, KVCache y programación.
- No incluya datos personales.
- No lo utilice como sustituto de autenticación, autorización o aislamiento de base de datos.
- Para cuentas API normales, todos los valores de
user_idse combinan al calcular la concurrencia. - En cuentas con concurrencia ampliada, pueden aplicarse además límites por
user_id, sin eliminar el límite total de la cuenta.
Límites de concurrencia y códigos de error
| Modelo | Límite de concurrencia por cuenta |
|---|---|
deepseek-v4-flash | 2.500 |
deepseek-v4-pro | 500 |
Una solicitud cuenta como conexión concurrente desde que se envía hasta que termina la respuesta. El cálculo se realiza a nivel de cuenta, independientemente de cuántas API keys existan. Superar el límite devuelve HTTP 429; crear más claves no multiplica la capacidad.
| Código | Causa documentada | Acción inicial |
|---|---|---|
| 400 | Formato inválido | Leer el mensaje y corregir el cuerpo. |
| 401 | Autenticación fallida | Comprobar API key y cabecera. |
| 402 | Saldo insuficiente | Revisar balance y facturación. |
| 422 | Parámetros inválidos | Corregirlos; no repetir la misma solicitud. |
| 429 | Límite alcanzado o solicitudes demasiado rápidas | Reducir concurrencia, poner en cola y esperar. |
| 500 | Error del servidor | Reintento limitado tras una espera breve. |
| 503 | Servidor sobrecargado | Esperar, reintentar de forma limitada o degradar el servicio. |
Para 429, 500, 503 y fallos de red transitorios, aplique backoff exponencial con jitter, un máximo de intentos y un presupuesto total de tiempo. Evite duplicar operaciones con efectos secundarios; implemente idempotencia en su propia aplicación. Para diagnóstico detallado, consulte los códigos de error de DeepSeek API.
Precios de DeepSeek API
Las tarifas verificadas en la documentación operativa el 29 de julio de 2026 están expresadas en dólares estadounidenses por un millón de tokens:
| Modelo | Input: cache hit | Input: cache miss | Output |
|---|---|---|---|
| V4 Flash | US$0,0028 | US$0,14 | US$0,28 |
| V4 Pro | US$0,003625 | US$0,435 | US$0,87 |
Fórmula por solicitud:
coste =
(prompt_cache_hit_tokens / 1.000.000 × tarifa_hit)
+ (prompt_cache_miss_tokens / 1.000.000 × tarifa_miss)
+ (completion_tokens / 1.000.000 × tarifa_output)
Los nombres de la fórmula corresponden a usage.prompt_cache_hit_tokens, usage.prompt_cache_miss_tokens y usage.completion_tokens. usage.completion_tokens_details.reasoning_tokens desglosa los tokens de razonamiento dentro del total de completion; no es un cuarto concepto que deba cobrarse otra vez. Los precios pueden cambiar: verifique la fuente oficial antes de presupuestar y utilice la calculadora y guía de precios de DeepSeek para ejemplos.
Compatibilidad con el formato Anthropic
DeepSeek ofrece https://api.deepseek.com/anthropic para SDK y herramientas basados en el formato Anthropic. Es compatibilidad de protocolo: las respuestas siguen procediendo de modelos DeepSeek, no de Claude.
export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
export ANTHROPIC_API_KEY="${DEEPSEEK_API_KEY}"
- Declare
deepseek-v4-flashodeepseek-v4-prode forma explícita. - Los nombres que comienzan por
claude-opusse mapean a V4 Pro;claude-haikuyclaude-sonnetse mapean a V4 Flash. - Un nombre no admitido puede mapearse automáticamente a V4 Flash. No dependa de ese fallback en producción.
- Texto, system, streaming y tools tienen compatibilidad documentada.
- Los bloques
imageydocumentno están admitidos. mcp_servers,container,service_tiery varios campos específicos se ignoran.- En thinking, el formato Anthropic utiliza
output_config.effortparahighomax;budget_tokensse ignora.
Consulte el mapeo de DeepSeek con Anthropic SDK antes de migrar una aplicación completa.
Migración de deepseek-chat y deepseek-reasoner
Estado documental a 29 de julio de 2026: DeepSeek anunció la retirada de
deepseek-chatydeepseek-reasonerpara el 24 de julio de 2026 a las 15:59 UTC. Las páginas operativas actuales solo enumerandeepseek-v4-flashydeepseek-v4-pro. No se probó una llamada autenticada a los aliases antiguos; por ello esta guía no atribuye un código de error ni afirma que sigan enrutando a Flash.
| Alias heredado | Ruta temporal documentada antes del retiro | Sustitución explícita |
|---|---|---|
deepseek-chat | V4 Flash non-thinking | deepseek-v4-flash + thinking disabled |
deepseek-reasoner | V4 Flash thinking | deepseek-v4-flash + thinking enabled |
- Busque los aliases en código, variables, paneles, tests, colas y documentación.
- Seleccione Flash o Pro expresamente.
- Configure
thinkingy, si procede,reasoning_effort. - Pruebe de nuevo JSON, tools, streaming, cache, calidad y costes.
- Despliegue y supervise antes de eliminar el fallback.
Si consulta esta guía después del plazo, trate los aliases como retirados salvo que la documentación oficial anuncie un cambio posterior.
Lista de seguridad antes de producción
- API key almacenada solo en backend o gestor de secretos.
- Modelo V4 y modo thinking declarados explícitamente.
- Límites de entrada, salida, concurrencia, tiempo y gasto por usuario.
- Validación de JSON y argumentos de Tool Calls con esquemas propios.
- Allowlists y autorización independiente para herramientas y recursos.
- Logs sin API keys, prompts sensibles, datos personales innecesarios ni razonamiento.
user_idpseudónimo y separado del control de acceso.- Cola, backoff, circuit breaker e idempotencia para fallos transitorios.
- Aviso claro de que los mensajes se envían al proveedor de la API.
- Revisión humana en decisiones médicas, jurídicas, financieras, laborales o educativas de alto impacto.
- Identificación clara como contenido generado por IA cuando se publique o distribuya una respuesta.
La documentación pública revisada no especifica para los usuarios finales de aplicaciones de terceros la ubicación exacta de todo el tratamiento, el plazo general de conservación ni si los datos de la API se utilizan para entrenamiento. Verifique estas condiciones en el contrato y la configuración de su cuenta, minimice los datos y explique el flujo en su propia política. Consulte también nuestra guía de seguridad y la Política de privacidad.
Preguntas frecuentes sobre DeepSeek API
¿DeepSeek API es gratis?
La API se factura por tokens de entrada y salida y necesita saldo utilizable. Cualquier crédito promocional o concedido puede cambiar; compruebe su panel y la tabla oficial de precios.
¿DeepSeek API es compatible con OpenAI?
Admite un formato compatible con OpenAI Chat Completions usando https://api.deepseek.com. No implica que todos los endpoints, parámetros o comportamientos sean idénticos.
¿Qué modelo debo elegir?
Empiece evaluando V4 Flash para coste y volumen. Compare V4 Pro en tareas complejas de razonamiento, programación o agentes. Use un conjunto de pruebas propio; no existe una elección universal.
¿Thinking está activado por defecto?
Sí. V4 Flash y V4 Pro admiten ambos modos y el valor predeterminado documentado es enabled. Para evitar ambigüedad, declare el modo explícitamente.
¿presence_penalty y frequency_penalty funcionan en non-thinking?
No. La referencia actual marca los dos parámetros como obsoletos y afirma que no producen efecto al enviarlos. La limitación se aplica a thinking y non-thinking. temperature y top_p son un caso diferente: pueden utilizarse como parámetros de muestreo en non-thinking, pero no tienen efecto en thinking.
¿JSON Output garantiza mi esquema exacto?
Garantiza el objetivo de producir una cadena JSON válida, pero no garantiza que los campos cumplan su esquema o reglas de negocio. DeepSeek también advierte de respuestas vacías ocasionales. Valide siempre el resultado.
¿Puedo llamar a DeepSeek directamente desde el navegador?
No es una arquitectura segura porque expone la API key. Use un backend propio que autentique al usuario, limite el gasto, valide la entrada y reenvíe la solicitud.
¿La API garantiza almacenamiento o retención cero?
No debe afirmarse basándose en la documentación pública revisada. El Context Caching en disco está activado por defecto y su guía describe la eliminación del cache no utilizado normalmente en horas o días, pero esa afirmación no define la retención de todos los datos o logs.
¿Debo seguir usando deepseek-chat o deepseek-reasoner?
No. El plazo de retirada anunciado ya pasó y la documentación operativa solo enumera los IDs V4 explícitos. Migre a deepseek-v4-flash o deepseek-v4-pro y configure thinking de forma explícita. El comportamiento exacto de los aliases antiguos requiere una prueba autenticada todavía no realizada.
Fuentes oficiales verificadas
- DeepSeek: Your First API Call
- DeepSeek: Create Chat Completion
- DeepSeek: Models & Pricing
- DeepSeek: Thinking Mode
- DeepSeek: Rate Limit & Isolation
- DeepSeek: JSON Output
- DeepSeek: Tool Calls
- DeepSeek: Chat Prefix Completion (Beta)
- DeepSeek: Create FIM Completion (Beta)
- DeepSeek: Context Caching
- DeepSeek: Anthropic API
- DeepSeek: Error Codes
- DeepSeek V4 Preview Release
- DeepSeek Open Platform Terms of Service
- DeepSeek Privacy Policy
La disponibilidad de modelos, precios, límites y parámetros puede cambiar. Esta guía refleja la documentación oficial accesible el 29 de julio de 2026 y debe revisarse antes de cada despliegue importante.
