80trust / 100

Crypto Typed Data Hash

by API Acre in Onchain & crypto

x402 APIPassing, checked 1 h ago

Validate EIP-712 typed structured data and derive its domain separator, message hash, and signing digest.

POST https://apiacre.com/v1/crypto/typed-data-hash

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
100%
Response time
72 ms typical, 72 ms slowest 5%
Last check
1 h ago
Next check
any minute now

How to call it

# See the payment challenge (nothing is charged)
curl -i -X POST "https://apiacre.com/v1/crypto/typed-data-hash" \
  -H "content-type: application/json" \
  -d '{"typed_data":{"domain":{"name":"API Acre Example"},"message":{"contents":"Hello"},"primaryType":"Message","types":{"EIP712Domain":[{"name":"name","type":"string"}],"Message":[{"name":"contents","type":"string"}]}}}'
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client().register(
  "eip155:8453",
  new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Fapiacre.com%2Fv1%2Fcrypto%2Ftyped-data-hash
const res = await pay("https://apiacre.com/v1/crypto/typed-data-hash", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({"typed_data":{"domain":{"name":"API Acre Example"},"message":{"contents":"Hello"},"primaryType":"Message","types":{"EIP712Domain":[{"name":"name","type":"string"}],"Message":[{"name":"contents","type":"string"}]}}}),
});
console.log(await res.json());

Example input

{
  "typed_data": {
    "domain": {
      "name": "API Acre Example"
    },
    "message": {
      "contents": "Hello"
    },
    "primaryType": "Message",
    "types": {
      "EIP712Domain": [
        {
          "name": "name",
          "type": "string"
        }
      ],
      "Message": [
        {
          "name": "contents",
          "type": "string"
        }
      ]
    }
  }
}

Example output

{
  "data": {
    "domainSeparator": "0xc167959bdf834486717879a8cd6eb3e12a864d1b1d7dbcecec40455e1b4bc8c8",
    "messageHash": "0xd6a9eadbfb49313d8b83d02d2bb22b916a5b16e6006946c9ca6fa7959d934b3a",
    "primaryType": "Message",
    "signingHash": "0x7433e410d5f2857cb42d0bfd31bc71e8aa553f02ce0eed397927f01dfb46424c",
    "valid": true
  },
  "meta": {
    "cached": false,
    "duration_ms": 42,
    "next_actions": [],
    "sources": [],
    "warnings": []
  },
  "request_id": "018f1f54-7f38-7ba2-8dc3-5f90272d9f1a",
  "service": "crypto.typed-data-hash",
  "version": "1"
}

Security scan

  • No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTimePrice
1 h agoPassed40272 ms$0.01
6 h agoPassed40278 ms$0.01