← oblique.markets · all endpoints

POST /api/v1/paid/token-flow-activity — $0.02 per call

Use when an agent needs recent Solana token-flow activity for one wallet or token mint without an indexer account: which tokens moved, in which direction, with whom, and whether a public DEX program was involved. Returns normalized per-transaction flows (mint, owner, signed delta, decimals), counterparties, an activity read (transfer, swap, mint_burn), program labels, block time and slot, RPC provenance, freshness and a receipt with repeat-payer evidence. $0.02 per call via x402 on Solana or Bas

Price$0.02 per call (20000 atomic USDC, scheme exact)
Categorychain-data
Railsx402 · USDC on Base (eip155:8453) and Solana · MPP pathUSD on Tempo
Canonical URLhttps://api.oblique.markets/api/v1/paid/token-flow-activity

Try it

curl -i https://api.oblique.markets/api/v1/paid/token-flow-activity
# → HTTP 402 with the exact payment requirements; pay, then retry with PAYMENT-SIGNATURE (x402) or Authorization: Payment (MPP)

Input schema

{
 "type": "object",
 "required": [
  "address"
 ],
 "properties": {
  "address": {
   "type": "string",
   "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
   "description": "Solana wallet owner or token mint (base58)."
  },
  "activity": {
   "type": "string",
   "enum": [
    "any",
    "transfer",
    "swap",
    "mint_burn"
   ],
   "default": "any",
   "description": "Keep only transactions of this read: transfer, swap (a public DEX program was involved), mint_burn."
  },
  "direction": {
   "type": "string",
   "enum": [
    "any",
    "in",
    "out"
   ],
   "default": "any",
   "description": "For a wallet subject: keep transactions where the wallet received (in) or sent (out) tokens."
  },
  "mint": {
   "type": "string",
   "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
   "description": "Keep only transactions that moved this mint."
  },
  "window_hours": {
   "type": "integer",
   "minimum": 1,
   "maximum": 168,
   "default": 24
  },
  "limit": {
   "type": "integer",
   "minimum": 1,
   "maximum": 20,
   "default": 10,
   "description": "Most recent transactions scanned; filters apply within them. Page with cursor.before."
  },
  "before": {
   "type": "string",
   "description": "Signature cursor from a previous response (cursor.before) to page further back."
  }
 }
}

Example output

{
 "chain": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
 "subject": {
  "address": "Civ6KVQdBMnHHy4ViXGLRmMLh4Z4tJ6dprqWj4nEAyRh",
  "kind": "wallet"
 },
 "window": {
  "hours": 24,
  "since": "2026-09-06T12:00:00.000Z",
  "until": "2026-09-07T12:00:00.000Z"
 },
 "filters": {
  "activity": "any",
  "direction": "any",
  "mint": null
 },
 "scanned": 3,
 "returned": 1,
 "partial": false,
 "activity": [
  {
   "signature": "2s4yjhs99Xd93KnbqDVb4UqUWTXbsVHqkCQbg4KeVyC5NAMS4tthqwNhQYPencjxjJh1q2zfixVXQGkZ4CGxt3Cs",
   "slot": 445009885,
   "block_time": "2026-09-06T14:15:42.000Z",
   "block_time_unix": 1788766542,
   "status": "success",
   "activity_type": "transfer",
   "programs": [
    "associated-token-account",
    "spl-token",
    "system"
   ],
   "fee_payer": "FHpcNSe6tb2n15bAdq4BkeYWGyZKFD7yLYrH92ng7wCT",
   "fee_lamports": 5000,
   "flows": [
    {
     "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
     "symbol": "USDC",
     "owner": "Civ6KVQdBMnHHy4ViXGLRmMLh4Z4tJ6dprqWj4nEAyRh",
     "token_account": "EMrJf5kf5jhBLvghNemar19dEpqXBDTpnGsYBNU6EcWB",
     "direction": "out",
     "delta_atomic": "-5000000",
     "delta": -5,
     "decimals": 6,
     "token_program": "spl-token",
     "is_subject": true
    },
    {
     "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
     "symbol": "USDC",
     "owner": "7uTT8Xi5RWXzy7h9XL244GRgEycDYDhLjr3ZyNdXi8pZ",
     "token_account": "4nvJ5zWdVspxJiNZzB127U6amPH98SFFkBx2JZrAduia",
     "direction": "in",
     "delta_atomic": "5000000",
     "delta": 5,
     "decimals": 6,
     "token_program": "spl-token",
     "is_subject": false
    }
   ],
   "counterparties": [
    "7uTT8Xi5RWXzy7h9XL244GRgEycDYDhLjr3ZyNdXi8pZ"
   ],
   "provenance": {
    "source": "solana-public-rpc",
    "host": "solana-rpc.publicnode.com",
    "method": "getTransaction",
    "commitment": "finalized",
    "cached": false
   }
  }
 ],
 "cursor": {
  "before": "2s4yjhs99Xd93KnbqDVb4UqUWTXbsVHqkCQbg4KeVyC5NAMS4tthqwNhQYPencjxjJh1q2zfixVXQGkZ4CGxt3Cs"
 },
 "freshness": {
  "served_at": "2026-09-07T12:00:01.000Z",
  "cache": "miss",
  "cached_at": "2026-09-07T12:00:01.000Z",
  "ttl_seconds": 120,
  "slot_at_fetch": 445010012
 },
 "receipt": {
  "sku": "token-flow-activity",
  "request_hash": "3f2a9c1e0b7d4c6a8e5f1d2b9a0c7e6d5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c",
  "payer": "AisyQi7zL7cR3q6sftsv7aVAcLGKb5PR23u3nwwBtaJy",
  "payment_network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
  "rpc_calls": 4,
  "upstreams": [
   "solana-rpc.publicnode.com"
  ],
  "transactions_from_cache": 0,
  "prior_calls": 0,
  "is_repeat_payer": false
 }
}

Clients

Worked TypeScript/Python clients and MCP configs: oblique-markets/oblique-examples · Agent Skills: oblique-markets/skills

Pay per call with x402 (USDC on Base or Solana) or MPP (pathUSD on Tempo). No accounts. Machine doors: /.well-known/x402.json · /openapi.json · /llms-full.txt · MCP · humans: remote.observer