Attestation

Issue an EIP-712 signed risk attestation for on-chain use

Signs a four-field struct a smart contract can verify, so a protocol can gate on our risk reading without trusting an HTTP response. Valid for 600 seconds; there is no nonce and no revocation channel, so that window is the only bound on acting on a stale verdict.

attestation is exactly what the contract expects. The risk detail beside it is UNSIGNED context for humans and off-chain callers — it is not part of what the signature covers.

bitcoin cannot be attested at all: the struct types the subject as a Solidity address, which cannot hold a base58 or bech32 address. This endpoint also accepts the testnets SEPOLIA and NILE.

The signed payload format is FROZEN — an extra field would change the hash and break every deployed verifier.

post/v1/attest

Request

  • Base URL: https://intelapi.publicaml.org
  • URL: https://intelapi.publicaml.org/v1/attest
  • Auth: one of:
    • API key in header X-API-Key
    • none

Request body

wallet_addressstring required

The address to look up, in its normal display form.

  • bitcoin — base58 (1…, 3…) or bech32/bech32m (bc1…, bc1p…). Case is SIGNIFICANT for base58; do not lowercase it. A 64-character lowercase TRANSACTION HASH is also accepted here: on bitcoin the graph is bipartite (address → transaction → address), so a transaction is a node with its own neighbours and its own findings. CoinJoin is classified on the transaction, not on the participants, and this is how you read it.
  • ethereum, bsc — 0x + 40 hex characters, any case.
  • tron — base58 (T…, 34 characters); the 0x 20-byte form is accepted too and is what the API stores and echoes.
chain'ethereum' | 'bsc' | 'tron' | 'SEPOLIA' | 'NILE' required

bitcoin is not attestable — see the description. SEPOLIA and NILE are testnets.

includestring[]

Echo the full EIP-712 payload, as a debugging aid.

Response

The signed attestation.

statusstring
messagestring

Changes

No recorded changes to this operation across all 1 revision of this API.