Desarrolladores
Integra Inmovilla en tus herramientas: API REST documentada con OpenAPI 3.1, servidor MCP para asistentes IA y endpoints públicos de búsqueda y leads.
Recursos machine-readable
Quickstart
# Público — sin autenticación
curl "https://www.inmovilla.com/api/v1/search?q=crm&locale=es"
# Autenticado — Bearer token (imv_…)
curl -H "Authorization: Bearer imv_TU_TOKEN" \
"https://www.inmovilla.com/api/v1/docs?limit=5"
# MCP (Streamable HTTP, JSON-RPC 2.0)
curl -X POST https://www.inmovilla.com/api/v1/mcp \
-H "Authorization: Bearer imv_TU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Autenticación
Los endpoints públicos (búsqueda, contacto, demo, salud) no requieren autenticación. El resto usa Bearer API tokens con prefijo imv_, creados por un administrador en el panel. Los permisos siguen el formato resource:action (docs:read, blog:write, comodines *:read). Guía completa en /auth.md.
Superficie de la API
Módulos documentados en la especificación OpenAPI. Cada operación incluye parámetros tipados, cuerpo de petición y esquema de autenticación.
DocsEntradas de documentación de la academia. Soporte multi-idioma con traducciones.GET /api/v1/docs · +7
Doc FAQsPreguntas frecuentes asociadas a entradas de documentación.GET /api/v1/docs/:id/faqs · +4
CoursesCursos de la academia. Soportan capítulos, tests, y multi-idioma.GET /api/v1/courses · +5
Course ChaptersCapítulos/lecciones de un curso.GET /api/v1/courses/:id/chapters · +4
BlogPosts del blog corporativo con soporte multi-idioma.GET /api/v1/blog · +5
Media filesBiblioteca de archivos del equipo (imágenes comprimidas, PDF, ZIP, documentos). Hotlinks de marca en `/file/<public_id>` (302 al bucket público `media-files`).GET /api/v1/media-files · +5
OAuth 2.1 (conectores MCP)Authorization server integrado para clientes MCP (Claude Desktop, ChatGPT). Registro dinámico (RFC 7591), authorization code + PKCE S256, refresh tokens rotativos y revocación (RFC 7009). Los access tokens son tokens `imv_` normales (aparecen en /admin/api con origen OAuth). Discovery: `/.well-known/oauth-authorization-server` y `/.well-known/oauth-protected-resource/api/v1/mcp`.POST /api/v1/oauth/register · +3
RedirectsRedirecciones 301 permanentes para conservar SEO al mover contenido entre URLs públicas.GET /api/v1/redirects · +6
Global BlocksBloques globales compartidos entre páginas del landing builder. Los cambios se propagan a todas las páginas vinculadas.GET /api/v1/global-blocks · +4
Landing PagesPáginas del web-editor. Modelo draft/published por página: cada `landing_page` tiene un `landing_page_version` en estado `draft` y otro en `published`. Las mutaciones impactan al draft; el cambio se hace público con `/publish`. Bloques se gestionan vía `/blocks` (reemplazo masivo) y `/reorder`. El payload de creación admite el JSON completo (slug + seo + theme_config + blocks[]) — mismo shape que el botón "Importar JSON" del editor. Catálogo live de tipos de bloque: `/api/v1/landing-blocks` (MCP: `inmovilla_list_landing_blocks` / `inmovilla_get_landing_block`).GET /api/v1/landing-blocks · +13
Landing Pages (admin-only AI)Endpoints IA del editor web. Solo accesibles con sesión admin (cookie); no expuestos vía Bearer token.POST /api/v1/landing-pages/generate
CategoriesCategorías para documentación. Soportan jerarquía padre-hijo y traducciones.GET /api/v1/categories · +5
Blog CategoriesCategorías específicas para el blog.GET /api/v1/blog-categories · +4
TagsEtiquetas para documentación, cursos y blog.GET /api/v1/tags · +4
Web Editor SettingsConfiguración global del editor web para scripts comunes de toda la web pública.GET /api/v1/web-editor/settings · +1
PromotionsPromociones y banners del sitio.GET /api/v1/promotions · +4
ContactFormulario de contacto público. Endpoint sin auth, rate-limited por IP (5/15min). Persiste el lead en la tabla `lead` (auditoría, siempre) y lo reenvía a los sinks activados en el bloque: webhook interno (CONTACT_FORM_WEBHOOK_URL) y/o Vixiee (CRM).POST /api/v1/contact
DemoFormulario de solicitud de demo. Endpoint público, rate-limited por IP (5/15min). Persiste el lead (auditoría) y lo reenvía a los sinks activados en el bloque: webhook interno (DEMO_FORM_WEBHOOK_URL) y/o Vixiee (CRM).POST /api/v1/demo