Verifica que un relay devolvió la respuesta oficial
Pega en el verificador de abajo una respuesta de API que incluya una prueba. Comprueba la firma en tu navegador y te dice de qué host upstream oficial vino la respuesta y si el relay la modificó. Tus datos nunca salen de tu computadora.
- Se queda en tu navegador
- Verificador de código abierto
- Gratis, sin registro
Verifica una respuesta en tres pasos
- 1
Activa la verificación en tu clave
En la página API, activa "Verificación oficial" para la clave. Solo las respuestas de Claude Messages y GPT Responses reenviadas sin cambios incluyen una prueba.
- 2
Guarda la respuesta completa
Envía una solicitud en streaming y escribe los bytes de la respuesta en un archivo tal cual con curl -o; debe terminar con event: tee.proof. Para solicitudes sin streaming, agrega el encabezado x-wokey-tee-proof-mode: multipart y guarda toda la respuesta multipart. En Windows, usa curl.exe -o en lugar de la redirección > de PowerShell o de volver a guardar en el Bloc de notas, que cambian los saltos de línea o la codificación.
- 3
Pégala en el verificador
Pega o arrastra la respuesta completa al verificador de abajo e inicia la comprobación. Se ejecuta en tu navegador en esta página y no hace ninguna solicitud de red.
curl -sN https://api.wokey.ai/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":256,"stream":true,"messages":[{"role":"user","content":"Hello"}]}' \
-o captured-responseEl verificador de arriba se publica directamente desde el repositorio de código abierto en GitHub Pages y nunca pasa por los servidores de Wokey, así que Wokey no puede cambiarlo por uno que siempre diga "aprobado". También puedes guardar la página y abrirla sin conexión.
El verificador te pide comprobar PCR0, la medición de la imagen del enclave. Usa el valor publicado en el repositorio de código abierto, que cualquiera puede reproducir desde el código fuente, no un valor que llegue con la respuesta.
Cómo leer el resultado
- Todas las comprobaciones pasan
- La attestation se encadena a la raíz de AWS Nitro, PCR0 coincide con el valor publicado, la firma es válida y los bytes de la respuesta coinciden con el hash firmado. El host upstream que se muestra (por ejemplo api.anthropic.com) es de donde vino la respuesta, y el relay no la modificó.
- Prueba válida, falta el cuerpo de la respuesta
- Solo pegaste el evento tee.proof. La prueba la firmó un enclave real, pero sin el cuerpo no se puede recalcular el hash, así que no demuestra que el contenido que viste no cambió. Pega la respuesta completa.
- PCR0 no coincide
- La attestation es auténtica, pero el enclave no ejecuta la imagen auditada. Trata la respuesta como no probada.
- Falla la firma o el hash
- La prueba o la respuesta se alteraron, o los bytes cambiaron al guardar o copiar (por ejemplo, una conversión de codificación). Vuelve a guardar la respuesta original con curl -o; si sigue fallando, no confíes en ella. Cuando una herramienta de guardado cambió los saltos de línea a CRLF o guardó el archivo como UTF-16, el verificador lo convierte de vuelta y lo indica; el hash firmado sigue decidiendo el resultado.
- Sin tee.proof
- La respuesta no está probada: puede que la clave no tenga activada la verificación, que la solicitud pasara por una conversión de formato o que el enclave no estuviera disponible. Trátala como no probada.
Cómo revisar otros relays: qué detecta y qué no cada método
Sin una firma del upstream, solo se pueden hacer pruebas indirectas. Revelan problemas evidentes, pero el mejor resultado posible es "no se encontró nada sospechoso", nunca "oficial confirmado". Estos son los métodos comunes y sus límites.
| Método | Cómo | Detecta | No detecta |
|---|---|---|---|
| Conteo de tokens | Cómo: Envía el mismo prompt fijo al mismo modelo en la API oficial y en el relay, y compara input_tokens en usage. | Detecta: Un modelo de otro proveedor: los tokenizadores varían entre proveedores, así que los conteos no van a coincidir. | No detecta: Los modelos de un mismo proveedor suelen compartir tokenizador, así que un modelo más barato de la misma familia pasa desapercibido. Además necesitas un conteo oficial de referencia. |
| Caché de prompts | Cómo: Envía dos veces el mismo prefijo, más largo que la longitud mínima cacheable del modelo. Comprueba que la segunda respuesta reporte cache_read_input_tokens y se cobre a la tarifa de lectura de caché. | Detecta: Un backend que no es el upstream oficial, o un relay que rompe la caché pero sigue cobrando el precio completo. | No detecta: Un acierto de caché solo muestra que el backend admite caché, no qué modelo es. |
| Contexto largo | Cómo: Envía un texto cercano al límite de contexto anunciado con un dato clave escondido en el medio y luego pregunta por él. | Detecta: Un modelo con menos contexto que se hace pasar por el real, o un relay que trunca el historial sin avisar. | No detecta: Una respuesta correcta no prueba la versión del modelo, y esta prueba es la que más tokens consume. |
| Detalles del protocolo | Cómo: Compara el orden de eventos del streaming (de message_start a message_stop), el formato del id de mensaje, los encabezados y la forma de los errores con la documentación oficial. | Detecta: Envoltorios burdos que fuerzan la salida de otro modelo al formato de Claude. | No detecta: Todos estos campos son fáciles de falsificar; un envoltorio cuidadoso los replica exactamente. |
Métodos en los que no conviene confiar
- Preguntarle al modelo "quién eres" o "cuál es tu fecha de corte de conocimiento": los propios modelos oficiales suelen equivocarse, y un relay puede hacer que cualquier modelo diga ser Claude con un system prompt.
- Juzgar la calidad o la velocidad de las respuestas a ojo: el prompt, la carga y el azar influyen demasiado; tómalo solo como una pista.
Por qué no hay un escáner de un clic para cualquier relay
- Un escaneo tiene que enviar solicitudes con tu clave de API de ese relay. Pasarlas por nuestros servidores significaría entregarnos la clave de otro servicio, y no queremos tenerla.
- Llamar al relay directamente desde el navegador falla porque la mayoría de los relays no permiten solicitudes cross-origin.
- Las pruebas de arriba solo pueden decir "sospechoso" o "no se encontró nada". Presentarlas como una puntuación parecería autorizado y llevaría a error.
Lista de autoverificación de relays
Antes de elegir un relay, o cuando sospeches del que usas, revisa en este orden:
- ¿La respuesta incluye una prueba del upstream que puedas verificar sin conexión? Si es así, ¿el host upstream firmado es el oficial, por ejemplo api.anthropic.com para Claude?
- ¿Los input_tokens de un prompt fijo coinciden con los de la API oficial?
- Después de repetir un prefijo largo, ¿la respuesta reporta lecturas de caché y se cobra a la tarifa de caché?
- ¿El contexto cercano al límite anunciado se procesa sin truncarse?
- ¿El relay informa públicamente de dónde viene su upstream y si registra o almacena el contenido de las solicitudes?
- Si un relay no se puede verificar, no le envíes secretos, datos de clientes ni otro contenido sensible.
Qué demuestra una prueba y qué no
Demuestra
- De qué host upstream oficial vino la respuesta.
- Los bytes de la respuesta son exactamente los que devolvió el upstream, incluido el campo model; el relay no cambió nada.
- El enclave ejecuta una imagen compilada desde código público (PCR0 es reproducible).
No demuestra
- Confidencialidad: el relay sigue manejando el texto plano al reenviar.
- Respuestas sin prueba, como las solicitudes con conversión de formato y la generación de imágenes.
- La repetición de una respuesta antigua entre solicitudes idénticas byte a byte.
Preguntas frecuentes
¿La respuesta que pego se sube a algún lado?
No. El verificador es una página que solo funciona en el navegador, comprueba las firmas con el WebCrypto integrado del navegador y no hace solicitudes de red. Puedes confirmarlo en la pestaña de red de las herramientas para desarrolladores de tu navegador, o guardar el verificador y usarlo sin conexión.
¿Son legales los relays de API de IA?
Depende de las leyes del lugar donde operan tú y el relay, y de los términos de uso del proveedor upstream, que varían según la región y el proveedor; esta página no es asesoría legal. Lee los términos del upstream y las normas locales antes de usar uno, sobre todo con datos sensibles o regulados. Esta herramienta responde una sola pregunta que se puede comprobar técnicamente: si la respuesta que recibiste es la original del upstream oficial.
¿Cómo sé si un relay sirve un modelo "rebajado"?
Cuando un modelo se siente peor a través de un relay, suele deberse a alguna de estas causas: un cambio silencioso a un modelo más barato, historial de conversación truncado, un límite de salida más bajo o el razonamiento desactivado. Una respuesta probada descarta la primera: la firma cubre los bytes originales del upstream, así que el campo model viene de la API oficial. El truncado y los cambios de parámetros ocurren del lado de la solicitud, que la prueba de la respuesta no cubre; ahí ayudan las pruebas de contexto largo y conteo de tokens de arriba.
¿Cuál es la diferencia entre un sitio espejo de Claude y el sitio oficial?
Los productos oficiales son claude.ai y la API de Anthropic. Un sitio espejo es una página de chat de terceros que puede usar la API oficial, cuentas compartidas o el modelo de otro proveedor, con sus propias funciones y política de privacidad, y normalmente los usuarios no pueden saber cuál. Si usas la API desde herramientas como Claude Code o Cursor, la pregunta es sobre relays de API, y la prueba es la misma: ¿puede darte una prueba del upstream que tú mismo puedas verificar?
¿Qué pasa si la respuesta no tiene tee.proof?
Comprueba que "Verificación oficial" esté activada para la clave y que estés llamando a una ruta de reenvío sin cambios, Claude Messages o GPT Responses. Las solicitudes con conversión de formato, como Claude a través de Chat Completions, nunca incluyen una prueba. Si el enclave no está disponible temporalmente, la solicitud usa la ruta alternativa y esa respuesta tampoco tiene prueba. Trata cualquier respuesta sin prueba como no probada.
¿Puedo usar esta herramienta para verificar otros relays?
El verificador solo comprueba respuestas que incluyen una prueba Proof-of-Observation. El protocolo es de código abierto y cualquier relay puede implementarlo; para los relays que no lo han hecho, solo aplican las pruebas indirectas de arriba, y el mejor resultado posible es "no se encontró nada sospechoso".