Errors
Every 402, 403, and 451 body carries an error object with code, message, hint, and docsUrl. The catalog below is generated from ERROR_CODES in @tollgatepay/core/types/errors at build time.
Error slugs (the tail segment of docsUrl) are stable. HTTP responses hard-code them; never rename one without a migration plan.
Catalog
NO_IOU_HEADER— Missing x-tollgate-iou headerINVALID_IOU— IOU failed schema validationINVALID_SIGNATURE— EIP-712 signature did not recover to the claimed agent addressINVALID_API_KEY— apiKeyHash in IOU did not match expected HMACSALT_ROTATED— Developer salt has rotated; previously-fetched 402 response is staleEXPIRED_IOU— IOU deadline is in the past (or outside the clock-skew window)NONCE_REUSED— Nonce already consumed for this (agent, developer, path)INSUFFICIENT_ALLOWANCE— Agent's on-chain USDC allowance to the developer is below amountMicrosBLACKLISTED— Agent address is blacklistedEXPOSURE_EXCEEDED— Agent exposure cap exceeded for this developerAMOUNT_NOT_MONOTONIC— IOU cumulative amount is less than the previously observed cumulativeAMOUNT_MISMATCH— IOU delta (current - previous) does not match this request's advertised priceNOT_EOA— Agent address has code on chain — EIP-712 signatures from contracts are not acceptedPATH_APPEARS_DYNAMIC— Canonicalized path contains UUID/numeric segments that look dynamicPATH_INVALID— Request path cannot be canonicalizedPATH_MISMATCH— IOU path does not match request path after canonicalizationUNSUPPORTED_CHAIN— chainId is not supportedUNSUPPORTED_CHAIN_TESTNET— Facilitator is in testnet mode — only Base Sepolia (chainId 84532) is acceptedMODE_MISMATCH— Client/server Tollgate mode mismatch (production vs testnet)GEO_BLOCKED— Requests from this jurisdiction are not supported at launchMISSING_AUTH— Request is missing an Authorization headerMALFORMED_KEY— Bearer key did not match the Tollgate API-key formatUNKNOWN_KEY— Bearer key is not recognizedKEY_REVOKED— API key has been revokedSCOPE_INSUFFICIENT— API key scope does not cover this routeACCOUNT_FROZEN— Developer account is frozenFACILITATOR_UNAVAILABLE— Facilitator is temporarily unreachable