Skip to main content
POST
/
v2
/
attestation
curl --request POST \
  --url https://api.predicate.io/v2/attestation \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "verification_hash": "x-abc123def456",
  "from": "0x8ba1f109551bD432803012645Hac136c",
  "chain": "ethereum"
}
'
{
  "policy_id": "<string>",
  "policy_name": "<string>",
  "verification_hash": "<string>",
  "is_compliant": true,
  "attestation": {
    "uuid": "<string>",
    "expiration": 123,
    "attester": "<string>",
    "signature": "<string>"
  }
}
Request a compliance attestation for a user. The API evaluates the user against your configured policy and returns a signed attestation.

Request Parameters

FieldTypeRequiredDescription
fromstringYesUser’s wallet address to evaluate
chainstringYesChain name (see supported chains below)
verification_hashstringConditionalYour project identifier from the dashboard. Required for offchain integration.
tostringConditionalYour contract address. Required for onchain integration.
datastringNoEncoded function call data. Required when using PredicateClient.
msg_valuestringNoTransaction value in wei. Required when using PredicateClient.
Use verification_hash for offchain integration (Phase 1). Use to with your contract address for onchain integration (Phase 2).

Supported Chains

ChainValue
Ethereumethereum
Basebase
Arbitrumarbitrum
Hyperliquidhyperliquid
Plumeplume
BSCbsc
Plasmaplasma
Worldworldchain
Sepoliasepolia
Solanasolana
MegaETHmegaeth
MegaETH Testnetmegaeth-testnet

Use verification_hash to evaluate compliance without a deployed contract.

Request

cURL
curl -X POST "https://api.predicate.io/v2/attestation" \
  -H "Content-Type: application/json" \
  -H "x-api-key: $PREDICATE_API_KEY" \
  -d '{
    "verification_hash": "x-abc123def456",
    "from": "0x8ba1f109551bD432803012645Hac136c",
    "chain": "ethereum"
  }'

Response

{
  "policy_id": "policy_abc123def456",
  "policy_name": "Standard AML Compliance",
  "verification_hash": "x-abc123def456",
  "is_compliant": true,
  "attestation": {
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "expiration": 1696640400,
    "attester": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
    "signature": "0x1b2c3d4e..."
  }
}

Response Fields

FieldTypeDescription
policy_idstringUnique identifier for the policy
policy_namestringHuman-readable policy name
verification_hashstringProject identifier
is_compliantbooleanWhether the user passed the policy evaluation
attestationobjectSigned attestation to submit onchain
attestation.uuidstringUnique identifier for replay protection
attestation.expirationnumberUnix timestamp when the attestation expires
attestation.attesterstringAddress of the Predicate attester
attestation.signaturestringCryptographic signature

Authorizations

x-api-key
string
header
required

Body

application/json

Transaction details to evaluate for policy compliance and to issue a chain-appropriate attestation.

from
string
required

End user's wallet address initiating the transaction. This field is used for policy enforcement and compliance checks.

chain
string
required

Target blockchain name. Examples: ethereum, sepolia, base, solana.

verification_hash
string

Your project identifier from the dashboard. Required for interface-only integration. Use this OR 'to', not both.

to
string

Your deployed contract or program address. Required for onchain enforcement. Use this OR 'verification_hash', not both.

data
string

Encoded transaction payload. Required when using PredicateClient for function call validation.

msg_value
string

Native token amount (wei for EVM, lamports for Solana). Required when using PredicateClient.

user_ip
string

End-user IP address for geolocation-based policy evaluation.

Response

200 - application/json

Successfully evaluated and returned attestation

Evaluation result and attestation payload to embed onchain.

policy_id
string

Identifier of the evaluated policy.

policy_name
string

Human-readable display name of the policy as configured in the dashboard.

verification_hash
string

Unique value used to prove contract ownership by setting it as the onchain policyID during onboarding.

is_compliant
boolean

True if the request satisfied the configured policy.

attestation
object

Chain‑appropriate attestation fields for onchain verification.