API v1

API para desarrolladores

Integra el análisis de accesibilidad (WCAG 2.2 AA · EN 301 549 · Ley 11/2023) en tu CI/CD, tus scripts y tus paneles. Una petición, una respuesta JSON con veredicto, puntuación y barreras.

Autenticación

Todas las peticiones requieren una API key en la cabecera Authorization (o X-Api-Key). Las claves empiezan por rk_ y se gestionan por cliente. Solicita tu clave (incluida en los planes Pro y Agencia).

Authorization: Bearer rk_tu_clave

Límite de uso: 30 peticiones/hora por clave. Nunca expongas la clave en el navegador ni en repositorios públicos.

Escanear un sitio

POSThttps://www.rampascanner.com/api/v1/scan

Analiza hasta 10 páginas del sitio en móvil y escritorio y devuelve el veredicto de accesibilidad. Además de las reglas de axe-core, el motor mide el contraste real sobre degradados y prueba teclado, reflow al 400 %, orden de lectura, estados ARIA, idioma por fragmentos y autoplay.

Parámetros (cuerpo JSON)

CampoTipoPor defectoDescripción
url requeridostring—URL pública (http/https) a analizar.
maxPagesnúmero3Páginas a rastrear (1–10).
thresholdnúmero90Puntuación mínima para passed cuando failOn = score (0–100).
failOnstringscorescore · critical (falla si hay críticas) · serious (falla si hay críticas o graves) · new (falla solo si aparecen barreras que no estaban en el último análisis de esa URL: ideal para webs con deuda que no deben empeorar; la respuesta añade newIssues y fixedIssues).
formatstringjsonjson · sarif (SARIF 2.1.0, para GitHub code scanning y Azure DevOps) · junit (JUnit XML, para cualquier CI). Con sarif o junit, el veredicto va en las cabeceras X-Rampa-Passed y X-Rampa-Score.

Ejemplos

Línea de comandos (CLI) · lo más rápido

# Sin instalar nada (Node ≥ 18). Consigue tu API key en el panel.
export RAMPASCANNER_API_KEY=rk_tu_clave

# Falla (exit 1) si la nota baja de 85 o hay barreras graves:
npx rampascanner https://tu-sitio.com --threshold 85 --fail-on serious

# Salida JSON para tratarla en scripts:
npx rampascanner https://tu-sitio.com --json

El paquete rampascanner corre con npx (Node ≥ 18), sin instalar nada. Sale con código 0 si pasa y 1 si falla — ideal para romper un pipeline de CI.

cURL

curl -X POST https://www.rampascanner.com/api/v1/scan \
  -H "Authorization: Bearer rk_tu_clave" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://tu-sitio.com", "maxPages": 3, "failOn": "serious" }'

Node.js

const res = await fetch("https://www.rampascanner.com/api/v1/scan", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.RAMPA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "https://tu-sitio.com", failOn: "serious" }),
});
const data = await res.json();
if (!data.passed) {
  console.error(`Accesibilidad: ${data.score}/100 — ${data.totals.critical} críticas`);
  process.exit(1);
}

GitHub Actions (con el CLI)

# .github/workflows/a11y.yml — bloquea el merge si baja la accesibilidad
name: Accesibilidad
on: [pull_request]
jobs:
  a11y:
    runs-on: ubuntu-latest
    steps:
      - run: npx rampascanner https://tu-sitio.com --fail-on serious
        env:
          RAMPASCANNER_API_KEY: ${{ secrets.RAMPASCANNER_API_KEY }}

Respuesta 200 OK

{
  "url": "https://tu-sitio.com",
  "passed": false,
  "reason": "ok",
  "score": 78,
  "grade": "C",
  "threshold": 90,
  "failOn": "serious",
  "pagesScanned": 3,
  "pagesAudited": 3,
  "totals": { "issues": 9, "nodes": 40, "critical": 1, "serious": 2, "moderate": 4, "minor": 2 },
  "topIssues": [
    { "id": "image-alt", "help": "Las imágenes deben tener texto alternativo",
      "impact": "critical", "nodes": 6, "wcag": ["wcag2a", "wcag111"] }
  ],
  "scannedAt": "2026-08-21T10:00:00.000Z"
}

passed resume el veredicto según failOn. totals desglosa las barreras por gravedad, topIssues lista las 10 principales con su criterio WCAG y su prioridad (1 arréglalo ya · 2 pronto · 3 después) y failedCriteria dice qué criterios WCAG 2.2 A/AA se incumplen. notices avisa de lo que conviene saber para leer el resultado (la web pide iniciar sesión, se analizó por http://…) y engine identifica el motor y su conjunto de reglas: si dos escaneos difieren con la misma huella de reglas, cambió la web.

El catálogo de reglas está en GET /api/v1/rules (sin API key): cada regla con su criterio WCAG, su explicación y cómo se arregla.

Códigos de estado

CódigoSignificado
200Análisis completado (revisa passed).
400URL ausente, malformada o privada/no pública.
401Falta la API key o es inválida/revocada.
422No se pudo auditar ninguna página (web caída, bloqueada o muy lenta).
429Límite de peticiones alcanzado (30/hora).
502 / 504El servicio de análisis no respondió a tiempo.

Auditar un recorrido (embudo)

POSThttps://www.rampascanner.com/api/v1/flow

Audita la accesibilidad a lo largo de un recorrido (carrito→checkout, login, contacto…), no solo páginas sueltas: conduce el navegador paso a paso y audita cada punto de control. Ideal para un gate de CI/CD sobre tu embudo de conversión. Misma autenticación y límite (30/hora por clave).

Parámetros (cuerpo JSON)

CampoTipoDescripción
templatestringcheckout · login · contacto (embudo listo; requiere url).
urlstringURL de inicio (http/https público). Solo con template.
stepsarrayPasos explícitos (alternativa a template): goto, checkpoint, click, fill, press, waitFor, wait. Empieza por goto e incluye algún checkpoint.
failOnstringscore · critical · serious (falla si CUALQUIER checkpoint tiene esa gravedad).

Ejemplos (cURL)

# Embudo listo (checkout / login / contacto):
curl -X POST https://www.rampascanner.com/api/v1/flow \
  -H "Authorization: Bearer rk_tu_clave" -H "Content-Type: application/json" \
  -d '{ "template": "checkout", "url": "https://tu-sitio.com", "failOn": "serious" }'

# O pasos explícitos (empieza por goto, incluye algún checkpoint):
curl -X POST https://www.rampascanner.com/api/v1/flow \
  -H "Authorization: Bearer rk_tu_clave" -H "Content-Type: application/json" \
  -d '{ "steps": [
        { "action": "goto", "url": "https://tu-sitio.com" },
        { "action": "checkpoint", "label": "Inicio" },
        { "action": "click", "text": "Añadir al carrito" },
        { "action": "checkpoint", "label": "Carrito" }
      ], "failOn": "serious" }'

Respuesta 200 OK

{
  "url": "https://tu-sitio.com",
  "passed": false,
  "reason": "ok",
  "score": 82,
  "grade": "B",
  "failOn": "serious",
  "checkpoints": 2,
  "incomplete": null,
  "steps": [
    { "label": "Inicio", "url": "https://tu-sitio.com/", "score": 95,
      "totals": { "issues": 1, "critical": 0, "serious": 0, "moderate": 1, "minor": 0 },
      "topIssues": [ /* … */ ] },
    { "label": "Carrito", "url": "https://tu-sitio.com/cart", "score": 68,
      "totals": { "issues": 4, "critical": 0, "serious": 2, "moderate": 1, "minor": 1 },
      "topIssues": [ { "id": "label", "impact": "serious", "nodes": 3, "wcag": ["wcag2a","wcag412"] } ] }
  ],
  "scannedAt": "2026-08-24T10:00:00.000Z"
}

passed es el veredicto según failOn. score es la nota media del recorrido; cada elemento de steps trae la nota, totals y las barreras de ese punto de control. incomplete avisa si el recorrido se detuvo antes de tiempo (un paso falló). Un 422 significa que no se auditó ningún checkpoint.

Obtener resultados por slug

GEThttps://www.rampascanner.com/api/v1/report/{slug}

Recupera los resultados de un informe ya generado (el mismo que es público en /r/{slug}). Sin parámetros devuelve el informe en JSON; con ?doc= devuelve un documento enterprise en Markdown: vpat, en301549, audit o patch (este último acepta &fw=jsx).

# Informe completo en JSON
curl https://www.rampascanner.com/api/v1/report/TU_SLUG \
  -H "Accept: application/json"

# Un documento enterprise en Markdown (vpat · en301549 · audit · patch)
curl "https://www.rampascanner.com/api/v1/report/TU_SLUG?doc=vpat"
curl "https://www.rampascanner.com/api/v1/report/TU_SLUG?doc=patch&fw=jsx"

OpenAPI

Especificación OpenAPI 3.1 lista para importar en Postman, Insomnia o un generador de clientes:

GEThttps://www.rampascanner.com/api/v1/openapi.json

¿Listo para integrar?

Consigue tu API key y empieza a bloquear regresiones de accesibilidad en cada Pull Request.

Solicitar API key
API para desarrolladores — RampaScanner