Bỏ qua đến nội dung
CargoDuo logoCargoDuo
Bảng giá

Lỗi

Một cấu trúc lỗi duy nhất, mã lỗi ổn định, quy tắc thử lại rõ ràng.

Mọi phản hồi có mã ngoài 2xx đều có cùng một cấu trúc. Hãy xử lý lỗi dựa vào error.code, không bao giờ dựa vào message.

JSON
{
  "error": {
    "code": "validation_failed",
    "message": "The request is invalid.",
    "request_id": "req_8fK2Lq9ZtX4mN7bV1cW3yH6p",
    "details": [
      {
        "path": "items[3].length",
        "code": "out_of_range",
        "message": "length must be greater than 0."
      }
    ]
  }
}
TrườngNội dung
codeỔn định, dạng snake_case
messageTiếng Anh, dùng cho log
request_idCũng có trong X-Request-Id. Cung cấp mã này khi liên hệ hỗ trợ
details[]Với 400/422: path, code, message cho từng lỗi

Mã lỗi

Trạng tháiMãÝ nghĩaCách xử lýThử lại
400invalid_jsonNội dung không phải JSON hợp lệ hoặc có trường sai kiểu.Sửa nội dung yêu cầu.Không
401unauthorizedThiếu khóa API, khóa sai định dạng hoặc không xác định.Gửi header Authorization: Bearer cd_live_…; kiểm tra xem khóa đã được sao chép đầy đủ chưa.Không
401key_revokedKhóa đã bị thu hồi.Tạo khóa mới trong console dành cho nhà phát triển.Không
401key_expiredKhóa đã quá ngày hết hạn.Tạo khóa mới trong console dành cho nhà phát triển.Không
402insufficient_creditsCredit khả dụng không đủ cho lần chạy rẻ nhất có thể của tác vụ này.Mua gói credit hoặc chờ credit hằng tháng; bạn chưa bị trừ credit nào.Không
403ip_not_allowedIP gọi đến không nằm trong danh sách IP được phép của khóa.Gọi từ một IP được phép hoặc sửa danh sách IP được phép.Không
403subscription_inactiveTổ chức không có gói đăng ký đang hoạt động nào bao gồm API.Gia hạn gói đăng ký.Không
403account_inactiveTổ chức bị tạm ngưng, hoặc không có chủ sở hữu nào có tài khoản đang hoạt động.Liên hệ bộ phận hỗ trợ.Không
403scope_missingKhóa thiếu phạm vi quyền mà endpoint này yêu cầu.Dùng khóa có phạm vi quyền cần thiết (pack:write, jobs:read, account:read, resources:read, resources:write).Không
403preset_read_onlyKhông thể thay đổi hoặc xóa xe thiết lập sẵn.Tạo xe riêng bằng POST /v1/vehicles.Không
403plan_limit_reachedGói của tổ chức không cho phép thêm dự án hoặc kiện hàng.Xóa các dự án không còn cần, hoặc chuyển sang gói lớn hơn.Không
404not_foundKhông có endpoint /v1 nào khớp với phương thức và đường dẫn này.Đối chiếu phương thức và đường dẫn với danh sách endpoint.Không
404job_not_foundTổ chức của bạn không có tác vụ nào với ID này.Kiểm tra lại ID.Không
404vehicle_not_foundKhông có xe nào với ID này trong số xe thiết lập sẵn hoặc xe của tổ chức.Đối chiếu ID với GET /v1/vehicles.Không
404template_not_foundTổ chức của bạn không có mẫu hàng nào với ID này.Đối chiếu ID với GET /v1/templates.Không
404project_not_foundTổ chức của bạn không có dự án nào với ID này.Đối chiếu ID với GET /v1/projects.Không
409job_not_finishedTác vụ vẫn đang chờ hoặc đang chạy.Gọi GET /v1/jobs/{id} định kỳ cho đến khi status là succeeded.Có
409project_busyDự án đang được xếp hàng (trong ứng dụng hoặc bởi một tác vụ khác).Chờ lượt chạy đó kết thúc rồi thử lại.Có
409job_failedTác vụ thất bại; không có kết quả.Đọc job.error; lỗi từ phía chúng tôi không bị tính phí (time_limit_exceeded được tính phí như tác vụ bị hủy) — gửi lại nếu nguyên nhân chỉ là tạm thời.Không
409job_canceledTác vụ đã bị hủy; không có kết quả.Gửi lại nếu cần.Không
409job_already_finishedTác vụ đã kết thúc và không thể hủy.Không cần làm gì.Không
400idempotency_key_invalidHeader Idempotency-Key dài hơn 128 ký tự.Dùng khóa ngắn hơn (UUID là đủ).Không
410result_expiredKết quả đã quá thời gian lưu trữ và đã bị xóa.Gửi lại tác vụ nếu bạn cần sơ đồ lần nữa.Không
413payload_too_largeNội dung yêu cầu vượt quá 10 MB.Gửi ít kiện hàng hơn hoặc đơn giản hóa chúng.Không
422validation_failedYêu cầu là JSON đúng cú pháp nhưng mô tả một tác vụ không hợp lệ. details[] liệt kê mọi lỗi.Sửa từng trường được chỉ ra trong details[].path; lỗi kiểm tra hợp lệ không bị tính phí.Không
429rate_limitedQuá nhiều yêu cầu trong phút, giờ hoặc ngày hiện tại (theo khóa hoặc theo tổ chức), hoặc có hơn 60 lần xác thực thất bại mỗi phút từ địa chỉ IP của bạn.Chờ số giây trong Retry-After, rồi thử lại với backoff.Có
429too_many_jobsTổ chức đã đạt số tác vụ tối đa đang chờ + đang chạy.Chờ các tác vụ đang chạy hoàn tất rồi thử lại.Có
500internal_errorĐã xảy ra lỗi ở phía chúng tôi.Thử lại với backoff; nếu lỗi vẫn tiếp diễn, hãy cung cấp request_id.Có
503api_disabledAPI tạm thời bị tắt (bảo trì) hoặc đã bị tắt cho tổ chức.Thử lại sau.Có

Chi tiết lỗi kiểm tra hợp lệ

details[].code khi gặp 422 validation_failed:

MãÝ nghĩa
requiredThiếu một trường bắt buộc
invalid_valueSai kiểu hoặc không thuộc các giá trị cho phép
out_of_rangeQuá nhỏ, quá lớn hoặc quá dài
duplicate_idMột ID bị dùng hai lần
unknown_vehicleKhông có xe thiết lập sẵn hay xe nào của bạn với vehicle_id này
unknown_templateKhông có mẫu hàng nào của bạn với template_id này
type_not_allowedLoại xe chưa được bật cho tổ chức của bạn
unknown_groupKiện hàng tham chiếu một nhóm không có trong danh sách
does_not_fitKiện hàng không vừa với xe nào đã khai báo
too_many_itemsSố kiện vượt giới hạn của tác vụ
too_many_vehiclesSố xe vượt giới hạn của tác vụ
unknown_fieldTrường mà API không nhận biết

Lỗi của tác vụ

Tác vụ failed hoặc canceled cho biết lý do trong job.error.code:

MãÝ nghĩa
canceledBị hủy bằng DELETE /v1/jobs/{id}. Tính phí cơ bản + phần tính toán đã dùng.
time_limit_exceededHết thời gian tính toán trước khi xếp xong bất kỳ xe nào. Tính phí như tác vụ bị hủy: phí tác vụ, phụ phí tải lớn và phần tính toán đã dùng, không bao giờ tính phí theo xe.
engine_failedThuật toán xếp hàng gặp lỗi. Không tính phí.
queue_timeoutTác vụ chờ tài nguyên tính toán quá lâu. Không tính phí.
server_restartedDịch vụ khởi động lại khi tác vụ đang chờ hoặc đang chạy. Không tính phí.

Thử lại

Thử lại khi gặp 429, 500 và 503 theo cơ chế exponential backoff, tuân theo Retry-After. Gửi cùng Idempotency-Key (Idempotency). Với các mã 4xx khác, không bao giờ gửi lại yêu cầu y nguyên.

Liên quan