← oblique.markets · all endpoints

POST /api/v1/paid/payer-profile — $0.01 per call

Use when a Base address just paid you and you want to know what it is before you act on it. Returns its public x402 payment footprint in the window (USDC payments, distinct recipients, first/last seen, cadence, native transaction count, what this shop has seen of it) and a heuristic class (catalogue_sweep, paying_index, repeat_buyer, single_touch, unclassified) with evidence and confidence; not an identity claim. Free doors: /api/v1/payer-profile/example and /classes.

Price$0.01 per call (10000 atomic USDC, scheme exact)
Categorymarket-data
Railsx402 · USDC on Base (eip155:8453) and Solana · MPP pathUSD on Tempo
Canonical URLhttps://api.oblique.markets/api/v1/paid/payer-profile

Try it

curl -i https://api.oblique.markets/api/v1/paid/payer-profile
# → 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": "^0x[0-9a-fA-F]{40}$",
   "description": "The Base address that paid you",
   "examples": [
    "0xc9c7b38C0942914fC8EA12063BC92dcd3b581670"
   ]
  },
  "window_days": {
   "type": "integer",
   "minimum": 1,
   "maximum": 90,
   "default": 30,
   "description": "How far back to read, in days"
  }
 },
 "additionalProperties": false
}

Example output

{
 "address": "0xc9c7b38c0942914fc8ea12063bc92dcd3b581670",
 "network": "eip155:8453",
 "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
 "window_days": 30,
 "window_start": "2026-08-11T00:21:11.758Z",
 "payments": 811,
 "distinct_recipients": 346,
 "total_usdc": 39.2905,
 "first_seen": "2026-09-04T09:23:49.000Z",
 "last_seen": "2026-09-09T19:02:35.000Z",
 "cadence": {
  "payments_per_day": 27.033,
  "active_days": 6,
  "span_days": 5.4,
  "regularity": {
   "inter_payment_gap_cv": 5.091,
   "note": "coefficient of variation of the gaps between consecutive payments; lower is more evenly spaced; null with fewer than 3 payments"
  },
  "modal_hours_utc": [
   {
    "hour_utc": 19,
    "payments": 207
   },
   {
    "hour_utc": 12,
    "payments": 202
   },
   {
    "hour_utc": 1,
    "payments": 193
   }
  ]
 },
 "native_tx_count": 0,
 "native_tx_count_is_lower_bound": false,
 "top_recipients": [
  {
   "recipient": "0x4466d4a84b7c49a6a094ec6eef4a0712d6dd125e",
   "payments": 17
  },
  {
   "recipient": "0x367f1b3d8ca90d1e087481a9a40d585bf3451a03",
   "payments": 12
  },
  {
   "recipient": "0xa6145f14b197f28a2c5786c6f2e4456f9484f0fd",
   "payments": 12
  },
  {
   "recipient": "0x68e3e7822cf83c824cf9606ec999b5e8a93c85b5",
   "payments": 11
  },
  {
   "recipient": "0x169b9519078039e546c6c2d1030cf63a569283d1",
   "payments": 11
  }
 ],
 "payments_per_recipient": 2.34,
 "class": "paying_index",
 "confidence": "high",
 "evidence": {
  "payments": 811,
  "distinct_recipients": 346,
  "span_days": 5.4,
  "active_days": 6,
  "native_tx_count": 0,
  "payments_per_day": 27.033
 },
 "reason": "346 distinct recipients on 6 distinct days across 5.4 days, no native transaction ever sent",
 "note": "class is a heuristic over public on-chain payment traces (USDC transfers from this address on Base), not an identity claim; the same wallet can be operated by anyone and can change behaviour tomorrow.",
 "coverage": {
  "complete": true,
  "note": "every outbound USDC transfer in the window was read",
  "explorer_requests": 18,
  "explorer_retries": 0,
  "explorer_rate_limited": 0,
  "explorer_host_failures": 0,
  "upstream_ms": 12328
 },
 "computed_at": "2026-09-10T00:21:24.086Z",
 "our_observation": {
  "seen": true,
  "classification": "known_sweep",
  "classes": {
   "known_sweep": 8,
   "real": 1
  },
  "payments": 9,
  "routes_bought": 9,
  "first_seen": "2026-09-05T01:01:56.354Z",
  "last_seen": "2026-09-09T12:09:45.609Z",
  "returned_after_1h": true
 },
 "cache": "miss",
 "generated_at": "2026-09-10T00:21:24.086Z"
}

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