# Its-Mine — Proof of Existence on Algorand > Cryptographic timestamping service. Proves that a document existed at a specific moment in time, recorded immutably on the Algorand blockchain via the x402 payment protocol. Its-Mine lets any user or AI agent timestamp a document by sending its SHA-256 hash to the Algorand blockchain. Payment (0.05 USDC) is handled automatically via x402 — no account, no subscription. Verification is free and public forever. ## Key facts - Network: Algorand Testnet - Cost: 0.05 USDC per timestamp (ASA 10458941 on Testnet) - Payment protocol: x402 v2 (HTTP 402 → PAYMENT-SIGNATURE header) - Certificate: PDF delivered as base64 in the API response - File privacy: only the SHA-256 hash is ever sent — the file never leaves the client ## API endpoints (base URL: https://pronodealgo.xyz/its-mine/api) ### POST /timestamp Timestamp a document hash. Requires x402 payment (0.05 USDC). Request body (JSON): hash string required SHA-256 hex hash of the document (64 chars) filename string optional Original file name filesize number optional File size in bytes description string optional Free text, max 100 chars, stored on-chain Flow: 1. Send POST without payment → server replies 402 with PAYMENT-REQUIRED header (base64-JSON) 2. Build and sign Algorand USDC transfer transaction 3. Retry POST with PAYMENT-SIGNATURE header (base64-JSON) Response 200 (success): { txId, block, createdAt, explorerUrl, certificate (base64 PDF) } Response 409 (already timestamped): { existing: { txId, block, createdAt, explorerUrl }, certificate (base64 PDF) } ### GET /verify/:hash Public, free. Check if a SHA-256 hash has been timestamped. Response: { verified: bool, hash, txId, block, createdAt, explorerUrl, filename } ### GET /stats Returns service wallet address and explorer URL. ## Node.js integration (AI agents) Install: npm install @x402-avm/fetch @x402-avm/avm algosdk Environment (.env): AVM_PRIVATE_KEY= # Wallet must hold USDC on Algorand Testnet (opt-in ASA 10458941) Code: import { wrapFetchWithPayment, x402Client } from '@x402-avm/fetch' import { ExactAvmScheme, toClientAvmSigner, ALGORAND_TESTNET_CAIP2 } from '@x402-avm/avm' import { createHash } from 'crypto' import { readFileSync } from 'fs' const signer = toClientAvmSigner(process.env.AVM_PRIVATE_KEY) const scheme = new ExactAvmScheme(signer) const client = new x402Client() client.register(ALGORAND_TESTNET_CAIP2, scheme) const fetchWithPayment = wrapFetchWithPayment(fetch, client) const hash = createHash('sha256').update(readFileSync('./doc.pdf')).digest('hex') const res = await fetchWithPayment( 'https://pronodealgo.xyz/its-mine/api/timestamp', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ hash }) } ) const { txId, block, explorerUrl, certificate } = await res.json() // certificate is a base64-encoded PDF — save with Buffer.from(certificate, 'base64') ## Prerequisites for AI agents 1. An Algorand wallet (testnet) 2. USDC balance on testnet (opt-in to ASA 10458941, get USDC from a testnet faucet) 3. At least 0.001 ALGO for transaction fees 4. The Algorand private key as base64 (64 bytes) — use lgosdk.secretKeyToMnemonic / mnemonicToSecretKey ## Links - Service: https://pronodealgo.xyz/its-mine/ - Verify API: https://pronodealgo.xyz/its-mine/api/verify/:hash - x402-avm on npm: https://www.npmjs.com/package/@x402-avm/fetch - Algorand testnet explorer: https://lora.algokit.io/testnet - USDC faucet (testnet): https://dispenser.testnet.aws.algodev.network