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 |
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 |
Puntuación actual y 13 semanas de historial con las versiones de puntuación | sites:read |
GET /sites |
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 |
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 |
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 |
Pone en cola una revisión; el problema queda resuelto solo cuando la revisión ya no lo encuentra | issues:recheck |
GET /sites |
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 |
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 |
Páginas rastreadas (q para buscar, page, per hasta 200) |
pages:read |
GET /sites |
Datos de la página, puntuaciones y hallazgos | pages:read |
GET /sites |
Lo mismo, buscado por dirección | pages:read |
Search Console
| Método y ruta | Qué devuelve | Permiso |
|---|---|---|
GET /sites |
Totales de 7, 28 o 90 días (days=) frente al periodo anterior, páginas y consultas principales |
search:read |
GET /sites |
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 |
Lo que respondieron los asistentes de IA a las preguntas que sigues para el sitio, por semana | ai:read |
GET /sites |
Preguntas en las que las respuestas de IA nombran otros sitios web, pero nunca este | ai:read |
GET /sites |
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 |
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 |
Aprueba un nuevo /llms.txt y lo escribe mediante el conector de WordPress |
actions:apply |
GET /sites |
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 |
Aprueba reglas de permitir o bloquear por rastreador de IA y las escribe en robots.txt | actions:apply |
GET /sites |
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 |
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 |
El estado y el resultado de una nueva ejecución | ai:read |
Auditorías
| Método y ruta | Qué devuelve | Permiso |
|---|---|---|
GET /sites |
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 |
Inicia ahora una auditoría completa, con un pageBudget opcional; responde 202 con un id de auditoría |
audits:run |
GET /sites |
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}/pagesyGET /sites/{siteId}/agenticaceptanpage(desde 1) yper(por defecto 50, como máximo 200).GET /sites/{siteId}/search/rowsdevuelvenextCursor; envíalo de vuelta comocursorhasta que seanull.limitva de 1 a 10.000 (por defecto 1.000).- Las sugerencias de un problema llegan de 100 en 100; mira abajo.
GET /sites/{siteId}/actionsaceptalimit;GET /sites/{siteId}/auditsaceptalimit(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 asuggestionsNextOffset; esnulldespués de la última página.suggestions_limit(de 1 a 100) fija el tamaño de página. También funcionan las formassuggestionsOffsetysuggestionsLimit. suggestedesnullcuando 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,suggestedesnully 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.writableesfalse, connotWritableReason, 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.lastRecheckindica 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 enlastRecheck.notRechecked.lastChangees el último lote aprobado, con el estado de cada cambio.not_livesignifica que se escribió pero la página todavía muestra otro valor;notLiveReasonexplica 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;liveNoteexplica 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.