Skip to main content
POST
EIP-712 Signature Security
Request fields accept both camelCase and snake_case. See Request Field Names.
Analyze an EIP-712 typed-data signing request before the user signs it. The response is a risk assessment with an actionable recommendation. Typical findings: unlimited permits, a login message that actually approves transfers, a blacklisted spender, or a suspicious marketplace order.

Request Notes

  • eip712Message — pass through as the dApp sent it to the wallet (types must include EIP712Domain, plus primaryType, domain, and message).
  • url — send it whenever you have it. Without it, the blacklisted-URL checkpoint cannot fire.
  • chainId — integer. e.g. 1 for Ethereum.

Response Notes

Use this field as the decision. Do not compute your own cutoff from overall_score — that mapping can change. A single severe finding is enough to reach BLOCK. Do not treat risk_details as a tally.

intent

What the user is actually signing.

Risk Level Scale

Used for overall_risk_level and every nested risk_level. overall_score is the maximum checkpoint score (0–5).

risk_details

Each item is a checkpoint that fired. The array is empty when nothing fired. Branch on name, not on description. Identifiers are stable; wording is not. Which time-window checkpoint applies depends on intent (approval vs marketplace order vs login). You do not need to pick one — the response names the checkpoint that fired.

entities

Risk enrichment for addresses extracted from the message, plus the URL and verifying contract when those apply. A missing entities.url means either no url was supplied, or enrichment was unavailable. Threat-intelligence timeouts do not turn the call into a 500 — the response is still served from structural analysis.

Headers

X-API-KEY
string
required

Your HashDit API key

Body

application/json

EIP-712 typed-data payload. Pass eip712Message through as the dApp sent it to the wallet.

address
string
required

Signer's wallet address.

Example:

"0x1d99c0ac928f58595b9d060c79f799fa38d171f4"

chainId
integer
required

Chain of the signing request.

Example:

1

eip712Message
object
required

Standard EIP-712 typed-data payload. Pass through whatever the dApp handed the wallet.

url
string

URL of the dApp requesting the signature. Enables domain-reputation checks. Send it whenever you have it.

Example:

"https://app.uniswap.org"

Response

Successful response. Envelope is {code, status, data}. Use data.recommended_action as the decision.

code
string

API status code. "0" indicates success.

Example:

"0"

status
string
Example:

"ok"

data
object