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>"
}
}Evaluate a transaction against configured policy and return an attestation (chain-name based, supports EVM and Solana)
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>"
}
}| Field | Type | Required | Description |
|---|---|---|---|
from | string | Yes | User’s wallet address to evaluate |
chain | string | Yes | Chain name (see supported chains below) |
verification_hash | string | Conditional | Your project identifier from the dashboard. Required for offchain integration. |
to | string | Conditional | Your contract address. Required for onchain integration. |
data | string | No | Encoded function call data. Required when using PredicateClient. |
msg_value | string | No | Transaction value in wei. Required when using PredicateClient. |
verification_hash for offchain integration (Phase 1). Use to with your contract address for onchain integration (Phase 2).| Chain | Value |
|---|---|
| Ethereum | ethereum |
| Base | base |
| Arbitrum | arbitrum |
| Hyperliquid | hyperliquid |
| Plume | plume |
| BSC | bsc |
| Plasma | plasma |
| World | worldchain |
| Sepolia | sepolia |
| Solana | solana |
| MegaETH | megaeth |
| MegaETH Testnet | megaeth-testnet |
verification_hash to evaluate compliance without a deployed contract.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"
}'
{
"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..."
}
}
to with your contract address or program ID for onchain enforcement.curl -X POST "https://api.predicate.io/v2/attestation" \
-H "Content-Type: application/json" \
-H "x-api-key: $PREDICATE_API_KEY" \
-d '{
"to": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6",
"from": "0x8ba1f109551bD432803012645Hac136c",
"chain": "base"
}'
data and msg_value for policies that validate function calls.curl -X POST "https://api.predicate.io/v2/attestation" \
-H "Content-Type: application/json" \
-H "x-api-key: $PREDICATE_API_KEY" \
-d '{
"to": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6",
"from": "0x8ba1f109551bD432803012645Hac136c",
"data": "0xa9059cbb000000000000000000000000742d35cc6634c0532925a3b8d4c9db96c4b4d8b6",
"msg_value": "0",
"chain": "base"
}'
{
"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..."
}
}
curl -X POST "https://api.predicate.io/v2/attestation" \
-H "Content-Type: application/json" \
-H "x-api-key: $PREDICATE_API_KEY" \
-d '{
"to": "5iejgxCq2vnpiwWpf4qwziVhbX2irmgMEghBrD9tmk5p",
"from": "8SfpAAUkA4E1ZTSzXiAR51f1iGuVQU4r7kiNUxh7GpVM",
"chain": "solana"
}'
{
"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": "8SfpAAUkA4E1ZTSzXiAR51f1iGuVQU4r7kiNUxh7GpVM",
"signature": "0x5e4f..."
}
}
| Field | Type | Description |
|---|---|---|
policy_id | string | Unique identifier for the policy |
policy_name | string | Human-readable policy name |
verification_hash | string | Project identifier |
is_compliant | boolean | Whether the user passed the policy evaluation |
attestation | object | Signed attestation to submit onchain |
attestation.uuid | string | Unique identifier for replay protection |
attestation.expiration | number | Unix timestamp when the attestation expires |
attestation.attester | string | Address of the Predicate attester |
attestation.signature | string | Cryptographic signature |
Transaction details to evaluate for policy compliance and to issue a chain-appropriate attestation.
End user's wallet address initiating the transaction. This field is used for policy enforcement and compliance checks.
Target blockchain name. Examples: ethereum, sepolia, base, solana.
Your project identifier from the dashboard. Required for interface-only integration. Use this OR 'to', not both.
Your deployed contract or program address. Required for onchain enforcement. Use this OR 'verification_hash', not both.
Encoded transaction payload. Required when using PredicateClient for function call validation.
Native token amount (wei for EVM, lamports for Solana). Required when using PredicateClient.
End-user IP address for geolocation-based policy evaluation.
Successfully evaluated and returned attestation
Evaluation result and attestation payload to embed onchain.
Identifier of the evaluated policy.
Human-readable display name of the policy as configured in the dashboard.
Unique value used to prove contract ownership by setting it as the onchain policyID during onboarding.
True if the request satisfied the configured policy.
Chain‑appropriate attestation fields for onchain verification.
Show child attributes
Was this page helpful?