La API REST para leer tu grafo, tu puntuación y tus recomendaciones, y para lanzar análisis. Respuestas JSON, autenticadas con claves de API.
URL base
Todos los endpoints cuelgan del prefijo /v1 y se sirven únicamente por HTTPS.
URL base
https://api.graphorank.com
Autenticación
Genera una clave desde la página API y MCP de la app. Las claves llevan el prefijogr_, se muestran completas una sola vez al crearlas y se almacenan con hash. Envía la clave en la cabecera X-Api-Key en cada petición.
Las claves tienen ámbitos: read (siempre concedido) cubre todos los endpoints GET, mientras que write es necesario para crear sitios, lanzar análisis y gestionar programaciones. La sesión de la propia app usa en cambio un JWT en la cabecera Authorization: Bearer : las claves de API son para el acceso programático.
Shell
# Create a key in the app under API & MCP — keys start with "gr_"
export GRAPHORANK_API_KEY="gr_..."
curl https://api.graphorank.com/v1/sites \
-H "X-Api-Key: $GRAPHORANK_API_KEY"
Endpoints
ENDPOINTDESCRIPCIÓN
GET/v1/sitesLista los sitios de tu espacio de trabajo.
GET/v1/scans/{scan_id}Consulta un análisis hasta que su estado sea done y luego lee su grafo, su puntuación y sus recomendaciones.
GET/v1/scans/{scan_id}/graphLos nodos incluyen el rol (pillar | cluster | hub | money | orphan | noindex), los identificadores de clúster estructural y semántico, el PageRank, el grado de entrada y salida, la profundidad de clics y la indexabilidad.
Un sitio es un dominio raíz de tu espacio de trabajo. Añádelo, demuestra que es tuyo y luego analízalo. La propiedad se comprueba con un archivo well-known o una etiqueta meta; el fragmento exacto con el token está en Primeros pasos.
Obtiene un único sitio. La respuesta tiene la misma forma que un elemento de la lista de GET /v1/sites.
PARÁMETROTIPODESCRIPCIÓN
site_idpath · uuidobligatorioIdentificador del sitio.
POST/v1/sites/{site_id}/verify
Ejecuta la comprobación de propiedad con el método elegido. La respuesta siempre incluye el token de tu sitio, así que puedes llamar a este endpoint una vez para obtenerlo antes de publicar el archivo o la etiqueta meta.
PARÁMETROTIPODESCRIPCIÓN
site_idpath · uuidobligatorioIdentificador del sitio.
methodbody · stringobligatorioMétodo de verificación: «file» (archivo well-known) o «meta» (etiqueta meta de la página de inicio).
{
"verified": true,
"method": "file",
"token": "9Kd2mQx7Ln4pTv8waZrGQg",
"detail": "token found at /.well-known/graphorank-verify.txt"
}
Análisis
Un análisis ejecuta todo el proceso: rastreo, análisis semántico, construcción del grafo y puntuación. Su estado pasa por queued → crawling → embedding → scoring → done (o failed, con un código de error). Los análisis cuentan para la cuota mensual de tu plan.
POST/v1/sites/{site_id}/scans
Lanza un análisis bajo demanda. Requiere el ámbito write. Devuelve 202 con el análisis en cola; si se agota la cuota mensual, recibes 402 quota_exceeded.
PARÁMETROTIPODESCRIPCIÓN
site_idpath · uuidobligatorioIdentificador del sitio.
render_modebody · stringOpcional: «http», «js» o «auto». Omítelo para usar el valor por defecto: auto activa el renderizado JS solo cuando el sitio lo necesita.
El grafo completo de nodos y aristas de un análisis completado, en el mismo formato que consume la vista interactiva de la app. Los grafos grandes se sirven en páginas con cursor de 1.000 elementos (primero los nodos y luego las aristas): sigue pidiendo con el next_cursor devuelto hasta que llegue null. El objeto meta se repite en cada página.
GET/v1/scans/{scan_id}/graph
Los nodos incluyen el rol (pillar | cluster | hub | money | orphan | noindex), los identificadores de clúster estructural y semántico, el PageRank, el grado de entrada y salida, la profundidad de clics y la indexabilidad. Las aristas son enlaces internos.
PARÁMETROTIPODESCRIPCIÓN
scan_idpath · uuidobligatorioIdentificador del análisis.
cursorquery · integerCursor devuelto por la página anterior. Por defecto, 0 (primera página).
GraphRank es un referente de 0 a 100 de lo visible que es un sitio para los motores generativos. El endpoint lo devuelve junto con las cuatro puntuaciones por área que muestra la app (estructural, temática, GEO y técnica) y el objeto de detalle que alimenta las explicaciones de la app. La metodología que hay detrás del número es propietaria y se aplica igual a todos los sitios.
GET/v1/scans/{scan_id}/score
GraphRank y las cuatro puntuaciones por área de un análisis completado.
PARÁMETROTIPODESCRIPCIÓN
scan_idpath · uuidobligatorioIdentificador del análisis.
Correcciones priorizadas generadas a partir del análisis, cada una con una gravedad (P0 bloqueante, P1 importante, P2 deseable), mensajes localizados y un objeto meta con la URL afectada y contexto adicional.
GET/v1/scans/{scan_id}/recommendations
Lista las recomendaciones del análisis, de más a menos grave.
PARÁMETROTIPODESCRIPCIÓN
scan_idpath · uuidobligatorioIdentificador del análisis.
severityquery · stringFiltro opcional: «P0», «P1» o «P2».
[
{
"id": "b7e3a9c1-5d2f-4e8b-a1c6-3f9d7e2b8a54",
"page_id": "9c2b1e07-4f6a-4d3e-b8a1-7c5e9f2d1b36",
"type": "orphan_page",
"severity": "P0",
"message_it": "Pagina orfana: nessun link interno la raggiunge. Collegala dalla sezione pertinente.",
"message_en": "Orphan page: no internal link reaches it and crawlers struggle to find it. Link it from the relevant section.",
"meta": { "url": "https://rovere-arredamenti.com/blog/cura-del-rovere" }
}
]
Historial y comparación
Sigue cómo evoluciona la puntuación entre análisis y compara dos de ellos para ver exactamente qué ha cambiado: páginas añadidas y eliminadas, páginas huérfanas, indexabilidad.
GET/v1/sites/{site_id}/history
Serie temporal de GraphRank del sitio, un punto por análisis completado, ordenada por marca de tiempo.
PARÁMETROTIPODESCRIPCIÓN
site_idpath · uuidobligatorioIdentificador del sitio.
fromquery · date-timeSolo los puntos en esta marca de tiempo ISO 8601 o posteriores.
toquery · date-timeSolo los puntos en esta marca de tiempo ISO 8601 o anteriores.
Compara dos análisis del mismo sitio. Sin parámetros, compara los dos análisis completados más recientes. score_delta y sub_deltas son null cuando alguno de los análisis no tiene puntuación.
PARÁMETROTIPODESCRIPCIÓN
site_idpath · uuidobligatorioIdentificador del sitio.
from_scanquery · uuidAnálisis de referencia. Por defecto, el segundo análisis completado más reciente.
to_scanquery · uuidAnálisis objetivo. Por defecto, el análisis completado más reciente.
Un análisis recurrente por sitio, con informe por correo al terminar. Disponible en los planes Pro y Agency; en los planes inferiores estos endpoints devuelven 402 quota_exceeded con una sugerencia de mejora de plan.
POST/v1/sites/{site_id}/schedule
Crea o actualiza la programación del sitio (upsert: una por sitio). Requiere el ámbito write.
PARÁMETROTIPODESCRIPCIÓN
site_idpath · uuidobligatorioIdentificador del sitio.
freqbody · stringobligatorio«weekly» o «monthly».
daybody · integerobligatorioSemanal: 0–6, con lunes = 0. Mensual: 1–28.
timebody · stringobligatorio«HH:MM» en formato de 24 horas, UTC.
recipientsbody · string[]obligatorioHasta 10 direcciones de correo que reciben el informe.
Claves a nivel de espacio de trabajo para el acceso programático, con el prefijo gr_ y almacenadas con hash. La clave en texto plano solo se devuelve una vez, en la respuesta de creación: guárdala en un gestor de secretos. Ámbitos: read (siempre incluido) cubre todos los endpoints GET; write es necesario para cualquier operación que modifique el estado.
GET/v1/api-keys
Lista las claves del espacio de trabajo. Los secretos nunca se devuelven después de la creación.
Revoca una clave. Deja de funcionar de inmediato. Devuelve 204 No Content.
PARÁMETROTIPODESCRIPCIÓN
key_idpath · uuidobligatorioIdentificador de la clave.
Límites de uso y errores
Dos token buckets protegen la API: uno por IP de cliente (se aplica antes de la autenticación) y otro por espacio de trabajo (se aplica después). Cuando alcanzas un límite, la respuesta es 429 con una cabecera Retry-After que indica cuántos segundos esperar.
Los errores usan el formato application/problem+json : { type, title, status, detail, code }. Los errores de validación de la petición (422) devuelven el array estándar detail que señala los campos erróneos.
402 · problem+json
{
"type": "about:blank",
"title": "Quota Exceeded",
"status": 402,
"detail": "monthly scan quota reached (6/6): upgrade your plan or wait for the next period",
"code": "quota_exceeded"
}
ESTADOCÓDIGOCUÁNDO
401unauthorizedCredenciales ausentes o no válidas (X-Api-Key o JWT Bearer).
402quota_exceededSe ha alcanzado la cuota del plan o la función requiere un plan superior. Mejora tu plan o espera al siguiente periodo.
403forbiddenLos ámbitos de la clave no permiten esta llamada (p. ej., se requiere write).
404not_foundEl recurso no existe en tu espacio de trabajo: nunca ves datos de otros tenants.
422validation_errorCuerpo o parámetros mal formados; la respuesta lista los campos erróneos.
429rate_limitedDemasiadas peticiones: respeta la cabecera Retry-After (segundos).
503service_unavailableUna dependencia externa no está disponible. Inténtalo más tarde.