Como corrigir REST API do WooCommerce com erro 401
O que é a REST API do WooCommerce com erro 401?
A REST API do WooCommerce permite que sistemas externos (ERP, app, marketplace, automação) leiam e gravem pedidos, produtos e clientes da loja. Cada chamada precisa se autenticar com um par Consumer Key e Consumer Secret gerado em WooCommerce. O erro 401 Unauthorized é a resposta do site dizendo que a credencial não foi aceita: a chave não chegou, não confere, ou não tem a permissão necessária para aquela operação.
Como identificar
- A integração recebe a resposta HTTP “401 Unauthorized” ao chamar qualquer endpoint /wp-json/wc/v3/.
- O corpo da resposta traz o código “woocommerce_rest_authentication_error” com a mensagem de chave inválida ou ausente.
- Em servidores Apache, a chamada por Basic Auth funciona no localhost mas devolve 401 em produção, sinal de header Authorization descartado.
- Tentativas de POST ou PUT retornam “woocommerce_rest_cannot_create” ou 401 mesmo com a chave certa, indicando permissão somente leitura.
Como prevenir
- Gere uma chave de API por integração, com a permissão mínima necessária, e revogue as que não usa mais
- Mantenha o repasse do header Authorization configurado no servidor e sempre chame a API por HTTPS
- Monitore os logs do WooCommerce e do WAF por respostas 401 nas rotas /wp-json/wc/ após cada atualização de plugin de segurança
Causa
- Header Authorization removido pelo servidor (Apache com mod_rewrite ou FastCGI/PHP-FPM) antes de chegar ao WordPress, fazendo o WooCommerce não enxergar a credencial Basic Auth.
- Consumer Key ou Consumer Secret digitada errada, revogada, ou copiada com espaço/quebra de linha extra ao colar na integração.
- Chave de API gerada com permissão apenas de Leitura enquanto a integração tenta criar ou atualizar pedidos (POST/PUT), resultando em 401/403.
- Requisição feita em HTTP simples (sem SSL) usando autenticação básica, que o WooCommerce só aceita com HTTPS válido na conexão.
- Plugin de segurança ou WAF bloqueando o cabeçalho de autenticação ou as rotas /wp-json/, devolvendo 401 antes do WooCommerce processar.
Como resolver
- Regere e confira a chave de API: em WooCommerce > Configurações > Avançado > REST API, apague a chave suspeita e gere uma nova. Copie Consumer Key e Consumer Secret na hora (o secret só aparece uma vez) e cole sem espaços extras na integração.
- Defina a permissão correta da chave: ao criar a chave, escolha Leitura/Escrita se a integração precisa criar ou atualizar pedidos e produtos. Uma chave somente Leitura devolve erro em qualquer POST ou PUT.
- Garanta HTTPS válido na chamada: use sempre a URL com https:// e um certificado SSL válido. A autenticação básica do WooCommerce é recusada em conexões HTTP sem cadeado, o que aparece como 401.
- Preserve o header Authorization no Apache: em muitos servidores Apache o cabeçalho Authorization é descartado antes de chegar ao PHP. Adicione a regra de rewrite no .htaccess da raiz para repassá-lo ao WordPress (veja o código abaixo).
- Teste isolando segurança e WAF: faça uma chamada de teste a /wp-json/wc/v3/orders com as chaves. Se ainda der 401, desative temporariamente o plugin de segurança/WAF e refaça para confirmar se ele está bloqueando o header ou as rotas REST.
# .htaccess da raiz do WordPress — repassa o header Authorization ao PHP
# (Apache costuma descartar esse header, quebrando o Basic Auth da REST API do WooCommerce)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*)$ - [E=HTTP_AUTHORIZATION:%1]
</IfModule>
# Alternativa para Apache com CGI/FastCGI, caso a regra acima não baste:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1














