{"slug":"allowance-schemasure-com-v1-guard-allowance-60d5e3","title":"Decide whether to grant an ERC-20, NFT or Permit2 allowance before signing it","host":"allowance.schemasure.com","method":"POST","resource":"https://allowance.schemasure.com/v1/guard/allowance","category":"market","description":"Decide whether to grant an ERC-20, NFT or Permit2 allowance before signing it. Send owner, token, spender and amount, or the unsigned approve, setApprovalForAll or Permit2 calldata. Returns allow, warn, block or unknown with the allowance already on chain, the requested scope and the rule behind it,","price_listed":0.015,"price_asked":null,"state":"effects","state_label":"Not tested: has real-world effects","checks_7d":0,"answered_7d":0,"latency_ms_median":null,"reported_calls_30d":9,"reported_payers_30d":1,"networks":["eip155:8453"],"badge":"unverified","paid_checks_7d":0,"paid_ok_7d":0,"example_input":{"body":{"calldata":{"data":"0x095ea7b30000000000000000000000002626664c2603336e57b271c5c0b26f421741e4810000000000000000000000000000000000000000000000000000000000000000","from":"0x9F2C5E4A8db1C3a7E6B0d4f8C1E2a5b7D9C0e3F4","to":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}},"bodyType":"json","method":"POST","type":"http"},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Send exactly one of approval or calldata. Unrecognised fields are rejected rather than ignored, so a misspelled amount is an error and not a silently different question.","oneOf":[{"required":["approval"]},{"required":["calldata"]}],"properties":{"approval":{"additionalProperties":false,"description":"The grant you are about to make, described directly.","properties":{"amount":{"description":"Base units, not a human amount: 1 USDC is \"1000000\". Use \"all\" only with kind approval_for_all, and \"0\" to revoke.","examples":["1000000","all","0"],"pattern":"^(?:[0-9]+|0x[0-9a-fA-F]+|all)$","type":"string"},"expiration":{"description":"Unix seconds. Permit2 only: a plain ERC-20 allowance never expires, so declaring one on any other kind is rejected.","type":"string"},"kind":{"default":"erc20","description":"increase and decrease are relative to the allowance already on chain, so their direction is known even when that allowance cannot be read.","enum":["erc20","increase","decrease","approval_for_all","permit2","eip2612"],"type":"string"},"owner":{"description":"The account whose balance the spender would be able to move.","pattern":"^0x[0-9a-fA-F]{40}$","type":"string"},"spender":{"pattern":"^0x[0-9a-fA-F]{40}$","type":"string"},"token":{"description":"The token or NFT collection. For a Permit2 grant this is still the token.","pattern":"^0x[0-9a-fA-F]{40}$","type":"string"}},"required":["owner","token","spender","amount"],"type":"object"},"calldata":{"additionalProperties":false,"description":"The unsigned call you are about to sign. Decodes 7 approval functions.","properties":{"data":{"description":"approve, increaseAllowance, decreaseAllowance, setApprovalForAll, an EIP-2612 permit, or either Permit2 form. Anything else is rejected as UNSUPPORTED and not charged.","pattern":"^0x[0-9a-fA-F]{8,}$","type":"string"},"from":{"pattern":"^0x[0-9a-fA-F]{40}$","type":"string"},"to":{"description":"The token, or Permit2 (0x000000000022D473030F116dDEE9F6B43aC78BA3) for a Permit2 grant.","pattern":"^0x[0-9a-fA-F]{40}$","type":"string"}},"required":["from","to","data"],"type":"object"}},"title":"AllowanceGuardRequest","type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"data_versions":{"type":"object"},"evidence":{"items":{"type":"object"},"type":"array"},"ok":{"type":"boolean"},"policy_version":{"type":"string"},"request_hash":{"type":"string"},"result":{"properties":{"classification":{"description":"scope plus the basis naming the rule that produced it.","properties":{"scope":{"enum":["infinite","effectively_infinite","bounded"],"type":"string"}},"type":"object"},"current":{"description":"The allowance the spender already holds, or null.","type":"object"},"delta":{"description":"increase, decrease, unchanged or unknown, plus whether it raises exposure.","type":"object"},"denylist_hits":{"items":{"type":"object"},"type":"array"},"request":{"description":"The normalised grant: owner, token, spender, amount.","type":"object"},"spender":{"description":"Contract or account, plus proxy status.","type":"object"},"token":{"type":"object"},"unresolved":{"items":{"type":"string"},"type":"array"}},"type":"object"},"risk_codes":{"items":{"type":"string"},"type":"array"},"verdict":{"description":"Precedence: block, then unknown, then warn, then allow. unknown is a real answer and is never a safe one.","enum":["allow","warn","block","unknown"],"type":"string"},"warnings":{"items":{"type":"string"},"type":"array"}},"required":["ok","verdict","result","request_hash","data_versions"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"},"history":[],"description_full":"Decide whether to grant an ERC-20, NFT or Permit2 allowance before signing it. Send owner, token, spender and amount, or the unsigned approve, setApprovalForAll or Permit2 calldata. Returns allow, warn, block or unknown with the allowance already on chain, the requested scope and the rule behind it, whether this raises or lowers exposure, and whether the spender is a contract, upgradeable or denylisted. Returns unknown rather than guessing. Not a guarantee a spender is honest.","last_updated":"2026-09-24T07:39:27.678Z","schemes":["exact"]}