# Erori tipice

Pagina este alcătuită din distribuția statusurilor în producție pe 30 de zile. Unde nu măsurăm ceva, este scris așa.

<Aside type="note">
Codurile de eroare **nu** le scriem în jurnalul de cereri, doar statusurile HTTP. De aceea mai jos sunt frecvențele statusurilor, dar nu există un rating al codurilor de genul `INVALID_FIELD`. Nu am inventat unul.
</Aside>

## Erori de cale

Cele mai frecvente 4xx din jurnal sunt `404`, și aproape toate nu sunt ale tale: sunt scanere care parcurg `.env`, `.git/config`, `wordpress/`, `wp-content/…`. Erorile reale de cale ale integratorilor sunt altele, și sunt deja descrise cu exemple aici: [Apeluri eronate pe care le vedem cel mai des](/api-conventions/#помилкові-виклики-які-ми-бачимо-найчастіше). Pe scurt: `/api/…` în loc de `/v1/…`, dublu `/v1/v1/…`, `/swagger.json` în loc de `/v1/openapi.json`.

## `402`: planul nu include endpointul

385 de răspunsuri în 30 de zile. Distribuția arată unde se lovește cel mai des planul gratuit:

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

În corpul răspunsului vin `current_plan` și `upgrade_to`. Nu este o eroare de cerere: corpul este corect, cheia este validă, doar planul nu include acest endpoint.

## `429`: două limite diferite

6 791 răspunsuri în 30 de zile, dintre care 3 769 fără cheie și 3 022 cu cheie. Sunt două mecanisme diferite și nu trebuie să le amesteci:

- **fără cheie** limita se calculează pe IP, 30 de cereri pe oră. Cel mai mare bloc în jurnalul nostru nu sunt chiar integratorii, ci auditul sintetic Chrome-Lighthouse cu 15 adrese;
- **cu cheie** limita este RPM al planului tău. În răspuns există `Retry-After` în secunde, și trebuie să aștepți acel timp, nu să faci retry imediat.

## `400`: aproape întotdeauna corpul cererii de tip card

700 de răspunsuri în 30 de zile, și sunt concentrate pe endpointuri care primesc dată, oră și coordonate: `chart` (111), `horoscope/daily` (19), `transits` (18), `synastry` (15), `rectification` (15).

Cea mai scumpă dintre aceste erori nu este chiar cea care dă `400`, ci cea care odată dădea `200`: scrierea scurtă a câmpurilor. Reguli și exemplu de răspuns: [Formatele câmpurilor](/agent-setup/field-formats/).

## `401` și `403`

`401` înseamnă cheie lipsă sau incorectă; mesajul menționează ambele clase, `aw_` și `pk_`. `403` este legat de origine: cheia de browser `pk_` este respinsă dacă cererea vine fără origine sau de pe un domeniu străin, iar cheia cu domeniul endpointurilor răspunde cu `ENDPOINT_NOT_IN_SCOPE` și își enumeră lista în `details`.

Tabelul complet al codurilor: [Erori](/errors/).
