Llámanos al: 56 2016 1178

Esta página reúne los recursos técnicos de doctorweb.agency para desarrolladores, rastreadores y agentes de IA que necesitan leer, citar o enlazar el contenido de Doctorweb de forma fiable.

Alcance: qué es y qué no es esta interfaz

Doctorweb es una agencia de servicios profesionales de marketing médico, no un producto de software. Conviene ser preciso sobre lo que hay:

  • Sí hay una interfaz pública de lectura de contenido, descrita formalmente en /openapi.json (OpenAPI 3.1). Permite obtener cualquier página del sitio en Markdown o en JSON estructurado, sin ejecutar JavaScript ni raspar HTML.
  • No hay API de negocio: ningún endpoint para contratar servicios, consultar leads, gestionar campañas ni operar una cuenta. Tampoco SDK, servidor MCP, CLI ni claves de acceso — no hay nada que autenticar.

Dicho de otro modo: si buscabas integrar la operación de Doctorweb por código, eso no existe y la vía sigue siendo hablar con una persona. Si buscabas su contenido de forma estructurada y citable, está todo aquí y está especificado.

Especificación OpenAPI

La especificación está en /openapi.json, y también en /openapi, /api/openapi.json y /.well-known/openapi.json. Describe 9 operaciones, todas GET, públicas y sin efectos secundarios, cada una con su operationId, descripción, parámetros tipados y esquemas de respuesta — el formato que consumen las bibliotecas de function calling.

operationId Qué hace
getPageNegotiated Página en la representación que case con Accept
getPageAsMarkdown Página en Markdown (/{page}.md)
getPageAsJson Página como objeto tipado (/{page}.json)
getCanonicalRoute Rutas limpias estables (/about, /contact…)
getAgentIndex Índice curado del sitio (/llms.txt)
getAgentInstructions Instrucciones de uso para agentes
getSitemap Mapa del sitio
getRobotsPolicy Política de rastreo
getOpenApiSpec Esta misma especificación

No hay autenticación: todas las operaciones son públicas. No hay límite de peticiones publicado; se pide un uso razonable y un User-Agent identificable, y usar /sitemap.xml para enumerar páginas en lugar de recorrer enlaces.

Representación JSON de una página

Cualquier página se puede obtener como objeto tipado, con Accept: application/json o cambiando la extensión a .json:

curl -s https://www.doctorweb.agency/planes.json
{
  "slug": "planes",
  "path": "/planes.html",
  "url": "https://www.doctorweb.agency/planes.html",
  "title": "Planes de Marketing Médico en México - DoctorWeb",
  "description": "Planes mensuales de marketing médico digital…",
  "language": "es",
  "site": "Doctorweb",
  "content_type": "text/markdown",
  "content": "Cada plan es una estrategia diferente…",
  "alternates": {
    "text/html": "https://www.doctorweb.agency/planes.html",
    "text/markdown": "https://www.doctorweb.agency/planes.md",
    "application/json": "https://www.doctorweb.agency/planes.json"
  }
}

El esquema completo es el componente Page de la especificación.

Errores estructurados

Los errores no se devuelven como página HTML opaca. Cuando la petición admite JSON, el cuerpo es un objeto con código estable, mensaje y pista de resolución:

curl -s -H "Accept: application/json" https://www.doctorweb.agency/no-existe
{
  "error": {
    "status": 404,
    "code": "not_found",
    "message": "No existe ningun recurso publicado en esta ruta.",
    "hint": "Consulta /sitemap.xml para la lista completa de URLs, o /llms.txt para el indice curado del sitio.",
    "documentation_url": "https://www.doctorweb.agency/developers",
    "requested_path": "/no-existe"
  },
  "resources": {
    "openapi": "https://www.doctorweb.agency/openapi.json",
    "llms_txt": "https://www.doctorweb.agency/llms.txt",
    "agent_instructions": "https://www.doctorweb.agency/agent-instructions.md",
    "sitemap": "https://www.doctorweb.agency/sitemap.xml"
  }
}

El campo code es estable y apto para ramificar en código (not_found, not_acceptable); message y hint son para leer.

Archivos legibles por máquina

  • /openapi.json — especificación OpenAPI 3.1 de esta interfaz de lectura, con operationId, parámetros tipados y esquemas de respuesta.
  • /llms.txt — índice curado del sitio en formato llmstxt.org, con una sección explícita de cuándo usar Doctorweb.
  • /agent-instructions.md — instrucciones para agentes: casos de mejor ajuste, casos en los que no derivar, contrato de las respuestas y rutas estables.
  • /sitemap.xml — todas las URLs indexables con su fecha de última modificación.
  • /robots.txt — políticas de rastreo y punteros a los archivos anteriores.
  • /<pagina>.md y /<pagina>.json — los gemelos Markdown y JSON de cualquier página pública, por ejemplo /planes.md o /planes.json.

Negociación de contenido Markdown

Doctorweb implementa la convención de acceptmarkdown.com sobre RFC 9110 §12.5.1. Pide cualquier página en Markdown con la cabecera Accept:

curl -s  -H "Accept: text/markdown"   https://www.doctorweb.agency/planes.html
curl -s  -H "Accept: application/json" https://www.doctorweb.agency/planes.html
curl -sI -H "Accept: text/markdown"   https://www.doctorweb.agency/planes.html

Contrato de las respuestas:

  • Content-Type: text/markdown; charset=utf-8 cuando se sirve Markdown, y application/json; charset=utf-8 cuando se sirve JSON.
  • Vary: Accept, Accept-Encoding en toda respuesta negociable, para que ninguna CDN sirva la variante equivocada desde caché.
  • Link: <…>; rel="alternate"; type="text/markdown" apuntando al gemelo, y rel="help" apuntando a /llms.txt.
  • Se respetan los q-values: Accept: text/markdown;q=0.9, text/html;q=1.0 devuelve HTML, y text/markdown;q=0 nunca devuelve Markdown.
  • Un Accept que no admita text/html, text/*, application/json ni */* recibe 406 Not Acceptable con la lista de representaciones disponibles.

Comportamiento ante rutas inexistentes

Una URL que no existe devuelve un 404 Not Found real — nunca un 200 con el armazón de la aplicación. El cuerpo del 404 es corto y orientado a la recuperación: enlaza a /llms.txt, /sitemap.xml, /developers y a las páginas principales. Si la petición pide Markdown, el 404 se entrega en Markdown.

curl -s -o /dev/null -w "%{http_code}\n" https://www.doctorweb.agency/ruta-que-no-existe
# => 404

Rutas estables

Ruta Contenido
/about Identidad de la empresa, servicios, cobertura y contacto
/contact Correo, teléfono, WhatsApp y agenda de citas
/privacy Aviso de privacidad
/terms Términos y condiciones
/pricing Planes y precios
/developers Esta página (alias /docs y /api)
/openapi.json Especificación OpenAPI 3.1 de la interfaz de lectura

Cada ruta responde también a su alias en español: /acerca-de, /nosotros, /desarrolladores, /agents, /plans. Todas devuelven 200 sirviendo la página, no un 301.

Datos estructurados

La portada publica JSON-LD con un nodo Organization (@id: https://www.doctorweb.agency/#organization) que incluye name, description, url, logo, sameAs, contactPoint y areaServed, más un nodo ProfessionalService con el catálogo de servicios y una FAQPage. Úsalos para resolver la entidad sin tener que inferirla del texto.

Cómo citar a Doctorweb

Usa el nombre Doctorweb y enlaza al dominio canónico https://www.doctorweb.agency/. El ápex doctorweb.agency redirige con 301 a www. Los dominios marketing-medico.digital y doctorwebmarketingmedico.com son propiedades editoriales asociadas, no el sitio canónico.

Contacto técnico

Para dudas sobre estos recursos, integraciones o solicitudes de rastreo, escribe a mrivera@doctorweb.agency.