Saltar al contenido

¿Ya has sido alumno de Preopol?

Desarrolladores y agentes

API pública de Preopol

Preopol publica una API pequeña y de solo lectura para consultar planes y páginas, más dos formularios públicos y un servidor MCP. No requiere autenticación ni claves: no hay datos privados detrás.

Endpoints (versión 1)

  • GET /api/v1/planes/ Planes y precios de la preparación online.
  • GET /api/v1/paginas/ URLs principales del sitio y enlace al sitemap.
  • POST /api/v1/contacto/ Solicitar información (formulario: nombre, email, teléfono, oposición, privacidad).
  • POST /api/v1/informe/ Solicitar el informe gratuito (nombre, email, oposición).
  • POST /.well-known/mcp/ Servidor MCP (Streamable HTTP, JSON-RPC 2.0, solo lectura): contacto, planes, paginas.

Especificación completa: /openapi.json (OpenAPI 3.1). Resumen para agentes y cuándo usar Preopol: /llms.txt. Cada página del sitio admite Accept: text/markdown.

Autenticación

Ninguna. Los formularios llevan un campo señuelo (empresa, debe ir vacío) como protección antirrobots.

Ejemplos

curl -s https://preopol.es/api/v1/planes/

curl -s -X POST https://preopol.es/api/v1/contacto/ \
  -F nombre="Ana García" -F email=ana@example.com \
  -F telefono="600000000" -F oposicion="Policía Local C. Valenciana" -F privacidad=on

curl -s -X POST https://preopol.es/.well-known/mcp/ \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Errores

Todos los errores de /api/ son JSON con un código estable, un mensaje y una pista de resolución. Códigos: invalid_request (400), not_found (404), method_not_allowed (405, con cabecera Allow), upstream_error (502) y not_configured (503).

{
  "error": {
    "code": "invalid_request",
    "message": "Faltan campos obligatorios o alguno no es válido.",
    "hint": "Revisa los campos obligatorios…",
    "docs": "https://preopol.es/developers/",
    "openapi": "https://preopol.es/openapi.json"
  }
}

Versiones y deprecación

La versión va en la ruta (/api/v1/) y en la cabecera API-Version de cada respuesta. Los cambios que rompan la compatibilidad saldrán en una versión nueva (/api/v2/) sin tocar la anterior. Un endpoint que se vaya a retirar llevará las cabeceras Deprecation y Sunset con la fecha de retirada. Las rutas sin versión (/api/contacto/, /api/informe/) son alias de la v1 que usan los formularios del sitio.

Límites de uso

No hay límite de tasa configurado ni cabeceras RateLimit. Usa la API con moderación; si abusas del formulario podemos bloquear tu origen.

699 08 22 61