Verifique se um relay devolveu a resposta oficial
Cole no verificador abaixo uma resposta de API que traga uma prova. Ele confere a assinatura no seu navegador e informa de qual host upstream oficial a resposta veio e se o relay a alterou. Seus dados nunca saem do seu computador.
- Fica no seu navegador
- Verificador de código aberto
- Grátis, sem cadastro
Verifique uma resposta em três passos
- 1
Ative a verificação na sua chave
Na página API, ative "Verificação oficial" para a chave. Só respostas de Claude Messages e GPT Responses repassadas sem alteração trazem uma prova.
- 2
Salve a resposta inteira
Envie uma requisição em streaming e grave os bytes da resposta em um arquivo exatamente como vieram com curl -o; o final deve ter event: tee.proof. Para requisições sem streaming, adicione o cabeçalho x-wokey-tee-proof-mode: multipart e salve a resposta multipart inteira. No Windows, use curl.exe -o em vez do redirecionamento > do PowerShell ou de salvar de novo no Bloco de Notas, que alteram as quebras de linha ou a codificação.
- 3
Cole no verificador
Cole ou arraste a resposta completa para o verificador abaixo e inicie a verificação. Ela roda no seu navegador, nesta página, e não faz nenhuma requisição de rede.
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-responseO verificador acima é publicado diretamente do repositório de código aberto no GitHub Pages e nunca passa pelos servidores da Wokey, então a Wokey não pode trocá-lo por um que sempre diga "aprovado". Você também pode salvar a página e abri-la offline.
O verificador pede que você confira o PCR0, a medição da imagem do enclave. Use o valor publicado no repositório de código aberto, que qualquer pessoa pode reproduzir a partir do código-fonte, e não um valor que chega junto com a resposta.
Como ler o resultado
- Todas as verificações passam
- A attestation se encadeia até a raiz da AWS Nitro, o PCR0 corresponde ao valor publicado, a assinatura é válida e os bytes da resposta batem com o hash assinado. O host upstream exibido (por exemplo api.anthropic.com) é de onde a resposta veio, e o relay não a alterou.
- Prova válida, falta o corpo da resposta
- Você colou apenas o evento tee.proof. A prova foi assinada por um enclave real, mas sem o corpo não dá para recalcular o hash, então isso não mostra que o conteúdo que você viu está inalterado. Cole a resposta inteira.
- PCR0 não corresponde
- A attestation é autêntica, mas o enclave não está rodando a imagem auditada. Trate a resposta como não comprovada.
- Falha na assinatura ou no hash
- A prova ou a resposta foi alterada, ou bytes mudaram ao salvar ou copiar (por exemplo, uma conversão de codificação). Salve de novo a resposta original com curl -o; se continuar falhando, não confie nela. Quando uma ferramenta de salvamento trocou as quebras de linha por CRLF ou salvou o arquivo como UTF-16, o verificador converte de volta e avisa; o hash assinado continua decidindo o resultado.
- Sem tee.proof
- A resposta não está comprovada: a chave pode não estar com a verificação ativada, a requisição passou por conversão de formato ou o enclave estava indisponível. Trate-a como não comprovada.
Como checar outros relays: o que cada método detecta e o que deixa passar
Sem uma assinatura do upstream, só é possível fazer verificações indiretas. Elas revelam problemas óbvios, mas o melhor resultado é "nada suspeito encontrado", nunca "oficial confirmado". Veja os métodos comuns e seus limites.
| Método | Como | Detecta | Deixa passar |
|---|---|---|---|
| Contagem de tokens | Como: Envie o mesmo prompt fixo para o mesmo modelo na API oficial e no relay e compare input_tokens em usage. | Detecta: Um modelo de outro fornecedor: os tokenizadores variam entre fornecedores, então as contagens vão divergir claramente. | Deixa passar: Modelos de um mesmo fornecedor costumam compartilhar o tokenizador, então um modelo mais barato da mesma família passa despercebido. Você também precisa de uma contagem oficial de referência. |
| Cache de prompt | Como: Envie duas vezes o mesmo prefixo, maior que o tamanho mínimo armazenável em cache do modelo. Confira se a segunda resposta informa cache_read_input_tokens e é cobrada pela tarifa de leitura de cache. | Detecta: Um backend que não é o upstream oficial, ou um relay que quebra o cache mas continua cobrando o preço cheio. | Deixa passar: Um acerto de cache só mostra que o backend suporta cache, não qual modelo ele é. |
| Contexto longo | Como: Envie um texto próximo do limite de contexto anunciado com uma informação-chave escondida no meio e depois pergunte sobre ela. | Detecta: Um modelo com contexto menor se passando pelo verdadeiro, ou um relay que trunca o histórico sem avisar. | Deixa passar: Uma resposta correta não prova a versão do modelo, e esse teste é o que mais gasta tokens. |
| Detalhes do protocolo | Como: Compare a ordem dos eventos de streaming (de message_start a message_stop), o formato do id da mensagem, os cabeçalhos e o formato dos erros com a documentação oficial. | Detecta: Wrappers grosseiros que forçam a saída de outro modelo no formato do Claude. | Deixa passar: Todos esses campos são fáceis de falsificar; um wrapper cuidadoso reproduz tudo exatamente. |
Métodos em que não vale confiar
- Perguntar ao modelo "quem é você" ou "qual é a data de corte do seu conhecimento": os próprios modelos oficiais costumam errar isso, e um relay pode fazer qualquer modelo dizer que é o Claude com um system prompt.
- Avaliar a qualidade ou a velocidade das respostas no olho: prompt, carga e aleatoriedade influenciam demais; use isso só como pista.
Por que não existe um scanner de um clique para qualquer relay
- Um scan precisa enviar requisições com a sua chave de API daquele relay. Passá-las pelos nossos servidores significaria nos entregar a chave de outro serviço, e não queremos guardá-la.
- Chamar o relay direto do navegador falha porque a maioria dos relays não permite requisições cross-origin.
- As verificações acima só conseguem dizer "suspeito" ou "nada encontrado". Transformá-las em uma nota pareceria confiável e induziria ao erro.
Checklist de autoverificação de relay
Antes de escolher um relay, ou quando desconfiar do que você usa, verifique nesta ordem:
- A resposta traz uma prova do upstream que você pode verificar offline? Se sim, o host upstream assinado é o oficial, por exemplo api.anthropic.com para o Claude?
- Os input_tokens de um prompt fixo batem com os da API oficial?
- Depois de repetir um prefixo longo, a resposta informa leituras de cache e é cobrada pela tarifa de cache?
- Um contexto próximo do limite anunciado é processado sem truncamento?
- O relay informa publicamente de onde vem o upstream e se registra ou armazena o conteúdo das requisições?
- Se um relay não pode ser verificado, não envie a ele segredos, dados de clientes ou outro conteúdo sensível.
O que uma prova mostra e o que não mostra
Mostra
- De qual host upstream oficial a resposta veio.
- Os bytes da resposta são exatamente os que o upstream devolveu, incluindo o campo model; o relay não alterou nada.
- O enclave roda uma imagem compilada a partir de código público (o PCR0 é reproduzível).
Não mostra
- Confidencialidade: o relay ainda lida com o texto em claro ao repassar.
- Respostas sem prova, como requisições com conversão de formato e geração de imagens.
- Reenvio de uma resposta antiga entre requisições idênticas byte a byte.
Perguntas frequentes
A resposta que eu colo é enviada para algum lugar?
Não. O verificador é uma página que roda só no navegador, confere as assinaturas com o WebCrypto embutido no navegador e não faz requisições de rede. Você pode confirmar isso na aba de rede das ferramentas de desenvolvedor do navegador, ou salvar o verificador e usá-lo offline.
Relays de API de IA são legais?
Depende das leis do lugar onde você e o relay operam e dos termos de uso do fornecedor upstream, que variam por região e por fornecedor; esta página não é aconselhamento jurídico. Leia os termos do upstream e as regras locais antes de usar um, principalmente com dados sensíveis ou regulados. Esta ferramenta responde a uma única pergunta que pode ser verificada tecnicamente: se a resposta que você recebeu é a original do upstream oficial.
Como saber se um relay entrega um modelo "piorado"?
Quando um modelo parece pior através de um relay, geralmente é por um destes motivos: troca silenciosa por um modelo mais barato, histórico da conversa truncado, limite de saída menor ou raciocínio desativado. Uma resposta comprovada descarta o primeiro: a assinatura cobre os bytes originais do upstream, então o campo model vem da API oficial. Truncamento e mudanças de parâmetros acontecem do lado da requisição, que a prova da resposta não cobre; nesse caso ajudam as verificações de contexto longo e contagem de tokens acima.
Qual a diferença entre um site espelho do Claude e o site oficial?
Os produtos oficiais são o claude.ai e a API da Anthropic. Um site espelho é uma página de chat de terceiros que pode usar a API oficial, contas compartilhadas ou o modelo de outro fornecedor, com recursos e política de privacidade próprios, e os usuários geralmente não conseguem saber qual. Se você usa a API em ferramentas como Claude Code ou Cursor, a questão é sobre relays de API, e o teste é o mesmo: ele consegue fornecer uma prova do upstream que você mesmo possa verificar?
E se a resposta não tiver tee.proof?
Confira se "Verificação oficial" está ativada para a chave e se você está chamando uma rota de repasse sem alteração, Claude Messages ou GPT Responses. Requisições com conversão de formato, como Claude via Chat Completions, nunca trazem prova. Se o enclave estiver temporariamente indisponível, a requisição usa a rota alternativa e essa resposta também fica sem prova. Trate qualquer resposta sem prova como não comprovada.
Posso usar esta ferramenta para verificar outros relays?
O verificador só confere respostas que trazem uma prova Proof-of-Observation. O protocolo é de código aberto e qualquer relay pode implementá-lo; para os relays que não implementaram, só valem as verificações indiretas acima, e o melhor resultado é "nada suspeito encontrado".