# Error Codes

HWLAB uses JSON-RPC standard errors plus a reserved HWLAB server-error range.

| Code | Name | Meaning |
| --- | --- | --- |
| `-32700` | `parse_error` | Invalid JSON payload. |
| `-32600` | `invalid_request` | Invalid JSON-RPC envelope. |
| `-32601` | `method_not_found` | Method is unknown to the target service. |
| `-32602` | `invalid_params` | Method parameters failed validation. |
| `-32603` | `internal_error` | Unexpected service failure. |
| `-32000` | `hwlab_unknown` | Unclassified HWLAB runtime error. |
| `-32010` | `project_not_found` | Project ID is not known or not visible. |
| `-32011` | `session_not_found` | Gateway, agent, or worker session is missing. |
| `-32020` | `capability_unavailable` | Requested hardware capability is unavailable. |
| `-32021` | `resource_locked` | Box resource is already reserved or running. |
| `-32022` | `wiring_invalid` | Wiring config violates topology constraints. |
| `-32023` | `operation_rejected` | Hardware operation cannot be accepted. |
| `-32030` | `evidence_missing` | Required evidence record was not produced. |
| `-32040` | `audit_required` | A mutating action was attempted without audit metadata. |

Error responses must include `error.message`. `error.data` should carry stable
machine-readable fields such as `projectId`, `sessionId`, `resourceId`, or
`operationId` when available.
