curl -X POST https://xenarch.dev/v1/gates/7f3a1b2c.../verify \
-H "Content-Type: application/json" \
-d '{"tx_hash": "0xdef456...abc789"}'
{
"access_token": "eyJhbGciOiJIUzI1NiJ9...",
"expires_at": "2026-04-10T15:05:00Z"
}
Gates
Verify Payment
Submit an on-chain transaction hash to verify x402 USDC payment on Base and receive a time-limited bearer access token for gated content.
POST
/
v1
/
gates
/
{gate_id}
/
verify
curl -X POST https://xenarch.dev/v1/gates/7f3a1b2c.../verify \
-H "Content-Type: application/json" \
-d '{"tx_hash": "0xdef456...abc789"}'
{
"access_token": "eyJhbGciOiJIUzI1NiJ9...",
"expires_at": "2026-04-10T15:05:00Z"
}
curl -X POST https://xenarch.dev/v1/gates/7f3a1b2c.../verify \
-H "Content-Type: application/json" \
-d '{"tx_hash": "0xdef456...abc789"}'
{
"access_token": "eyJhbGciOiJIUzI1NiJ9...",
"expires_at": "2026-04-10T15:05:00Z"
}
Verification process
- Fetches the transaction receipt from Base RPC
- Confirms the transaction was sent to the splitter contract and succeeded
- Parses the
Splitevent logs - Verifies the collector matches the publisher’s registered wallet
- Verifies the amount meets or exceeds the gate price
- Creates a
VerifiedPaymentrecord - Returns an HMAC-SHA256 access token
Notes
- Idempotent: submitting the same
tx_hashagain returns the cached token - Replay-safe: a
tx_hashused for one gate cannot be reused for another - Gate must be
pendingand not expired - Access tokens expire after 30 minutes by default