Dành cho AI agent: hướng dẫn từng bước để thiết lập — /docs/agents.md, chỉ mục tài liệu — /llms.txt.

Lỗi và giới hạn

Giới hạn yêu cầu, thời gian chờ và mã lỗi của gateway. Với mỗi phản hồi, chúng tôi nêu rõ khi nào nó xảy ra và cần làm gì: thử lại yêu cầu hay sửa lại yêu cầu.

Giới hạn#

Các con số — từ trường limits trong phản hồi GET /v1/capabilities: ở đó luôn có giá trị mới nhất.

Giới hạnGiá trịKhi vượt quá
Số yêu cầu mỗi phút trên mỗi key120, cửa sổ 60 giây tính từ yêu cầu đầu tiên429 rate_limit_exceeded và header Retry-After; các lỗi 5xx của gateway không tiêu tốn hạn mức
Số yêu cầu đồng thời của tài khoảncó giới hạncác yêu cầu dư sẽ chờ trong hàng đợi; nếu không chờ được — 429 queue_timeout
Kích thước body của yêu cầu16 MiB413
Độ dài phản hồitheo model — bảng bên dướivượt mức trần của model — bị cắt xuống mức trần, không báo lỗi
Key contối đa 50 cho mỗi key quản lý, mỗi key tối đa 120 yêu cầu mỗi phútđể nâng mức trần — hãy liên hệ hỗ trợ

Độ dài phản hồi theo model#

Không có max_tokens, gateway sẽ dùng giá trị mặc định: không streaming — ngắn hơn, để phản hồi kịp trong thời gian timeout, khi streaming — mức trần của model. max_completion_tokens — cùng một trường.

modelMức trầnKhông streamingKhi streaming
MiniMaxAI/MiniMax-M2.7819215008192
deepseek-ai/DeepSeek-V4-Flash-073132768150032768
zai-org/GLM-5.3-Flash819230008192

Timeout#

Giai đoạnGiá trịĐiều gì xảy ra
Chờ có chỗ trong hàng đợi45 giây429 queue_timeout với header Retry-After: 1
Bắt đầu phản hồi từ mạng, streaming150 giây504 upstream_timeout; sẽ trừ ước tính token đầu vào
Bắt đầu phản hồi từ mạng, không streaming150 giây504 upstream_timeout; sẽ trừ ước tính token đầu vào
Tạo phản hồi≈ 300 giâymạng ngắt quá trình tạo: phản hồi đến với finish_reason: length — hãy tiếp tục bằng yêu cầu tiếp theo
Khoảng nghỉ giữa các chunk của stream30 giâyluồng bị đóng: finish_reason: stop trong chunk joingonka-stream-stalled
Tín hiệu hoạt động trong stream15 giâycomment : keep-alive — các client SSE sẽ bỏ qua nó
Mở luồng30 giâytrước thời điểm này lỗi đến dưới dạng mã phản hồi, sau đó — dưới dạng chunk joingonka-error
Phản hồi sớm không streaming90 giâygateway trả về 200 và cứ mỗi 15 giây lại gửi khoảng trắng — JSON vẫn hợp lệ; lỗi sau đó đến trong body với trường error, trạng thái vẫn là 200

Sẽ trừ gì khi timeout

Yêu cầu đã được mạng chấp nhận thì không thể hủy. Khi 504 upstream_timeout, phần ước tính token đầu vào vẫn bị trừ, token đầu ra thì không; gửi lại là một lần trừ mới. Luồng bị ngắt trước usage cuối cùng cũng bị tính phí như vậy. Với câu trả lời dài, hãy dùng stream: true.

Mã lỗi#

Phần thân lỗi là một đối tượng error với các trường message, type, code, param; không phải lỗi nào cũng có đủ các trường. Hãy dựa vào trạng thái và type, đối chiếu thêm bằng code: nội dung message có thể thay đổi. Định dạng Anthropic nằm ở mục Định dạng lỗi Anthropic.

JSON
{
  "error": {
    "message": "Model is currently overloaded in the Gonka network",
    "type": "rate_limit_exceeded",
    "code": "upstream_rate_limited"
  }
}
Phản hồiKhi nàoCần làm gì
400 invalid_request_errorThân yêu cầu không hợp lệ: thiếu messages, message không phải đối tượng, thân không phải JSON; model không xác định — kèm param: model và danh sách model khả dụng trong nội dungSửa yêu cầu theo nội dung lỗi
400 invalid_request_error empty_content_after_normalizationMessage trống sau khi chuẩn hóa — ví dụ chỉ có một hình ảnhThêm văn bản vào message
400 invalid_request_error web_search_privacy_sanitization_not_supportedPlugin web và privacy-sanitization trong cùng một yêu cầuChỉ giữ lại một trong hai
400 invalid_request_error previous_response_id_not_supported conversation_not_supported item_reference_not_supported background_not_supported hosted_tool_choice_not_supportedOpenAI Responses: tham chiếu đến câu trả lời, hội thoại hoặc phần tử đã lưu; chế độ nền; yêu cầu công cụ tích hợpGửi toàn bộ lịch sử trong input
400 api_errorMạng từ chối tham số — ví dụ giá trị reasoning_effort nằm ngoài danh sách của mạngSửa giá trị theo nội dung lỗi
401 authentication_errorKhông tìm thấy key, key đã bị thu hồi hoặc sai định dạngKiểm tra key tại trang gate.joingonka.ai/keys
402 insufficient_fundsSố dư không đủ cho ước tính của yêu cầu; số còn lại nằm ở balance_ngonkaNạp thêm số dư: gate.joingonka.ai/billing
402 insufficient_fundsYêu cầu không có key không đến từ website (is_demo: true)Truyền API key
402 child_key_limit_exceededVượt hạn mức chi tiêu của key — theo ngày, theo tháng hoặc tổng; số còn lại nằm ở daily_remaining, monthly_remaining, total_remainingNâng hạn mức key tại trang gate.joingonka.ai/keys hoặc chờ reset
403 forbiddenKey quản trị gm- trong yêu cầu gọi model; API key dùng cho route chỉ dành cho trang quản lýVới yêu cầu, dùng key jg- hoặc gc-; quản lý tài khoản — trong trang quản lý
404 invalid_request_error model_not_foundGET /v1/models/{model}: model không có trong danh mục hoặc tạm thời bị ẩnLấy id từ GET /v1/models
404 invalid_request_error not_found compact_not_supportedOpenAI Responses: /v1/responses/{id} và các địa chỉ trạng thái khác, /v1/responses/compactTự lưu lịch sử; với Codex CLI hãy đặt id provider riêng
404 invalid_request_errorĐường dẫn không xác địnhKiểm tra phương thức, đường dẫn và địa chỉ cơ sở
413 invalid_request_errorThân yêu cầu vượt giới hạnRút gọn yêu cầu
415 invalid_request_errorThân không phải JSON theo header: cần Content-Type: application/jsonGửi Content-Type: application/json
429 rate_limit_exceededVượt số yêu cầu mỗi phút trên mỗi key; trong thân có rate_limit với limit, remaining, resetChờ đúng số giây trong Retry-After
429 rate_limit_exceeded upstream_rate_limitedModel bị quá tải trên mạng GonkaThử lại sau Retry-After hoặc chọn model khác — Mô hình
429 rate_limit_exceeded queue_timeout queue_fullHết chỗ kết nối mạng: hàng đợi đầy hoặc đã hết thời gian chờThử lại sau Retry-After
500 server_errorLỗi nội bộ của gatewayThử lại sau; nếu lặp lại, hãy liên hệ hỗ trợ và kèm x-request-id
501 not_implementedPOST /v1/embeddings: mạng không có model embeddingDùng dịch vụ embedding khác
502 api_error upstream_unauthorizedProvider của mạng từ chối thông tin xác thực của gateway — key của bạn vẫn ổnThử lại sau một phút
502 api_errorLỗi mạng Gonka; code đến từ mạng, nếu mạng có gửi kèmThử lại sau một khoảng nghỉ hoặc chọn model khác
503 model_unavailable model_outage model_initializing model_unstable model_not_servedModel hiện không khả dụng theo kiểm tra của mạng: sự cố, đang khởi động, không ổn định hoặc không ai vận hành; từ chối ngay, không chờChọn model khác — nội dung lỗi sẽ gợi ý; danh sách ở Mô hình
503 service_unavailableKhông có node khả dụngThử lại sau
504 timeout upstream_timeoutMạng đã nhận yêu cầu nhưng không phản hồi kịp; phần ước tính token đầu vào đã bị trừVới câu trả lời dài, dùng stream: true; gửi lại là một lần trừ mới

Lỗi trong luồng đang mở#

Khi luồng chưa mở, lỗi từ chối đến dưới dạng mã phản hồi thông thường — như khi không dùng stream. Sau khi mở, trạng thái đã là 200, và lỗi đến như sau:

  • Chat Completions — chunk joingonka-error với trường error, rồi ngắt kết nối mà không có [DONE].
  • Không dùng stream sau phản hồi sớm — trạng thái 200 và thân có trường error.
  • Anthropic Messages — sự kiện event: error, rồi luồng đóng lại.
  • OpenAI Responses — sự kiện response.failed, nguyên nhân ở response.error.code.
  • Legacy Completions — data: {"error": …}, rồi [DONE].
SSE
data: {"id":"joingonka-error","object":"chat.completion.chunk","model":"MiniMaxAI/MiniMax-M2.7","choices":[],"error":{"message":"Gonka network error","type":"api_error"}}

Định dạng lỗi Anthropic#

  • POST /v1/messages phản hồi bằng envelope Anthropic: {"type": "error", "error": {"type", "message"}}.
  • Lỗi từ chối của gateway giữ nguyên type từ bảng trên (insufficient_funds, model_unavailable và các loại khác); không có trường code trong envelope này — nguyên nhân nằm trong nội dung.
  • Lỗi hình thức yêu cầu — invalid_request_error: thiếu message hoặc max_tokens, gọi công cụ không có tên, model không xác định.
  • Đường dẫn không xác định — not_found_error, thân quá lớn — request_too_large.
SSE
event: error
data: {"type":"error","error":{"type":"timeout","message":"Upstream timeout"}}

Khi nào nên thử lại#

  • Sau khoảng nghỉ trong Retry-After: 429
  • Với khoảng nghỉ tăng dần — 1, 2, 4 giây và tiếp tục: 500, 502, 503 service_unavailable, 504
  • Với model khác: 503 model_unavailable
  • Không thử lại nguyên trạng — hãy sửa yêu cầu, key hoặc số dư: 400, 401, 402, 403, 404, 413, 415, 501

Mỗi lần thử lại sau 504 là một lần trừ mới cho ước tính đầu vào; với câu trả lời dài, hãy bật stream: true.

Lỗi lặp lại — hãy liên hệ hỗ trợ và kèm x-request-id từ header phản hồi.