Lỗi & Debug

Xử lý lỗi và debug issues khi làm việc với BizCity API.

Error Response Format

Khi có lỗi, API trả về JSON object với key error:

json
{
  "error": {
    "code": 401,
    "message": "Invalid API key",
    "type": "authentication_error"
  }
}

HTTP Status Codes

CodeTypeNguyên nhânCách xử lý
400 Bad Request Request body không hợp lệ, thiếu tham số bắt buộc Kiểm tra JSON format, modelmessages bắt buộc
401 Unauthorized API key sai, hết hạn, hoặc bị thu hồi Kiểm tra header Authorization: Bearer biz-...
402 Payment Required Hết credits / vượt monthly quota Nạp thêm credits tại dashboard
403 Forbidden Model bị giới hạn bởi tier, hoặc domain không khớp Nâng cấp tier hoặc kiểm tra domain lock
404 Not Found Endpoint hoặc model không tồn tại Kiểm tra URL và model ID
429 Rate Limited Gửi quá nhiều requests Giảm tần suất, implement exponential backoff
500 Internal Error Lỗi server hoặc upstream provider Retry sau vài giây. Nếu vẫn lỗi → liên hệ support
502 Bad Gateway Upstream provider (OpenRouter) không respond Thử model khác hoặc retry
503 Service Unavailable Server đang bảo trì Retry sau vài phút

Debug Tips

1. Kiểm tra API Key

bash
curl https://bizgpt.vn/wp-json/bizcity/v1/llm/health
# Nếu trả {"status":"ok"} → server hoạt động

curl https://bizgpt.vn/wp-json/bizcity/v1/llm/balance \
  -H "Authorization: Bearer biz-YOUR_KEY"
# Nếu trả balance → key hợp lệ

2. Kiểm tra Model

bash
curl https://bizgpt.vn/wp-json/bizcity/v1/llm/models \
  -H "Authorization: Bearer biz-YOUR_KEY" | jq '.models[] | select(.id == "openai/gpt-4o")'
# Kiểm tra model có khả dụng cho tier của bạn không

3. Retry Strategy

Đối với lỗi 4295xx, implement exponential backoff:

python
import time, random

def call_with_retry(fn, max_retries=3):
    for attempt in range(max_retries):
        try:
            return fn()
        except Exception as e:
            if attempt == max_retries - 1:
                raise
            wait = (2 ** attempt) + random.uniform(0, 1)
            time.sleep(wait)