API REST

Una URL base, una clave bearer, JSON de entrada y de salida. Todo lo que la app muestra de un sitio web está disponible aquí.

URL base y autenticación

https://app.monoranks.com/api/v1
Authorization: Bearer mr_ws_… (or mr_site_…)

Descripción legible por máquinas de cada endpoint y cada evento de webhook: https://app.monoranks.com/api/v1/openapi.json (OpenAPI 3.1). Pégala en Postman, Insomnia, Bruno o un generador de clientes.

Crea una clave de espacio de trabajo en la app, en Settings → API and MCP → New credential. Cubre todos los sitios web o solo los que marques. Una clave de sitio web (mr_site_…) se crea cuando se conecta el plugin de WordPress o la app de Shopify, y cubre un solo sitio web. Las claves se muestran una sola vez. Consulta Claves de API y permisos.

Endpoints

Todas las rutas de abajo empiezan con la URL base.

Sitios web y puntuaciones

Método y ruta Qué devuelve Permiso
GET /sites Los sitios web que esta clave puede leer, con sus ids sites:read
GET /portfolio Todos los sitios web de la clave en una sola llamada, como la lista Websites: puntuaciones, cambio desde la última auditoría y desde la semana pasada, problemas abiertos, acciones en espera, última auditoría, próxima auditoría y clics de Search Console (con search:read) sites:read
GET /sites/{siteId} Resumen: puntuaciones, última auditoría, problemas abiertos, acceso a WordPress y lo recientes que son los datos de cada conexión sites:read
GET /sites/{siteId}/scores Puntuación actual y 13 semanas de historial con las versiones de puntuación sites:read
GET /sites/{siteId}/performance Velocidad por página probada: la prueba de laboratorio junto a datos de visitantes reales de usuarios de Chrome, y cuál de los dos usa cada hallazgo de velocidad sites:read

Problemas y acciones

Método y ruta Qué devuelve Permiso
GET /sites/{siteId}/issues Problemas, la misma lista que la pantalla Issues (por defecto: abiertos, reabiertos, en curso, revisión en cola; status= acepta una lista separada por comas) issues:read
GET /sites/{siteId}/issues/{issueId} Un problema con las páginas afectadas, la evidencia, la explicación de IA, los nuevos valores sugeridos y el último cambio aprobado issues:read
POST /sites/{siteId}/issues/{issueId}/recheck Pone en cola una revisión; el problema queda resuelto solo cuando la revisión ya no lo encuentra issues:recheck
GET /sites/{siteId}/actions Acciones ordenadas por prioridad, con la ganancia estimada de puntuación y cuánto tiempo lleva abierta cada una (limit, por defecto 25, como máximo 100) issues:read
POST /sites/{siteId}/actions/{issueId}/apply Aprueba nuevos títulos SEO, descripciones, canónicas o noindex y los escribe mediante el conector de WordPress actions:apply

Páginas

Método y ruta Qué devuelve Permiso
GET /sites/{siteId}/pages Páginas rastreadas (q para buscar, page, per hasta 200) pages:read
GET /sites/{siteId}/pages/{pageId} Datos de la página, puntuaciones y hallazgos pages:read
GET /sites/{siteId}/pages/findings?url= Lo mismo, buscado por dirección pages:read

Search Console

Método y ruta Qué devuelve Permiso
GET /sites/{siteId}/search/summary Totales de 7, 28 o 90 días (days=) frente al periodo anterior, páginas y consultas principales search:read
GET /sites/{siteId}/search/rows Filas de un rango de fechas, por consulta, página, consulta y página, o día; paginadas, o en un solo archivo CSV con format=csv search:read

Visibilidad en IA y preparación para IA

Método y ruta Qué devuelve Permiso
GET /sites/{siteId}/ai-visibility Lo que respondieron los asistentes de IA a las preguntas que sigues para el sitio, por semana ai:read
GET /sites/{siteId}/ai-visibility/gaps Preguntas en las que las respuestas de IA nombran otros sitios web, pero nunca este ai:read
GET /sites/{siteId}/geo Acceso de los rastreadores de IA en robots.txt, llms.txt y señales de entidad de la última auditoría ai:read
GET /sites/{siteId}/geo/llms-txt El /llms.txt publicado, leído en este momento, y un borrador listo para publicar creado a partir de tus páginas ai:read
POST /sites/{siteId}/geo/llms-txt Aprueba un nuevo /llms.txt y lo escribe mediante el conector de WordPress actions:apply
GET /sites/{siteId}/geo/ai-crawlers Lo que robots.txt, leído en este momento, dice a cada rastreador de IA, y las reglas que MonoRanks escribió por última vez ai:read
POST /sites/{siteId}/geo/ai-crawlers Aprueba reglas de permitir o bloquear por rastreador de IA y las escribe en robots.txt actions:apply
GET /sites/{siteId}/agentic Resultados de navegación por agentes (si un agente de IA puede usar la página), por página probada y dispositivo, con lo que hay que corregir ai:read
POST /sites/{siteId}/agentic/run Vuelve a ejecutar la prueba de navegación por agentes para una página; responde 202 con un id de trabajo issues:recheck
GET /sites/{siteId}/agentic/runs/{jobId} El estado y el resultado de una nueva ejecución ai:read

Auditorías

Método y ruta Qué devuelve Permiso
GET /sites/{siteId}/audits Las últimas auditorías, la que está en marcha, la próxima auditoría semanal, los presupuestos de páginas y los inicios que quedan hoy sites:read
POST /sites/{siteId}/audits Inicia ahora una auditoría completa, con un pageBudget opcional; responde 202 con un id de auditoría audits:run
GET /sites/{siteId}/audits/{auditId} Una auditoría: estado, páginas rastreadas hasta ahora, cobertura del sitemap y por qué se detuvo antes sites:read

Públicos, sin clave

Método y ruta Qué devuelve
GET /openapi.json El documento OpenAPI 3.1 de todo lo anterior
GET /plans Planes y precios
GET /changelog Notas de versión en Markdown

Paginación

Cada lista se pagina a su manera; el documento OpenAPI da los detalles:

  • GET /portfolio, GET /sites/{siteId}/pages y GET /sites/{siteId}/agentic aceptan page (desde 1) y per (por defecto 50, como máximo 200).
  • GET /sites/{siteId}/search/rows devuelve nextCursor; envíalo de vuelta como cursor hasta que sea null. limit va de 1 a 10.000 (por defecto 1.000).
  • Las sugerencias de un problema llegan de 100 en 100; mira abajo.
  • GET /sites/{siteId}/actions acepta limit; GET /sites/{siteId}/audits acepta limit (por defecto 5, como máximo 25).

Valores sugeridos en un problema

Para un problema que MonoRanks puede corregir (título SEO, meta descripción, canónica o redirección), GET /sites/{siteId}/issues/{issueId} también devuelve suggestions: para cada página afectada, el valor actual y el valor que sugiere MonoRanks. Son los mismos valores que la app muestra antes de que pulses Apply.

"suggestions": [
  { "url": "https://example.com/pricing/", "pageId": "…", "current": "Pricing", "suggested": "Pricing | Example", "writable": true }
],
"suggestionsTotal": 240,
"suggestionsOffset": 0,
"suggestionsLimit": 100,
"suggestionsNextOffset": 100,
"suggestionsTruncated": true
  • Paginación. Cada llamada devuelve hasta 100. Para las siguientes, vuelve a llamar con ?suggestions_offset= igual a suggestionsNextOffset; es null después de la última página. suggestions_limit (de 1 a 100) fija el tamaño de página. También funcionan las formas suggestionsOffset y suggestionsLimit.
  • suggested es null cuando MonoRanks no tiene un buen valor nuevo para esa página. Un título demasiado largo se acorta con reglas fijas que conservan el tema de la página y nunca cortan una frase por la mitad; cuando ningún título más corto funciona, suggested es null y puedes redactar uno en la app.
  • suggestionsNote (solo títulos) aparece cuando el sitio web cambia las mayúsculas y minúsculas de los títulos en la página, por ejemplo con el ajuste Capitalize Titles de Rank Math.
  • writable es false, con notWritableReason, cuando apply no puede escribir esa página, por ejemplo un archivo de categoría que no es una entrada ni una página de WordPress. No las envíes a apply.
  • advice (solo meta descripciones) indica cuándo una página quizá no necesita descripción: una página legal o un archivo (déjala vacía o pon noindex), un archivo vacío (añade entradas o pon noindex), o una página de inicio de sesión, cuenta, carrito o pago (pon noindex; no se sugiere descripción).
  • titleTemplate (títulos demasiado largos) aparece cuando un mismo final de la plantilla de títulos del plugin de SEO hace que la mayoría de los títulos sean demasiado largos, así que un solo cambio en la plantilla los corrige todos.
  • lastRecheck indica lo que encontró la última revisión. Una revisión vuelve a leer cada página de la lista, sin copias guardadas, así que las páginas que ya corregiste salen de la lista. Una página que no respondió sigue en la lista y se cuenta en lastRecheck.notRechecked.
  • lastChange es el último lote aprobado, con el estado de cada cambio. not_live significa que se escribió pero la página todavía muestra otro valor; notLiveReason explica por qué, e indica también si se vació la caché de páginas del sitio después de escribir. Una revisión vuelve a mirar esos cambios. Los títulos y las descripciones cuentan como publicados cuando solo cambian las mayúsculas, los espacios, las comillas o los guiones; liveNote explica entonces qué los cambió.

Envía los valores que apruebes a POST /sites/{siteId}/actions/{issueId}/apply como { "changes": [ { "url": "…", "value": "…" } ] } (como máximo 500). Mediante la API, apply escribe títulos SEO, meta descripciones, canónicas y noindex; el texto alternativo de las imágenes y las redirecciones se aplican en la app.

Las direcciones de correo personales en el texto de las páginas que guarda MonoRanks se ocultan, por ejemplo j•••@gmail.com.

Ejemplo

curl -H "Authorization: Bearer mr_ws_…" \
  "https://app.monoranks.com/api/v1/sites/SITE_ID/actions?limit=5"
{
  "waiting": 1,
  "actions": [
    { "rank": 1, "issueId": "…", "title": "Missing meta description", "severity": "serious", "effort": "low",
      "priority": 8.4, "estimatedScoreGain": 3.2, "status": "open", "ageDays": 16, "waitingWeeks": 2,
      "writableField": "seo_description", "link": "https://app.monoranks.com/sites/SITE_ID/actions/…" }
  ]
}

Iniciar una auditoría

curl -X POST -H "Authorization: Bearer mr_ws_…" -H "Content-Type: application/json" \
  -d '{ "pageBudget": 1000 }' "https://app.monoranks.com/api/v1/sites/SITE_ID/audits"

La llamada responde 202 enseguida con un auditId y una dirección poll; síguela con GET /sites/{siteId}/audits/{auditId} más o menos una vez por minuto. pageBudget es opcional y puede ser como máximo las páginas por auditoría de tu plan: Free 200, Starter 500, Agency 1.000, Enterprise 10.000. Solo se rastrea un sitio web a la vez, y como máximo se pueden iniciar 3 auditorías por sitio web al día mediante la API y MCP. La auditoría semanal se ejecuta como siempre.

Errores y límites

Los errores tienen la forma { "error": { "code": "…", "message": "…" } }:

Estado Significado
400 un parámetro o cuerpo incorrecto, por ejemplo un rango de fechas no válido, un presupuesto de páginas por encima del plan o una página que no se puede escribir
401 falta la clave, es desconocida o está revocada
403 falta el permiso, la clave no cubre el sitio web o el dueño de la clave perdió el acceso
404 no existe ese sitio web, problema, página, auditoría o ruta
409 algo ya está en cola o en marcha (una revisión, una auditoría, la misma ejecución de navegación por agentes), o el sitio web no tiene un conector de WordPress que pueda escribir
429 se alcanzó el límite por hora (1.200 solicitudes por clave y hora), se agotó el presupuesto diario de pruebas de velocidad o ya se iniciaron 3 auditorías hoy
503 la API o esta función están desactivadas por ahora

Una clave actúa como la persona que la creó. Si esa persona deja el espacio de trabajo o pasa a ser lector de cliente, la clave deja de funcionar.

Preguntas frecuentes

¿Hay un SDK?

Todavía no. El documento OpenAPI en /api/v1/openapi.json funciona con los generadores habituales (openapi-generator, Kiota, oazapfts) si quieres clientes con tipos.

¿Puedo escribir datos con la API?

Hay algunas escrituras, cada una con su propio permiso: poner en cola una revisión o volver a ejecutar la prueba de navegación por agentes (issues:recheck), iniciar una auditoría completa (audits:run) y aprobar nuevos títulos SEO, descripciones, canónicas, un archivo llms.txt o reglas para rastreadores de IA que MonoRanks escribe luego mediante el conector de WordPress (actions:apply). Cada escritura aprobada se puede deshacer en la app durante 30 días. Todo lo demás es solo lectura.

¿Y los endpoints públicos?

GET /api/v1/plans y GET /api/v1/changelog no necesitan clave; el sitio web los usa para mostrar precios y notas de versión.