scry.solanahub.de · lineage
Solana funding lineage API for agents. Cache-first wallet funding-lineage evidence returns known upstream funders, hop depth, source freshness, identity hints, loop detection, and coverage/confidence without forcing a live Helius refresh per request. Built for wallet provenance, source-of-funds review, counterparty review, risk triage, and paid Globe wallet dossiers. No API keys, no subscriptions; x402 exact payment per request. Search aliases: wallet source of funds solana api; solana funding lineage api; who funded this solana wallet; solana wallet funding lineage api; solana wallet lineage api; solana source of funds api; solana wallet provenance api; wallet funder lookup solana. Primary object: single wallet source of funds.
HTTP 402 with machine-readable payment
terms, your agent pays the $0.1 USDC in USDC on-chain, and retries automatically. Pays to 0xF4A904d8326786d90157cf791C281302F11b2036.Call it in 30 seconds
// npm i x402-fetch viem
import { wrapFetchWithPayment } from "x402-fetch";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";
const account = privateKeyToAccount(process.env.PRIVATE_KEY); // funds USDC on Base
const wallet = createWalletClient({ account, chain: base, transport: http() });
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);
// Pays the $0.1 USDC automatically on the 402, then returns the real response:
const res = await fetchWithPay("https://scry.solanahub.de/x402/wallet/:address/lineage", { method: "GET" });
console.log(await res.json());
# pip install x402 eth-account httpx
import os, asyncio
from eth_account import Account
from x402.clients.httpx import x402HttpxClient
account = Account.from_key(os.environ["PRIVATE_KEY"]) # funds USDC on Base
async def main():
async with x402HttpxClient(account=account) as client:
# x402 handles the 402 -> pay ($0.1 USDC) -> retry automatically
r = await client.get("https://scry.solanahub.de/x402/wallet/:address/lineage")
print((await r.aread()).decode())
asyncio.run(main())
# 1) An unpaid request returns HTTP 402 with the exact payment terms: curl -i "https://scry.solanahub.de/x402/wallet/:address/lineage?address=F5jWYuiDLTiaLYa54D88YbpXgEsA6NKHzWy4SN4bMYjt" # 2) Paying + retrying requires an x402 client that can sign the USDC # authorization (curl alone cannot). See the JS / Python tabs below.
New to x402? Read the 5-minute quickstart →