# Erros comuns

Esta página é composta pela distribuição de status por endpoint nos últimos 30 dias. Onde não medimos alguma coisa, está assim indicado.

<Aside type="note">
Códigos de erro nós **não** escrevemos no log de pedidos, apenas os status HTTP. Por isso abaixo temos as frequências de status, mas não há classificação de códigos como `INVALID_FIELD`. Não inventámos.
</Aside>

## Erros de caminho

Os 4xx mais frequentes no log são `404`, e quase todos não são seus: são scanners que tentam `.env`, `.git/config`, `wordpress/`, `wp-content/…`. Os erros de caminho reais dos integradores são outros, e já estão descritos com exemplos aqui: [Chamadas inválidas que vemos mais frequentemente](/api-conventions/#chamadas-inválidas-que-vemos-mais-frequentemente). Resumindo: `/api/…` em vez de `/v1/…`, duplicado `/v1/v1/…`, `/swagger.json` em vez de `/v1/openapi.json`.

## `402`: o plano não inclui o endpoint

385 respostas em 30 dias. A distribuição mostra para onde o plano gratuito mais frequentemente atinge o limite:

| Endpoint | `402` em 30 dias |
|---|---|
| `chart` | 114 |
| `transit-calendar` | 101 |
| `vedic/dashas/vimshottari/maha` | 48 |
| `ingresses` | 25 |
| `planetary-hours` | 24 |
| `vedic/panchang/full` | 24 |
| `eclipses` | 13 |

No corpo da resposta vem `current_plan` e `upgrade_to`. Isto não é um erro de pedido: o corpo está correto, a chave é válida, simplesmente o plano não inclui este endpoint.

## `429`: dois limites diferentes

6 791 respostas em 30 dias, sendo 3 769 sem chave e 3 022 com chave. São dois mecanismos diferentes, e não devem ser confundidos:

- **sem chave** o limite é calculado por IP, 30 pedidos por hora. O maior bloco no nosso log nem são integradores, mas sim auditorias sintéticas do Chrome-Lighthouse de 15 endereços;
- **com chave** o limite é o RPM do seu plano. Na resposta há `Retry-After` em segundos, e precisamente ele que deve ser esperado, e não tentar novamente imediatamente.

## `400`: quase sempre corpo do pedido de cartão

700 respostas em 30 dias, e estão concentradas nos endpoints que aceitam data, hora e coordenadas: `chart` (111), `horoscope/daily` (19), `transits` (18), `synastry` (15), `rectification` (15).

O mais caro destes erros nem é o que dá `400`, mas o que antes dava `200`: escritas abreviadas dos campos. Regras e exemplo de resposta: [Formatos de campos](/agent-setup/field-formats/).

## `401` e `403`

`401` é a chave ausente ou inválida; a mensagem menciona ambas as classes, `aw_` e `pk_`. `403` é a origem: a chave de navegador `pk_` é rejeitada se o pedido vier sem origem ou de um domínio estranho, e a chave com scope de endpoint responde `ENDPOINT_NOT_IN_SCOPE` e lista o seu scope em `details`.

Tabela completa de códigos: [Erros](/errors/).
