Agentes IA

Ver en Markdown

Cómo usan una zona los rastreadores y agentes IA, por categoría, bot y operador, más trampas, señales, MCP Shield y el catálogo.

En esta página

Informes del Control de rastreo IA. El borde clasifica el tráfico automatizado (entrenamiento de IA, búsqueda IA, agentes IA a petición de usuarios, buscadores, automatización sin verificar, suplantaciones) y verifica los bots con el catálogo. Todas las rutas admiten cualquier rol, también tokens de zona. El comportamiento se configura en el bloque ai_agents de los ajustes de borde. Consulta AI Crawl Control.

OperaciónRuta
Ver el informe de agentes IAGET /v1/orgs/{org}/zones/{zone}/ai-agents/report
Ver la vista general del Control de rastreo IAGET /v1/orgs/{org}/zones/{zone}/ai-agents/overview
Ver el resumen de agentes IAGET /v1/orgs/{org}/zones/{zone}/ai-agents/summary
Ver la serie temporal de agentes IAGET /v1/orgs/{org}/zones/{zone}/ai-agents/timeseries
Listar los bots vistosGET /v1/orgs/{org}/zones/{zone}/ai-agents/agents
Ver las principales fuentes automatizadasGET /v1/orgs/{org}/zones/{zone}/ai-agents/top
Listar eventos IA notablesGET /v1/orgs/{org}/zones/{zone}/ai-agents/events
Ver las métricas de agentes IAGET /v1/orgs/{org}/zones/{zone}/ai-agents/metrics
Listar rastreadoresGET /v1/orgs/{org}/zones/{zone}/ai-agents/crawlers
Listar quién suplanta a un botGET /v1/orgs/{org}/zones/{zone}/ai-agents/spoofers
Ver la optimización para IAGET /v1/orgs/{org}/zones/{zone}/ai-agents/optimization
Ver las señales de robots.txtGET /v1/orgs/{org}/zones/{zone}/ai-agents/signals
Ver la actividad de la trampaGET /v1/orgs/{org}/zones/{zone}/ai-agents/traps
Listar ráfagas de agentesGET /v1/orgs/{org}/zones/{zone}/ai-agents/bursts
Ver la actividad de los endpoints IAGET /v1/orgs/{org}/zones/{zone}/ai-agents/endpoints
Ver la actividad de MCP ShieldGET /v1/orgs/{org}/zones/{zone}/ai-agents/mcp
Ver el catálogo de bots IAGET /v1/orgs/{org}/ai-agents/catalog

Ver el informe de agentes IA

GET /v1/orgs/{org}/zones/{zone}/ai-agents/report

Devuelve en una llamada el resumen, la serie temporal, los bots, las principales fuentes y los ajustes ai_agents de la zona (o de un nombre con host).

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.

Respuesta

CampoTipoDescripción
summaryAiSummary
timeseriesAiTimeseries
agentsAiAgents
topAiTop
settingsZoneEdgeAIAgents
catalog_versionstring

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/report" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "summary": {
    "since": "2026-10-27T09:30:00Z",
    "until": "2026-10-27T09:30:00Z",
    "prev_since": "2026-10-27T09:30:00Z",
    "prev_until": "2026-10-27T09:30:00Z",
    "requests": 128,
    "prev_requests": 128,
    "categories": [
      {
        "category": "ai_training",
        "requests": 128,
        "prev_requests": 128
      }
    ],
    "decisions": [
      {
        "decision": "example",
        "enforced": 0,
        "would": 0
      }
    ],
    "trap": {
      "injected": 0,
      "hits": 128,
      "prev_injected": 0,
      "prev_hits": 128
    }
  },
  "timeseries": {
    "step": 0,
    "points": [
      {}
    ]
  },
  "agents": {
    "rows": [
      {
        "bot_id": "948186e3-4508-48d6-a001-c683a3ec9626",
        "name": "example.com",
        "operator": "OpenAI",
        "category": "ai_training",
        "requests": 128,
        "verified": 0,
        "unverified": 0,
        "spoofed": 0,
        "methods": [
          "POST"
        ],
        "last_seen": "2026-10-27T09:30:00Z"
      }
    ]
  },
  "top": {
    "ip": [
      {
        "value": "4f1c2e9a7b3d",
        "country_code": "ES",
        "asn": 0,
        "category": "ai_training",
        "requests": 128
      }
    ],
    "fingerprint": [
      {
        "value": "4f1c2e9a7b3d",
        "country_code": "ES",
        "asn": 0,
        "category": "ai_training",
        "requests": 128
      }
    ],
    "asn": [
      {
        "value": "4f1c2e9a7b3d",
        "country_code": "ES",
        "asn": 0,
        "category": "ai_training",
        "requests": 128
      }
    ]
  },
  "settings": {
    "enabled": false,
    "mode": "log",
    "spoofed_challenge": "log",
    "template": "search_ok_block_training",
    "policy": {
      "ai_training": "allow",
      "ai_search": "allow",
      "ai_user_agent": "allow",
      "search_engine": "allow",
      "unverified_automation": "allow",
      "spoofed": "allow",
      "unverified_bot": "allow",
      "trap_hit": "allow",
      "secret_probe": "allow",
      "robots_violation": "allow",
      "agent_burst": "allow"
    },
    "bot_overrides": [
      {
        "bot_id": "948186e3-4508-48d6-a001-c683a3ec9626",
        "action": "block"
      }
    ],
    "trap": {
      "enabled": false
    },
    "tarpit": {
      "enabled": false
    },
    "robots": {
      "enabled": false,
      "content_signals": {
        "search": "yes",
        "ai_input": "yes",
        "ai_train": "yes"
      }
    },
    "markdown": {
      "enabled": false
    },
    "block_response": {
      "status": 403,
      "message": ""
    },
    "endpoints": [
      {
        "path_prefix": "/api/",
        "methods": [
          "POST"
        ],
        "max_body_bytes": 0,
        "rpm_per_ip": 0,
        "rpm_per_session": 0,
        "session_header": "X-Session-Id",
        "session_cookie": "session",
        "injection_action": "log",
        "limit_action": "log",
        "kind": "mcp",
        "mcp": {}
      }
    ]
  },
  "catalog_version": "example"
}

Ver la vista general del Control de rastreo IA

GET /v1/orgs/{org}/zones/{zone}/ai-agents/overview

Devuelve la vista general del Control de rastreo IA del panel, datos destacados, tarjetas con su serie y operadores.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.

Respuesta

CampoTipoDescripción
sincestring (date-time)
untilstring (date-time)
stepinteger
tsarray de string (date-time)Fecha de la petición.
factsobject
facts.requestsintegerPeticiones.
facts.prev_requestsinteger
facts.status_4xxinteger
facts.top_operator_htmlobject o null
facts.top_pathobject o null
facts.top_crawlerobject o null
cardsobject
cards.totalAiCard
cards.allowedAiCard
cards.failedAiCard
operatorsarray de object
operators[].operatorstringEmpresa que opera el bot.
operators[].crawlersarray de object
operators[].allowedinteger
operators[].prev_allowedinteger

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/overview" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "since": "2026-10-27T09:30:00Z",
  "until": "2026-10-27T09:30:00Z",
  "step": 0,
  "ts": [
    "2026-10-27T09:30:00Z"
  ],
  "facts": {
    "requests": 128,
    "prev_requests": 128,
    "status_4xx": 0,
    "top_operator_html": {},
    "top_path": {},
    "top_crawler": {}
  },
  "cards": {
    "total": {
      "value": 0,
      "prev": 0,
      "series": [
        0
      ]
    },
    "allowed": {
      "value": 0,
      "prev": 0,
      "series": [
        0
      ]
    },
    "failed": {
      "value": 0,
      "prev": 0,
      "series": [
        0
      ]
    }
  },
  "operators": [
    {
      "operator": "OpenAI",
      "crawlers": [
        {}
      ],
      "allowed": 0,
      "prev_allowed": 0
    }
  ]
}

Ver el resumen de agentes IA

GET /v1/orgs/{org}/zones/{zone}/ai-agents/summary

Cuenta las peticiones de la zona por categoría de tráfico y decisión, más la trampa, frente al periodo anterior.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.

Respuesta

CampoTipoDescripción
sincestring (date-time)
untilstring (date-time)
prev_sincestring (date-time)
prev_untilstring (date-time)
requestsintegerPeticiones.
prev_requestsinteger
categoriesarray de AiCount
decisionsarray de object
decisions[].decisionstring
decisions[].enforcedinteger
decisions[].wouldintegerLo que se aplicaría en modo enforce.
trapAiTrapSummary

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/summary" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "since": "2026-10-27T09:30:00Z",
  "until": "2026-10-27T09:30:00Z",
  "prev_since": "2026-10-27T09:30:00Z",
  "prev_until": "2026-10-27T09:30:00Z",
  "requests": 128,
  "prev_requests": 128,
  "categories": [
    {
      "category": "ai_training",
      "requests": 128,
      "prev_requests": 128
    }
  ],
  "decisions": [
    {
      "decision": "example",
      "enforced": 0,
      "would": 0
    }
  ],
  "trap": {
    "injected": 0,
    "hits": 128,
    "prev_injected": 0,
    "prev_hits": 128
  }
}

Ver la serie temporal de agentes IA

GET /v1/orgs/{org}/zones/{zone}/ai-agents/timeseries

Devuelve las peticiones por categoría a lo largo del tiempo.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.
stepconsultaintegerNoSegundos por punto (0 = automático). Mínimo 0.

Respuesta

CampoTipoDescripción
stepinteger
pointsarray de object

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/timeseries" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "step": 0,
  "points": [
    {}
  ]
}

Listar los bots vistos

GET /v1/orgs/{org}/zones/{zone}/ai-agents/agents

Lista los bots vistos en la zona, verificados, sin verificar y suplantados.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.

Respuesta

CampoTipoDescripción
rowsarray de AiAgentRow

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/agents" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "rows": [
    {
      "bot_id": "948186e3-4508-48d6-a001-c683a3ec9626",
      "name": "example.com",
      "operator": "OpenAI",
      "category": "ai_training",
      "requests": 128,
      "verified": 0,
      "unverified": 0,
      "spoofed": 0,
      "methods": [
        "POST"
      ],
      "last_seen": "2026-10-27T09:30:00Z"
    }
  ]
}

Ver las principales fuentes automatizadas

GET /v1/orgs/{org}/zones/{zone}/ai-agents/top

Devuelve las principales IP, huellas TLS y ASN del tráfico automatizado.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.
limitconsultaintegerNoPor defecto 10. Mínimo 0.

Respuesta

CampoTipoDescripción
iparray de AiTopItem
fingerprintarray de AiTopItem
asnarray de AiTopItemNúmero de sistema autónomo.

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/top" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "ip": [
    {
      "value": "4f1c2e9a7b3d",
      "country_code": "ES",
      "asn": 0,
      "category": "ai_training",
      "requests": 128
    }
  ],
  "fingerprint": [
    {
      "value": "4f1c2e9a7b3d",
      "country_code": "ES",
      "asn": 0,
      "category": "ai_training",
      "requests": 128
    }
  ],
  "asn": [
    {
      "value": "4f1c2e9a7b3d",
      "country_code": "ES",
      "asn": 0,
      "category": "ai_training",
      "requests": 128
    }
  ]
}

Listar eventos IA notables

GET /v1/orgs/{org}/zones/{zone}/ai-agents/events

Lista los eventos notables (suplantaciones, caídas en la trampa, inyecciones, detecciones de MCP Shield…), del más reciente al más antiguo.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.
kindconsultastringNoTipos separados por comas (spoofed, trap_hit, injection, cost_limit, automation, wba_invalid, tarpit, blocked, secret_probe, robots_violation, agent_burst; MCP Shield: mcp_blocked_method, mcp_blocked_tool, mcp_injection_request, mcp_injection_response, mcp_dlp, mcp_rate_limited, mcp_invalid).
cursorconsultastringNoCursor de la página siguiente (next_cursor de la respuesta anterior).
limitconsultaintegerNoPor defecto 50, máximo 500. Mínimo 0.

Respuesta

CampoTipoDescripción
itemsarray de AiEvent
next_cursorstring

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/events?kind=spoofed,trap_hit" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "items": [
    {
      "event_id": "57c7c826-7db4-42c8-af1d-3ecdfe37182f",
      "ts": "2026-10-27T09:30:00Z",
      "site_id": 0,
      "node_id": "edge-node-1",
      "host": "www.example.com",
      "kind": "spoofed",
      "category": "ai_training",
      "bot_id": "948186e3-4508-48d6-a001-c683a3ec9626",
      "verified": false,
      "verify": "",
      "decision": "example",
      "enforced": false,
      "ip": "203.0.113.10",
      "country_code": "ES",
      "asn": 0,
      "user_agent": "Mozilla/5.0",
      "tls_fingerprint": "",
      "method": "GET",
      "path": "/checkout",
      "status": 0,
      "signals": [
        "example"
      ],
      "detections": [
        {}
      ],
      "token_age_ms": 0,
      "mcp": {
        "method": "GET",
        "tool": "search_docs",
        "token_fp": "example",
        "blocked": false
      }
    }
  ],
  "next_cursor": ""
}

Ver las métricas de agentes IA

GET /v1/orgs/{org}/zones/{zone}/ai-agents/metrics

Devuelve métricas por grupo (rastreador, categoría, operador, nombre o tipo de contenido) con clases de estado y páginas más pedidas. format=csv descarga CSV en lugar de JSON.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.
statusconsultastringNoSolo respuestas con esa clase de estado. Uno de all, 1xx, 2xx, 3xx, 4xx, 5xx.
group_byconsultastringNoDimensión por la que agrupar. Uno de crawler, category, operator, host, content_type.
offsetconsultaintegerNoFilas que saltar (paginación). Mínimo 0.
limitconsultaintegerNoPor defecto 10, máximo 100. Mínimo 0.
formatconsultastringNocsv: descarga CSV en lugar de JSON. Uno de csv.

Respuesta

CampoTipoDescripción
stepinteger
tsarray de string (date-time)Fecha de la petición.
statusstring
group_bystring
cardsobject
requestsarray de AiSeriesPeticiones.
bytesarray de AiSeries
status_classesarray de object
content_typesarray de object
top_pathsAiPathPage

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/metrics?group_by=operator" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "step": 0,
  "ts": [
    "2026-10-27T09:30:00Z"
  ],
  "status": "example",
  "group_by": "example",
  "cards": {},
  "requests": [
    {
      "key": "/pricing",
      "label": "AI training",
      "total": 128,
      "series": [
        0
      ]
    }
  ],
  "bytes": [
    {
      "key": "/pricing",
      "label": "AI training",
      "total": 128,
      "series": [
        0
      ]
    }
  ],
  "status_classes": [
    {}
  ],
  "content_types": [
    {}
  ],
  "top_paths": {
    "total": 128,
    "items": [
      {
        "host": "www.example.com",
        "path": "/checkout",
        "bytes": 0,
        "requests": 128,
        "secret_probe": false
      }
    ]
  }
}

Listar rastreadores

GET /v1/orgs/{org}/zones/{zone}/ai-agents/crawlers

Lista los rastreadores del catálogo con sus peticiones, peticiones verificadas y suplantadas, ráfagas y acción efectiva.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.
inactiveconsultastringNo1: incluye los bots del catálogo sin tráfico. Uno de 1.

Respuesta

CampoTipoDescripción
stepinteger
tsarray de string (date-time)Fecha de la petición.
rowsarray de object
rows[].bot_idstring
rows[].namestringNombre.
rows[].operatorstringEmpresa que opera el bot.
rows[].categorystring
rows[].methodsarray de string
rows[].bytesinteger
rows[].requestsintegerPeticiones.
rows[].allowedinteger
rows[].unsuccessfulinteger
rows[].seriesarray de integer
rows[].verifiedinteger
rows[].spoofedinteger
rows[].unverifiedinteger
rows[].burstsintegerEventos agent_burst del bot.
rows[].actionstring
rows[].action_sourcestringoverride, category o unverified_bot.

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/crawlers" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "step": 0,
  "ts": [
    "2026-10-27T09:30:00Z"
  ],
  "rows": [
    {
      "bot_id": "948186e3-4508-48d6-a001-c683a3ec9626",
      "name": "example.com",
      "operator": "OpenAI",
      "category": "ai_training",
      "methods": [
        "POST"
      ],
      "bytes": 0,
      "requests": 128,
      "allowed": 0,
      "unsuccessful": 0,
      "series": [
        0
      ],
      "verified": 0,
      "spoofed": 0,
      "unverified": 0,
      "bursts": 0,
      "action": "block",
      "action_source": "example"
    }
  ]
}

Listar quién suplanta a un bot

GET /v1/orgs/{org}/zones/{zone}/ai-agents/spoofers

Lista las IP y ASN que dijeron ser un bot sin pasar su verificación. bot es obligatorio.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.

Respuesta

CampoTipoDescripción
bot_idstring
ipsarray de object
ips[].valuestring
ips[].country_codestringCódigo de país ISO 3166-1 alfa-2.
ips[].asnintegerNúmero de sistema autónomo.
ips[].requestsintegerPeticiones.
ips[].last_seenstring (date-time)
asnsarray de object
asns[].asnintegerNúmero de sistema autónomo.
asns[].country_codestringCódigo de país ISO 3166-1 alfa-2.
asns[].requestsintegerPeticiones.

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/spoofers?bot=gptbot" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "bot_id": "948186e3-4508-48d6-a001-c683a3ec9626",
  "ips": [
    {
      "value": "4f1c2e9a7b3d",
      "country_code": "ES",
      "asn": 0,
      "requests": 128,
      "last_seen": "2026-10-27T09:30:00Z"
    }
  ],
  "asns": [
    {
      "asn": 0,
      "country_code": "ES",
      "requests": 128
    }
  ]
}

Ver la optimización para IA

GET /v1/orgs/{org}/zones/{zone}/ai-agents/optimization

Devuelve las páginas que recupera la IA y la demanda de páginas que no existen. format=csv descarga CSV en lugar de JSON.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.
offsetconsultaintegerNoFilas que saltar (paginación). Mínimo 0.
limitconsultaintegerNoPor defecto 10, máximo 100. Mínimo 0.
formatconsultastringNocsv: descarga CSV en lugar de JSON. Uno de csv.

Respuesta

CampoTipoDescripción
cardsobject
cards.retrievalsobject
cards.demandobject
top_pagesAiPathPage
demandAiPathPage
operatorsarray de object

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/optimization" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "cards": {
    "retrievals": {
      "value": 0,
      "prev": 0
    },
    "demand": {
      "value": 0,
      "prev": 0
    }
  },
  "top_pages": {
    "total": 128,
    "items": [
      {
        "host": "www.example.com",
        "path": "/checkout",
        "bytes": 0,
        "requests": 128,
        "secret_probe": false
      }
    ]
  },
  "demand": {
    "total": 128,
    "items": [
      {
        "host": "www.example.com",
        "path": "/checkout",
        "bytes": 0,
        "requests": 128,
        "secret_probe": false
      }
    ]
  },
  "operators": [
    {}
  ]
}

Ver las señales de robots.txt

GET /v1/orgs/{org}/zones/{zone}/ai-agents/signals

Devuelve las peticiones de robots.txt, los valores de Content-Signal servidos y los incumplimientos de sus reglas.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.

Respuesta

CampoTipoDescripción
robotsarray de object
robots[].hoststring
robots[].requestsintegerPeticiones.
robots[].okinteger
robots[].failedinteger
robots[].last_statusinteger
robots[].content_signalsboolean
violationsarray de object
violations[].bot_idstring
violations[].namestringNombre.
violations[].operatorstringEmpresa que opera el bot.
violations[].categorystring
violations[].hoststring
violations[].pathstring
violations[].requestsintegerPeticiones.

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/signals" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "robots": [
    {
      "host": "www.example.com",
      "requests": 128,
      "ok": 0,
      "failed": 0,
      "last_status": 0,
      "content_signals": false
    }
  ],
  "violations": [
    {
      "bot_id": "948186e3-4508-48d6-a001-c683a3ec9626",
      "name": "example.com",
      "operator": "OpenAI",
      "category": "ai_training",
      "host": "www.example.com",
      "path": "/checkout",
      "requests": 128
    }
  ]
}

Ver la actividad de la trampa

GET /v1/orgs/{org}/zones/{zone}/ai-agents/traps

Devuelve las inserciones de la trampa, quién la siguió y las ráfagas de agentes.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.

Respuesta

CampoTipoDescripción
injectedinteger
hitsinteger
prev_injectedinteger
prev_hitsinteger
burstsinteger
prev_burstsinteger
stepinteger
tsarray de string (date-time)Fecha de la petición.
seriesobject
series.injectedarray de integer
series.hitsarray de integer
hittersarray de object
hitters[].ipstring
hitters[].country_codestringCódigo de país ISO 3166-1 alfa-2.
hitters[].asnintegerNúmero de sistema autónomo.
hitters[].tls_fingerprintstringHuella TLS del cliente.
hitters[].bot_idstring
hitters[].hitsinteger
hitters[].last_seenstring (date-time)

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/traps" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "injected": 0,
  "hits": 128,
  "prev_injected": 0,
  "prev_hits": 128,
  "bursts": 0,
  "prev_bursts": 0,
  "step": 0,
  "ts": [
    "2026-10-27T09:30:00Z"
  ],
  "series": {
    "injected": [
      0
    ],
    "hits": [
      0
    ]
  },
  "hitters": [
    {
      "ip": "203.0.113.10",
      "country_code": "ES",
      "asn": 0,
      "tls_fingerprint": "",
      "bot_id": "948186e3-4508-48d6-a001-c683a3ec9626",
      "hits": 128,
      "last_seen": "2026-10-27T09:30:00Z"
    }
  ]
}

Listar ráfagas de agentes

GET /v1/orgs/{org}/zones/{zone}/ai-agents/bursts

Lista las ráfagas compuestas de agentes en modo código (agent_burst), los clientes con su explicación, los bots y las detecciones.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.

Respuesta

CampoTipoDescripción
burstsinteger
prev_burstsinteger
clientsarray de objectComo mucho 50 elementos.
clients[].ipstring
clients[].country_codestringCódigo de país ISO 3166-1 alfa-2.
clients[].asnintegerNúmero de sistema autónomo.
clients[].tls_fingerprintstringHuella TLS del cliente.
clients[].bot_idstring
clients[].burstsinteger
clients[].last_seenstring (date-time)
clients[].explanationsarray de stringEtiquetas de detección (distinct_endpoints=23/10s, id_walk=…, pagination=…). Como mucho 3 elementos.
crawlersarray de object
crawlers[].bot_idstring
crawlers[].namestringNombre.
crawlers[].operatorstringEmpresa que opera el bot.
crawlers[].burstsinteger
detectionsarray de object
detections[].idstringId.
detections[].labelstring
detections[].countinteger

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/bursts" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "bursts": 0,
  "prev_bursts": 0,
  "clients": [
    {
      "ip": "203.0.113.10",
      "country_code": "ES",
      "asn": 0,
      "tls_fingerprint": "",
      "bot_id": "948186e3-4508-48d6-a001-c683a3ec9626",
      "bursts": 0,
      "last_seen": "2026-10-27T09:30:00Z",
      "explanations": []
    }
  ],
  "crawlers": [
    {
      "bot_id": "948186e3-4508-48d6-a001-c683a3ec9626",
      "name": "example.com",
      "operator": "OpenAI",
      "bursts": 0
    }
  ],
  "detections": [
    {
      "id": "example",
      "label": "AI training",
      "count": 128
    }
  ]
}

Ver la actividad de los endpoints IA

GET /v1/orgs/{org}/zones/{zone}/ai-agents/endpoints

Devuelve la actividad de los endpoints IA del sitio, inyecciones, límites y bloqueos.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.
categoryconsultastringNoSolo esa categoría de tráfico. Uno de ai_training, ai_search, ai_user_agent, search_engine, unverified_automation, spoofed, human.
botconsultastringNoId de un bot del catálogo (gptbot). Como mucho 253 caracteres.
operatorconsultastringNoOperador (OpenAI). Como mucho 64 caracteres.

Respuesta

CampoTipoDescripción
rowsarray de object
rows[].path_prefixstring
rows[].requestsintegerPeticiones.
rows[].injectionsinteger
rows[].limitedinteger
rows[].blockedinteger
rows[].would_blockinteger
detectionsarray de object
detections[].idstringId.
detections[].labelstring
detections[].countinteger

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/endpoints" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "rows": [
    {
      "path_prefix": "/api/",
      "requests": 128,
      "injections": 0,
      "limited": 0,
      "blocked": 0,
      "would_block": 0
    }
  ],
  "detections": [
    {
      "id": "example",
      "label": "AI training",
      "count": 128
    }
  ]
}

Ver la actividad de MCP Shield

GET /v1/orgs/{org}/zones/{zone}/ai-agents/mcp

Devuelve la actividad de MCP Shield en los endpoints MCP del sitio, mensajes JSON-RPC, bloqueos, detecciones y tools. Consulta MCP Shield.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).
zonerutastring (uuid)SíId de la zona (consulta Listar zonas).
rangeconsultastringNoPeriodo hasta ahora: 24h (por defecto), 7d o 30d; excluyente con since. Uno de 24h, 7d, 30d.
sinceconsultastring (date-time)NoRFC 3339.
untilconsultastring (date-time)NoRFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
hostconsultastringNoSolo ese nombre. Como mucho 253 caracteres.

Respuesta

CampoTipoDescripción
endpointsarray de object
endpoints[].path_prefixstring
endpoints[].requestsintegerPeticiones.
endpoints[].messagesinteger
endpoints[].blockedinteger
endpoints[].detectionsinteger
endpoints[].uninspectedinteger
toolsarray de object
tools[].path_prefixstring
tools[].toolstring
tools[].callsinteger
tools[].blockedinteger
tools[].detectionsinteger
kindsarray de object
kinds[].kindstring
kinds[].countinteger
detectionsarray de object
detections[].idstringId.
detections[].labelstring
detections[].countinteger

Errores

EstadoDescripción
400Petición mal formada (bad_request).
404No existe o el token no lo ve (not_found).
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/ai-agents/mcp" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "endpoints": [
    {
      "path_prefix": "/api/",
      "requests": 128,
      "messages": 0,
      "blocked": 0,
      "detections": 0,
      "uninspected": 0
    }
  ],
  "tools": [
    {
      "path_prefix": "/api/",
      "tool": "search_docs",
      "calls": 0,
      "blocked": 0,
      "detections": 0
    }
  ],
  "kinds": [
    {
      "kind": "example",
      "count": 128
    }
  ],
  "detections": [
    {
      "id": "example",
      "label": "AI training",
      "count": 128
    }
  ]
}

Ver el catálogo de bots IA

GET /v1/orgs/{org}/ai-agents/catalog

Devuelve el catálogo de bots IA con el que verifica el borde, el operador, la categoría y los métodos de verificación de cada bot (rangos de IP publicados, DNS inverso, firmas Web Bot Auth), y el estado de cada fuente oficial. No incluye los rangos ni las claves.

Rol necesario: readonly o superior.

Parámetros

NombreEnTipoObligatorioDescripción
orgrutastring (uuid)SíId de la organización. Cada ruta comprueba que es la del token (si no, 404).

Respuesta

CampoTipoDescripción
versionstringNúmero de versión.
botsarray de object
bots[].idstringId.
bots[].namestringNombre.
bots[].operatorstringEmpresa que opera el bot.
bots[].categorystringUno de ai_training, ai_search, ai_user_agent, search_engine.
bots[].methodsarray de stringElementos: uno de ip, rdns, web_bot_auth.
bots[].uaarray de string
bots[].rdnsarray de string
bots[].cidr_countinteger
bots[].signature_agentsarray de string
sourcesarray de object
sources[].idstringId.
sources[].urlstring
sources[].fetched_atstring (date-time) o null
sources[].okboolean
sources[].errorstring
sources[].itemsinteger
sources[].baselinebooleanSin descarga guardada: se usan los datos incluidos.

Errores

EstadoDescripción
503No disponible ahora (unavailable); reinténtalo más tarde.

Ejemplo

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/ai-agents/catalog" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "version": "example",
  "bots": [
    {
      "id": "example",
      "name": "example.com",
      "operator": "OpenAI",
      "category": "ai_training",
      "methods": [
        "POST"
      ],
      "ua": [
        "example"
      ],
      "rdns": [
        "example"
      ],
      "cidr_count": 128,
      "signature_agents": [
        "example"
      ]
    }
  ],
  "sources": [
    {
      "id": "example",
      "url": "https://www.example.com/",
      "fetched_at": "2026-10-27T09:30:00Z",
      "ok": false,
      "error": "",
      "items": 0,
      "baseline": false
    }
  ]
}

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar