Перейти к основному содержанию

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
500Server-side 5xx errorSafe to retry; may be an internal CrazyRouter error or an upstream 5xx relayed through CrazyRouter
502Gateway or upstream result retrieval failureUsually means CrazyRouter reached the upstream stage but could not obtain a valid upstream response or result; safe to retry
503Service unavailableSystem maintenance in progress

Difference Between 500 and 502

  • 500 is broader. In CrazyRouter, it can mean either an internal server error on our side or an upstream 5xx that was returned through our relay.
  • 502 is more specific. It usually means the request reached the gateway or upstream step, but CrazyRouter could not get a valid upstream response or fetch the upstream result, for example because the upstream was unavailable, returned an invalid gateway-level response, or the result URL could not be retrieved.
  • If the same issue keeps happening:
    • frequent 502 errors usually point to upstream availability, connectivity, or result URL retrieval issues;
    • frequent 500 errors need log-based classification, and only cases explicitly marked as site-internal or panic-type should be treated as a CrazyRouter-side defect.

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