Chuyển tới nội dung chính

Mã lỗi API

Tra cứu theo đúng thông điệp server trả về. Mọi lỗi đều có dạng {"error": "<thông điệp>"} kèm mã HTTP — trang này nói mỗi thông điệp thật sự nghĩa là gì và làm gì tiếp.

Đối tượng: người gọi API và người trực sự cố. Lỗi ở giao diện (không phải API) sắp theo triệu chứng ở Xử lý sự cố. Ma trận quyền: Phân quyền Board.

Đọc mã lỗi trong 10 giây

Nghĩa chungSửa ở đâu
400Dữ liệu bạn gửi saiSửa request
401Chưa xác định được bạn là aiLớp đăng nhập / header Authorization
403Biết bạn là ai, nhưng không đủ quyềnNhờ cấp quyền — không có đường vòng
409Trạng thái hiện tại không cho phép hành động nàyĐổi trạng thái trước, hoặc chấp nhận
429Gửi quá nhanhĐợi vài giây rồi thử lại
500Lỗi phía serverXem log, gọi sysadmin
503Một thành phần phụ thuộc đang vắngKiểm Arkon / storage

400 — dữ liệu gửi sai

Trường bắt buộc và kiểu dữ liệu

Thông điệpNguyên nhânXử lý
title is required and must be a non-empty stringThiếu tiêu đềĐiền title
projectId is invalidSpace không tồn tạiKiểm lại spaceId
description must be at most <N> charactersMô tả quá dàiCắt bớt, đưa phần chi tiết vào Wiki
invalid columnId: must be one of backlog, in-progress, review, doneSai tên cộtDùng đúng 4 giá trị
invalid priority: must be one of low, medium, high, criticalSai mức ưu tiên
invalid agentStatus: must be one of idle, planning, executing, complete, failedSai trạng thái agent
invalid agentType / agent must be a supported agent typeAgent CLI không nằm trong danh sách hỗ trợGET /api/agents xem server đang có gì
linkType must be one of: …Sai loại liên kếtDùng blocks cho quan hệ chặn
mergeStrategy must be one of merge-local, create-pr, manualSai chiến lược hợp nhất

Git và đường dẫn

Thông điệpNguyên nhânXử lý
repoPath must be an absolute path (e.g. ~/projects/my-app …)Nhập đường dẫn tương đốiNhập tuyệt đối; ~ được chấp nhận
repoPath is locked by the task projectSpace khoá đường dẫn repo cho mọi taskSửa ở cấp Space, không sửa từng task
baseBranch is not a valid git ref · branchName contains invalid charactersTên nhánh không hợp lệĐặt tên theo quy tắc git ref
cloneRoot must be an absolute path

Quan hệ giữa task

Thông điệpNguyên nhânXử lý
Cannot link a work item to itself · a task cannot be related to itselfTự trỏ vào chính nó
Cross-project linking is not allowed. Both tasks must belong to the same project.Liên kết task khác SpaceChuyển task về cùng Space trước
Cannot move from <cột-cũ> to <cột-mới>Nhảy cột sai thứ tựCột đi backlog → in-progress → review → done; review còn quay về in-progress được
Task cannot move to done: Human approval is required for this Space.Space bật Human GateĐi qua bước Approve, không có bypass
Cannot run task: blocked by unresolved tasks: […]Blocker chưa doneXong blocker rồi chạy lại — Dependency gating
can only archive completed or failed tasksArchive task đang chạyDừng agent trước

Group và batch

Thông điệpNguyên nhân
children must be an array with at least <N> items · children must have at most <N> itemsSố task con ngoài khoảng cho phép
maxConcurrency must be an integer between 1 and <số task con>Mức song song lớn hơn số task trong Group
batch limit is 50 tasksPOST /api/tasks/batch quá 50 task

Đính kèm

Thông điệpGiới hạn thật
File too large. Maximum size: 10MB10 MB mỗi file
Maximum 10 attachments per task · Too many files. Maximum <N> more allowed10 file mỗi task
No image files provided · file is requiredRequest không kèm file
Unsupported file type: <mime>. Allowed: …Chỉ PNG, JPEG, GIF, WebP, SVG

401 — chưa xác định được danh tính

Thông điệpNguyên nhânXử lý
unauthorizedTriển khai có đặt API_KEY nhưng request thiếu hoặc sai Authorization: Bearer <token>; hoặc JWT của lớp biên không hợp lệGửi đúng token. Ở dev, gọi qua cổng published không phải loopback — dùng AGENTBOARD_DEV_IDENTITY=1 + header giả lập

GET /api/health là endpoint công khai duy nhất, không cần auth — dùng cho script giám sát.

403 — không đủ quyền (fail-closed)

Thông điệpNguyên nhânXử lý
Forbidden: you are not a member of Space "<id>".Chưa có membership. Chưa được cấp thì mặc định cấmNhờ owner cấp quyền, hoặc dùng AGENTBOARD_BOOTSTRAP_OWNERS lần đầu
Forbidden: this action requires the "<role>" role in Space "<id>" (you have "<role>").Đúng Space, sai vai tròNhờ nâng vai trò nếu bạn thực sự là người làm việc đó
Forbidden: this action requires an authenticated human actor.Human Gate — service token phân giải về systemKhông có scope nào vượt được. Chuyển bước này cho người thật
Forbidden: route is not declared in the authorization registry.Route mới chưa khai báo luật quyền — fail-closed theo thiết kếLỗi lập trình: khai báo route trong registry
Task/Draft/Source/Branch does not belong to this SpaceTài nguyên thuộc Space khácKiểm lại spaceId
forbiddenLớp auth từ chối sớmKiểm chuỗi danh tính ở proxy
Không có đường vòng cho 403 của Human Gate

Không có biến môi trường, header hay scope nào cho phép agent, service token hay CI approve thay người. Gặp 403 ở đây là hệ thống đang làm đúng việc của nó.

404 — không tìm thấy

Thông điệpNguyên nhânXử lý
task not found · group not found · project not foundSai id, hoặc tài nguyên đã bị xoáKiểm lại id. Task đã archive vẫn tồn tại — bật Show Archived để thấy

409 — trạng thái không cho phép

Thông điệpNguyên nhânXử lý
agent already running for this taskMỗi task một agent tại một thời điểmĐợi, hoặc POST /:id/stop
agent is already running for this task; use the message endpointMuốn bổ sung yêu cầu giữa chừngPOST /api/tasks/:id/message
no running agent for this taskDừng hoặc nhắn khi không có gì đang chạyKiểm GET /:id/status
run already claimedBấm Run dồn hai lầnĐợi vài giây rồi kiểm status
task is no longer eligible to startTrạng thái đã đổi giữa lúc gửi requestTải lại rồi thao tác lại
agent <tên> is not readyCLI chưa sẵn sàng trên serverGET /api/agents; production build từ Dockerfile.agents
group is already runningGroup đang chạyDừng Group trước
project must have a repository path before coding work can startSpace chưa gắn repoĐặt repoPath cho Space
repoPath cannot be changed after tasks or groups existĐổi repo sau khi đã có việcTạo Space mới cho repo mới
cannot remove the last owner of a SpaceChống tự khoáCấp owner cho người khác trước
the default project cannot be deleted · project cannot be deletedSpace mặc định hoặc còn dữ liệu
a template with that name already exists · Agent profile with name <tên> already existsTrùng tênĐổi tên
only failed or timed-out orchestrations can be retriedRetry sai lúc
idempotency key was already used for a different orchestration requestDùng lại Idempotency-Key cho request khácSinh key mới

429 — gửi quá nhanh

Thông điệpXử lý
too many requests, try again shortly · Rate limited — wait a few secondsĐợi vài giây. Script tự động nên có backoff; đừng retry ngay lập tức vì sẽ kéo dài thời gian bị chặn

500 / 503 — lỗi phía server

Thông điệpNguyên nhân hay gặpXử lý
Failed to apply plan: <chi tiết>Plan có vòng phụ thuộc hoặc tham chiếu task không tồn tạiSửa trong trình soạn plan rồi apply lại
<X> repository not configuredThành phần lưu trữ chưa được nối lúc khởi độngLỗi cấu hình server — gọi sysadmin
create/execution/retry attempt references a missing taskTask bị xoá giữa chừngTải lại danh sách
failed to update/archive/unarchive taskLỗi ghi databaseXem log server
Wiki space not linked or offline (400) · Task ⇄ wiki link storage is unavailable (503)Arkon vắng mặt hoặc Space chưa nối WikiSuy biến mềm Arkon
Failed to approve draft: … (502)Arkon từ chối quyền — đây là cổng của Arkon, không phải của BoardKiểm vai trò Arkon + đợi một nhịp reconciler. Không đặt role='admin' trong Arkon để chữa: làm vỡ lọc department, mở Wiki mọi Space. Xem Phân quyền Arkon
Tạo Space trả 500 ở môi trường dev

Gần như luôn là lệch ARKON_SSO_SHARED_SECRETSSO_SHARED_SECRET: host gọi qua cổng published thì Docker NAT, Arkon không thấy đó là loopback nên provisioning nhận 403 và Board trả 500. Chạy lại ./scripts/dev.sh deps up để nó ghi đúng giá trị.