Error Codes

SDK errors (TypeScript)

These errors are thrown by the SDK during issuance. They fire before any signing occurs — invalid chains cannot be created.

CodeThrown byDescriptionFix
MISSING_CONSENTissueRootDelegationHuman-rooted delegation issued without a consent fieldAdd consent to issueRootDelegation params
POLICY_ESCALATIONissueSubDelegationChild policy field exceeds parent constraintReduce the escalating field to be within parent bounds
TEMPORAL_BOUNDS_VIOLATIONissueSubDelegationnbf < parentNbf or exp > parentExpAdjust temporal bounds to be nested within parent bounds
INVALID_OPERATOR_CONFIGvalidateOperatorConfig, parseOperatorConfigMissing required field or invalid valueCheck the field named in the error message

Verification errors (Go — returned as HTTP 403 JSON)

These errors are returned by verify_chain when a bundle fails verification.

CodeBlockDescription
BUNDLE_INCOMPLETEABundle has no receipts or is missing the invocation receipt
ISSUER_AUDIENCE_GAPBreceipts[i].audreceipts[i+1].iss
CHAIN_HASH_MISMATCHBprev_dr_hash does not match SHA-256 of previous DR JWT bytes
DR_CHAIN_MISMATCHBinvocation.dr_chain[i] does not match SHA-256 of receipts[i] JWT bytes
INVALID_JWT_HEADERCJWT header is not {"alg":"EdDSA","typ":"JWT"}
DID_UNRESOLVABLECIssuer DID could not be resolved to an Ed25519 public key
SIGNATURE_INVALIDCEd25519 signature verification failed
SIGNATURE_MALLEABILITYCSignature rejected: S ≥ L (strict mode violation)
POLICY_VIOLATIONDInvocation args exceed a policy constraint
POLICY_ESCALATIONDSub-DR policy escalates beyond parent policy
RECEIPT_NOT_YET_VALIDEnow < receipt.nbf
RECEIPT_EXPIREDEnow > receipt.exp
TEMPORAL_BOUNDS_VIOLATIONESub-DR temporal bounds not nested within parent bounds
RECEIPT_REVOKEDFReceipt found in Bitstring Status List

HTTP 403 response body format

{
  "valid": false,
  "error": "CHAIN_HASH_MISMATCH",
  "block": "B",
  "message": "prev_dr_hash mismatch at chain index 1: expected sha256:abc123..., got sha256:def456..."
}

The message field always contains a full English sentence with diagnosis. The block field (A–F) tells you which verification stage failed.