> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crazyrouter.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 상태 코드

> 모든 API 유형의 상태 코드 참고

> 업데이트: 2026-06-06

## HTTP 상태 코드

| 상태 코드 | 설명                   | 처리 권장 사항                                                     |
| ----- | -------------------- | ------------------------------------------------------------ |
| 200   | 요청 성공                | -                                                            |
| 400   | 요청 파라미터 오류           | 요청 본문 형식과 파라미터를 확인하세요                                        |
| 401   | 인증 실패                | API Key가 올바른지 확인하세요                                          |
| 403   | 권한 부족                | 토큰이 해당 모델에 접근할 권한이 있는지 확인하세요                                 |
| 404   | 리소스 없음               | URL 경로를 확인하세요                                                |
| 429   | 요청 빈도 초과             | 요청 빈도를 낮추거나 관리자에게 문의하세요                                      |
| 500   | 서버 측 5xx 오류          | 재시도 가능; 본 사이트 내부 오류일 수도 있고, 상류 5xx가 본 사이트를 통해 반환된 것일 수도 있습니다 |
| 502   | 게이트웨이 또는 상류 결과 획득 실패 | 일반적으로 이미 상류 호출 단계에 진입했지만 유효한 상류 응답을 받지 못했음을 의미하며, 재시도 가능합니다  |
| 503   | 서비스 사용 불가            | 시스템 점검 중                                                     |

## 500과 502의 차이

* `500`은 더 포괄적인 서버 측 오류입니다. CrazyRouter에서는 본 사이트 내부 오류를 의미할 수도 있고, 상류가 직접 `5xx`를 반환하여 본 사이트가 클라이언트에 그대로 중계한 것일 수도 있습니다.
* `502`는 더 구체적입니다. 일반적으로 요청이 이미 CrazyRouter의 게이트웨이 또는 상류 호출 단계에 도달했지만, CrazyRouter가 유효한 상류 응답이나 결과를 받지 못했음을 의미합니다. 예를 들어 상류에 접근할 수 없거나, 유효하지 않은 게이트웨이 수준 응답이 반환되었거나, 작업 결과 주소를 가져오지 못한 경우입니다.
* 동일한 유형의 문제가 지속적으로 발생하는 경우:
  * 대량의 `502`는 일반적으로 상류 채널 가용성, 네트워크 연결성, 결과 URL 접근 가능 여부를 우선 확인해야 합니다.
  * 대량의 `500`은 오류 유형과 로그를 결합하여 추가로 구분해야 합니다. 명확히 사이트 내부 `site_internal` 또는 panic류로 표시된 경우에만 CrazyRouter 자체 문제로 간주해야 합니다.

## Chat Completions 상태 코드

```json theme={null}
{
  "error": {
    "message": "오류 설명",
    "type": "error_type",
    "code": "error_code"
  }
}
```

| code                      | 설명                      |
| ------------------------- | ----------------------- |
| `invalid_api_key`         | API Key가 유효하지 않거나 만료됨   |
| `insufficient_quota`      | 잔액 부족                   |
| `model_not_found`         | 모델이 존재하지 않거나 비활성화됨      |
| `context_length_exceeded` | 입력이 모델의 컨텍스트 길이 제한을 초과함 |
| `rate_limit_exceeded`     | 요청 빈도 초과                |
| `content_filter`          | 콘텐츠가 안전 필터에 의해 차단됨      |

## Midjourney 작업 상태 코드

| 상태            | 설명     |
| ------------- | ------ |
| `NOT_START`   | 작업 미시작 |
| `SUBMITTED`   | 제출됨    |
| `IN_PROGRESS` | 생성 중   |
| `SUCCESS`     | 생성 성공  |
| `FAILURE`     | 생성 실패  |
| `CANCEL`      | 취소됨    |

### MJ 오류 코드

| code | 설명         |
| ---- | ---------- |
| 1    | 제출 성공      |
| 21   | 작업이 이미 존재함 |
| 22   | 대기 중       |
| 23   | 대기열이 가득 참  |
| 24   | 제출 실패      |

## Kling 비디오 상태 코드

| 상태           | 설명          |
| ------------ | ----------- |
| `queued`     | 제출됨 또는 대기 중 |
| `processing` | 처리 중        |
| `succeeded`  | 생성 성공       |
| `failed`     | 생성 실패       |

## Jimeng(即梦) 작업 상태 코드

| 상태           | 설명          |
| ------------ | ----------- |
| `queued`     | 제출됨 또는 대기 중 |
| `processing` | 처리 중        |
| `succeeded`  | 생성 성공       |
| `failed`     | 생성 실패       |

## Luma 비디오 상태 코드

| 상태           | 설명   |
| ------------ | ---- |
| `pending`    | 대기 중 |
| `processing` | 처리 중 |
| `completed`  | 완료   |
| `failed`     | 실패   |

## Suno 음악 상태 코드

| 상태           | 설명   |
| ------------ | ---- |
| `submitted`  | 제출됨  |
| `processing` | 생성 중 |
| `complete`   | 완료   |
| `error`      | 오류   |

## Runway 비디오 상태 코드

| 상태          | 설명   |
| ----------- | ---- |
| `PENDING`   | 대기 중 |
| `RUNNING`   | 생성 중 |
| `SUCCEEDED` | 성공   |
| `FAILED`    | 실패   |

## 일반적인 오류 처리 권장 사항

<Warning>
  429 오류가 발생했을 때 즉시 재시도하지 마세요. 지수 백오프(Exponential Backoff) 전략을 사용하는 것을 권장합니다. 초기 대기 시간 1초에서 시작해 매번 두 배로 늘리세요.
</Warning>

```python theme={null}
import time
import requests

def request_with_retry(url, headers, json_data, max_retries=3):
    for i in range(max_retries):
        response = requests.post(url, headers=headers, json=json_data)
        if response.status_code == 429:
            wait = 2 ** i
            print(f"빈도 제한, {wait}초 대기 후 재시도...")
            time.sleep(wait)
            continue
        return response
    return response
```
