メインコンテンツへスキップ

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.

HTTP Status Codes

Status CodeDescriptionRecommended Action
200Request successful-
400Bad request parametersCheck request body format and parameters
401Authentication failedCheck if API Key is correct
403Insufficient permissionsCheck if the token has access to the requested model
404Resource not foundCheck URL path
429Rate limit exceededReduce request frequency or contact admin
500サーバー側 5xx エラーリトライ可。CrazyRouter 内部エラーの場合もあれば、上流 5xx を CrazyRouter 経由で返している場合もあります
502ゲートウェイまたは上流結果取得失敗通常は CrazyRouter が上流呼び出し段階までは到達したものの、有効な上流レスポンスまたは結果を取得できなかった状態です。リトライ可
503Service unavailableSystem maintenance in progress

500 と 502 の違い

  • 500 はより広いサーバー側エラーです。CrazyRouter では、当社側の内部エラーを指す場合もあれば、上流が返した 5xx をそのまま中継している場合もあります。
  • 502 はより具体的で、CrazyRouter から上流への接続や結果取得の段階で失敗したことを示します。たとえば、上流が到達不能、無効なゲートウェイ応答、または生成結果 URL の取得失敗などです。
  • 同じ問題が続く場合:
    • 502 が多いときは、上流の可用性、接続性、結果 URL の取得可否を優先して確認してください。
    • 500 が多いときは、エラー分類やログで切り分けてください。site_internal や panic 系として明示されたものだけを CrazyRouter 側の問題として扱うのが適切です。

Chat Completions Error Codes

{
  "error": {
    "message": "Error description",
    "type": "error_type",
    "code": "error_code"
  }
}
codeDescription
invalid_api_keyAPI Key is invalid or expired
insufficient_quotaInsufficient balance
model_not_foundModel does not exist or is not enabled
context_length_exceededInput exceeds model context length limit
rate_limit_exceededRate limit exceeded
content_filterContent blocked by safety filter

Midjourney Task Status Codes

StatusDescription
NOT_STARTTask not started
SUBMITTEDSubmitted
IN_PROGRESSGenerating
SUCCESSGeneration successful
FAILUREGeneration failed
CANCELCancelled

MJ Error Codes

codeDescription
1Submission successful
21Task already exists
22Queued
23Queue full
24Submission failed

Kling Video Status Codes

StatusDescription
queuedSubmitted or waiting in queue
processingProcessing
succeededGeneration successful
failedGeneration failed

Jimeng Task Status Codes

StatusDescription
queuedSubmitted or waiting in queue
processingProcessing
succeededGeneration successful
failedGeneration failed

Luma Video Status Codes

StatusDescription
pendingPending
processingProcessing
completedCompleted
failedFailed

Suno Music Status Codes

StatusDescription
submittedSubmitted
processingGenerating
completeCompleted
errorError

Runway Video Status Codes

StatusDescription
PENDINGPending
RUNNINGGenerating
SUCCEEDEDSucceeded
FAILEDFailed

General Error Handling Recommendations

When encountering a 429 error, do not retry immediately. Use an exponential backoff strategy, starting with a 1-second wait and doubling each time.
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"Rate limited, waiting {wait} seconds before retrying...")
            time.sleep(wait)
            continue
        return response
    return response