Skip to main content

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
500Internal server errorRetry later
502Upstream service errorUpstream channel error, system will auto-retry
503Service unavailableSystem maintenance in progress

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
submittedSubmitted
processingProcessing
succeedGeneration 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