Erros

Toda falha tem a mesma estrutura e um code estável. Tome decisões com base no código: a mensagem é escrita para pessoas e pode mudar.

{ "error": { "code": "invalid_key", "message": "That API key does not exist." } }

Alguns erros trazem campos extras além desses dois: parameter para indicar o parâmetro errado, retry_after para dizer quanto esperar, limit e used para uma cota esgotada.

Todos os códigos

StatusCódigoQuando
400missing_queryquery veio vazio ou ausente.
400unknown_formatformat não é um dos seis.
400unknown_columncolumns cita um campo que não existe.
400format_not_availableFoi pedido um formato plano onde a resposta não é composta de linhas.
400per_page_too_largeper_page acima do limite de linhas do seu plano. O limite vem no erro.
400invalid_jsonO corpo do POST não é um JSON válido.
401missing_keyNão há cabeçalho Authorization: Bearer.
401invalid_keyA chave não corresponde a nenhuma conta.
403plan_requiredA conta não tem plano pago.
404unknown_endpointEsse caminho não existe. Os conhecidos vêm listados no erro.
405method_not_allowedA API é somente leitura. Use GET, ou POST com um corpo JSON.
429too_many_requestsRequisições chegando a mais de dez por minuto (API e MCP somados).
429quota_exceededA cota de buscas do dia acabou.
429snippet_quota_exceededA cota de trechos do dia acabou. Buscas sem trechos continuam funcionando.

O que fazer em cada caso

Erros e formatos

Os erros voltam em JSON, ou em XML quando foi pedido format=xml. Os formatos planos não têm estrutura para um erro, então uma requisição que falhou e tinha pedido csv recebe JSON. Por isso, um cliente que lê CSV deve verificar o código de status em vez de supor que todo corpo de resposta sejam linhas.

Como ler os códigos sem ler esta página

GET / lista todos os códigos acima, com o significado de cada um, em JSON. Não exige chave, então é possível construir um cliente que trate o conjunto completo sem que ninguém precise abrir um navegador.

curl https://api.publicwww.com/
A seguir Exemplos de código