Trust & Verification

Integritas Provenance

Blockchain-verified proof of every x402 payment settlement, powered by Integritas and the Minima blockchain

RelAI settlement provenance can be hashed and anchored on the Minima blockchain via Integritas. This creates an immutable, independently verifiable record of every settlement - who paid, who received, how much, on which network, and when.

Integritas stamp receipts are buyer-controlled. Consumers opt in per request, choose a settlement flow, and receive stamp metadata in the payment response headers.

How It Works

1

Buyer opts in and chooses flow

Client sends X-Integritas: true and X-Integritas-Flow: single|dual

2

User pays via x402

An EIP-3009 signature or Solana transaction is submitted to the RelAI Facilitator

3

Facilitator settles on-chain

Payment is executed on the target blockchain (SKALE, Base, Avalanche, Solana, etc.)

4

Settlement data is hashed

SHA3-256 hash is computed from: network, txHash, payer, payTo, amount, timestamp

5

Hash is anchored on Minima

Integritas stamps the hash on the Minima blockchain, creating an immutable record

6

Metadata returned to client

The settle result is propagated via PAYMENT-RESPONSE / X-PAYMENT-RESPONSE, including tx hash and optional Integritas receipt payload

Enable Integritas & Choose Flow

Integritas is optional per request. To enable stamping, set the Integritas header and pick a flow. In the dashboard Endpoint Form, enabling the Integritas switch now requires selecting a flow.

Required request headers

X-Integritas: true
X-Integritas-Flow: single | dual

Flow behavior

  • single (single-signature): one user signing action. Settlement includes split metadata and fee validation. On EVM, facilitator collects total then splits merchant + Integritas fee (and can retain facilitator fee). On Solana, one transaction contains multiple SPL transfer legs (merchant + Integritas fee, plus optional collector leg). Wallet UIs usually show net balance change, so displayed debit can be lower than total split if one leg returns to the signer.
  • dual: network-specific legacy path. On EVM this uses separate base and Integritas fee accepts. On Solana this falls back to surcharge mode when single flow is not selected.

Example

curl -X POST https://api.relai.fi/relay/<apiId>/<path> \
  -H "Authorization: Bearer <token>" \
  -H "X-Integritas: true" \
  -H "X-Integritas-Flow: single"

Fee Model

Integritas has two fee components:

  • - integritasFeeAmount: stamp/provenance fee sent to Integritas fee wallet.
  • - integritasFacilitatorFeeAmount: optional facilitator compensation for split transfer execution costs.

Single flow total

totalAmount = baseAmount + integritasFeeAmount + integritasFacilitatorFeeAmount

Environment configuration

# Integritas fee (stamp)
INTEGRITAS_FEE_AMOUNT=
INTEGRITAS_FEE_WALLET=
INTEGRITAS_FEE_WALLET_EVM=
INTEGRITAS_FEE_WALLET_SOLANA=

# Optional facilitator compensation
INTEGRITAS_FACILITATOR_FEE_AMOUNT=0
INTEGRITAS_FACILITATOR_FEE_AMOUNT_EVM=0
INTEGRITAS_FACILITATOR_FEE_AMOUNT_SOLANA=0

What Gets Stamped

The provenance hash is a deterministic SHA3-256 of the following settlement fields:

FieldDescription
networkBlockchain network (e.g. skale-base, solana, base)
txHashOn-chain transaction hash of the settlement
payerWallet address of the payer (API consumer)
payToWallet address of the recipient (API provider)
amountPayment amount in atomic units (e.g. USDC with 6 decimals)
timestampISO 8601 timestamp of when the settlement occurred

Because all fields are included in the hash, any modification to even a single field would produce a completely different hash, making tampering detectable.

Verify a Settlement

Anyone can verify that a settlement was legitimately recorded. There are two ways:

1. Via RelAI API

GET https://api.relai.fi/provenance/verify?hash=<sha256hex>

2. Directly via Integritas

POST https://integritas.minima.global/core/v2/verify/file
Headers:
  Content-Type: application/json
  x-api-key: <your-integritas-api-key>
Body:
  { "hash": "<sha256hex>" }

API Reference

Integritas request headers

These headers are sent to paid relay endpoints when buyers enable Integritas stamp:

X-Integritas: true
X-Integritas-Flow: single | dual

GET/provenance/verify

Verify a provenance hash against the Integritas blockchain records. Returns full verification details.

Query Parameters

hash (required) - SHA3-256 hex string to verify

Example

curl https://api.relai.fi/provenance/verify?hash=a1b2c3...

Response:
{
  "hash": "a1b2c3...",
  "verified": true,
  "details": { ... }
}

GET/provenance/check

Quick check whether a hash exists on the blockchain. Returns a simple found/not-found result.

Query Parameters

hash (required) - SHA3-256 hex string to check

Example

curl https://api.relai.fi/provenance/check?hash=a1b2c3...

Response:
{
  "hash": "a1b2c3...",
  "found": true,
  "details": { ... }
}

POST/provenance/compute

Compute the provenance hash from settlement data. Useful for client-side verification - reproduce the same hash yourself.

Request Body

{
  "network": "skale-base",
  "txHash": "0xabc123...",
  "payer": "0x1234...",
  "payTo": "0x5678...",
  "amount": "100",
  "timestamp": "2026-02-14T00:00:00.000Z"
}

Response

{
  "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}

Reproduce the Hash Locally

The provenance hash is fully deterministic. You can reproduce it locally using any SHA3-256 implementation:

JavaScript / Node.js

import crypto from 'crypto';

const payload = JSON.stringify({
  network: "skale-base",
  txHash: "0xabc123...",
  payer: "0x1234...",
  payTo: "0x5678...",
  amount: "100",
  timestamp: "2026-02-14T00:00:00.000Z"
});

const hash = crypto.createHash("sha3-256").update(payload).digest("hex");
console.log(hash);
// Then verify: GET /provenance/check?hash=<hash>

Python

import hashlib, json

payload = json.dumps({
    "network": "skale-base",
    "txHash": "0xabc123...",
    "payer": "0x1234...",
    "payTo": "0x5678...",
    "amount": "100",
    "timestamp": "2026-02-14T00:00:00.000Z"
}, separators=(',', ':'))

hash = hashlib.sha3_256(payload.encode()).hexdigest()
print(hash)

Settlement Response

For successful paid calls, middleware returns base64-encoded JSON in PAYMENT-RESPONSE (and X-PAYMENT-RESPONSE). This payload includes transaction metadata and optional Integritas fields:

PAYMENT-RESPONSE: base64({
  x402Version,
  scheme,
  network,
  transaction,
  payer,
  amount,
  asset,
  splitTransfers?,
  integritasFeePaid?,
  provenance?,
  integritas?
})

In the Dashboard endpoint tester, this decoded payload is shown under paymentMeta in the response panel.

{
  "success": true,
  "transaction": "p9hge2...",
  "transactionHash": "p9hge2...",
  "network": "solana",
  "payer": "GH93...",
  "integritasFeePaid": true,
  "splitTransfers": {
    "combinedTx": "p9hge2..."
  },
  "provenance": {
    "provenanceHash": "e3b0c44298fc1c149afb...",
    "timestamp": "2026-02-20T13:11:38.128Z",
    "verifyUrl": "https://api.relai.fi/provenance/verify?hash=..."
  },
  "integritas": {
    "hash": "be55eb0dc80c5c4b...",
    "timestamp": "2026-02-20T13:11:38.128Z",
    "network": "solana",
    "txHash": "p9hge2...",
    "payer": "GH93...",
    "payTo": "D1rU...",
    "amount": "1200",
    "feeAmount": "1000",
    "stamped": true,
    "stampData": { "status": "success", "data": { "service": "MINIMA_NODE" } }
  }
}

provenance is present when API-level provenance is enabled.integritas is present when buyer opt-in stamping is requested and completed. Together, these fields provide auditable settlement proof and optional Integritas receipt details.

About Integritas

Integritas is a middleware solution for real-time data verification and validation, built on the Minima blockchain. It provides tamper-proof timestamping, hash verification, and cryptographic proof generation.

Key Features

  • - Data hashing and blockchain anchoring in real time
  • - Hash verification against on-chain records
  • - NFT and PDF report generation for audit trails
  • - API v2 with stamp, verify, and check endpoints
  • - MCP server for AI agent integration

For more information, visit the Integritas documentation.