# 일반적인 오류

이 페이지는 프로덕션에서 30일 동안의 상태 분포로 구성돼. 측정하지 않는 부분은 그대로 표시돼.

<Aside type="note">
오류 코드는 **기록**에 쓰지 않고 HTTP 상태만 기록해. 그래서 아래에 상태 빈도는 있지만 `INVALID_FIELD` 같은 코드 등급은 없어. 억지로 만들지는 않았어.
</Aside>

## 경로 오류

로그에서 가장 흔한 4xx는 `404`이고 거의 다 네가 아닌 거야: `.env`, `.git/config`, `wordpress/`, `wp-content/…` 같은 파일을 뒤지는 스캐너들이야. 통합자들의 실제 경로 오류는 다르고, 이미 여기 예시와 함께 설명돼: [자주 보는 잘못된 호출](/api-conventions/#помилкові-виклики-які-ми-бачимо-найчастіше). 간단히 말하면: `/api/…` 대신 `/v1/…`, 중복된 `/v1/v1/…`, `/swagger.json` 대신 `/v1/openapi.json`.

## `402`: 요금제에 엔드포인트가 포함되지 않음

30일 동안 385개의 응답이 있었어. 분포를 보면 무료 요금제가 가장 자주 부딪히는 곳은:

| 엔드포인트 | `402` (30일 기준) |
|---|---|
| `chart` | 114 |
| `transit-calendar` | 101 |
| `vedic/dashas/vimshottari/maha` | 48 |
| `ingresses` | 25 |
| `planetary-hours` | 24 |
| `vedic/panchang/full` | 24 |
| `eclipses` | 13 |

응답 본문에 `current_plan`와 `upgrade_to`가 포함돼. 이것은 요청 오류가 아니야: 본문은 올바르고 키도 유효하지만, 요금제에 이 엔드포인트가 포함돼 있지 않을 뿐이야.

## `429`: 두 가지 다른 제한

30일 동안 6,791개의 응답이 있었고, 그 중 3,769는 키 없이, 3,022는 키와 함께였어. 이것은 두 가지 다른 메커니즘이고, 혼동하면 안 돼:

- **키 없이** 제한은 IP 기준으로, 시간당 30 요청이야. 우리 로그에서 가장 큰 블록은 통합자가 아니라 15개의 주소를 가진 Chrome-Lighthouse 합성 감시야;
- **키와 함께** 제한은 너의 요금제 RPM이야. 응답에 초단위 `Retry-After`가 포함돼 있고, 바로 재시도하지 말고 그 값을 기다려야 해.

## `400`: 거의 항상 카드 요청 본문

30일 동안 700개의 응답이 있었고, 이들은 날짜, 시간, 좌표를 받는 엔드포인트에 집중돼: `chart` (111), `horoscope/daily` (19), `transits` (18), `synastry` (15), `rectification` (15).

가장 비싼 이런 오류는 `400`을 반환하는 것이 아니라, 한때 `200`을 반환했던 거야: 필드의 짧은 표기. 규칙과 응답 예시는: [필드 포맷](/agent-setup/field-formats/).

## `401`와 `403`

`401`은 키가 없거나 잘못됐을 때야; 메시지는 두 클래스 `aw_`와 `pk_`를 모두 언급해. `403`은 출처와 관련돼: 브라우저 키 `pk_`는 출처가 없거나 다른 도메인에서 온 경우 거부되고, 엔드포인트 영역을 가진 키는 `ENDPOINT_NOT_IN_SCOPE`가 발생하고 `details`에 리스트를 보여줘.

전체 코드 표: [오류](/errors/).
