# Oblique Markets Payer Profile

> Oblique Markets Payer Profile is a paid API for AI agents from api.oblique.markets, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-14).

Given a Base wallet address, returns its x402 payment footprint (payment count, recipients, cadence, USDC volume) and a behavioral class with confidence for the recent window

## Facts

- Endpoint: POST https://api.oblique.markets/api/v1/paid/payer-profile
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/oblique-markets-payer-profile-9a731191
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_53zg9vpZfY13L3rD9I7NR

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability oblique-markets-payer-profile-9a731191 -d '<json body>'
```

Example prompt: A wallet just paid me via x402 — can you pull its payer profile from Oblique Markets for address 0xc9c7b38c0942914fc8ea12063bc92dcd3b581670 over the last 30 days so I know whether it's a real customer or just a catalogue sweep?

## When to prefer this

Use this endpoint immediately after receiving an x402 payment from an unknown Base address, when you need to decide whether to fulfill, deprioritize, or flag the request. It is the right choice when you want a behavioral signal — not identity — based entirely on public on-chain USDC transfer history. Prefer it over generic block explorer lookups because it returns a ready-made classification with confidence and a reading rule tailored to x402 payment semantics.

## Known failure modes

- Address not found or has no USDC payment activity in the window — returns empty evidence with low confidence
- Invalid address format — likely 400 error
- Upstream explorer rate limiting — reflected in coverage.explorer_rate_limited field, may degrade completeness
- Cache miss with high upstream_ms if explorer is slow — still returns result but with latency
- window_days too large — may return incomplete coverage if explorer history is limited

## How this service works

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 (payments, distinct recipients, cadence, native activity, what this shop has seen of it) and a class with evidence and confidence — disclosed_scout, scheduled_verifier, catalogue_sweep, paying_index, repeat_buyer, single_touch — plus the rule for reading it. Not an identity claim. Free doors: /api/v1/payer-profile/example and /classes.

## Output

A JSON object containing: the wallet's behavioral class (one of disclosed_scout, scheduled_verifier, catalogue_sweep, paying_index, repeat_buyer, single_touch), a confidence level (high/medium/low), a human-readable reason and reading rule, payment statistics (count, USDC total, distinct recipients, active days, cadence CV, modal hours UTC), first/last seen timestamps, top recipients list, coverage metadata (completeness, upstream latency, explorer requests), and a note clarifying this is a heuristic over public on-chain data, not an identity claim.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "address": {
   "type": "string"
  },
  "window_days": {
   "type": "integer"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "note": "class is a heuristic over public on-cha…",
  "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02…",
  "cache": "miss",
  "class": "paying_index",
  "reason": "346 distinct recipients on 6 distinct d…",
  "address": "0xc9c7b38c0942914fc8ea12063bc92dcd3b581…",
  "cadence": {
   "span_days": 5.4,
   "regularity": {
    "note": "coefficient of variation of the gaps be…",
    "inter_payment_gap_cv": 5.091
   },
   "active_days": 6,
   "modal_hours_utc": [
    {
     "hour_utc": 19,
     "payments": 207
    }
   ],
   "payments_per_day": 27.033
  },
  "network": "eip155:8453",
  "coverage": {
   "note": "every outbound USDC transfer in the win…",
   "complete": true,
   "upstream_ms": 12328,
   "explorer_retries": 0,
   "explorer_requests": 18,
   "explorer_rate_limited": 0,
   "explorer_host_failures": 0
  },
  "evidence": {
   "payments": 811,
   "span_days": 5.4,
   "active_days": 6,
   "native_tx_count": 0,
   "payments_per_day": 27.033,
   "distinct_recipients": 346
  },
  "payments": 811,
  "last_seen": "2026-09-09T19:02:35.000Z",
  "confidence": "high",
  "first_seen": "2026-09-04T09:23:49.000Z",
  "total_usdc": 39.2905,
  "computed_at": "2026-09-10T00:21:24.086Z",
  "window_days": 30,
  "generated_at": "2026-09-10T00:21:24.086Z",
  "reading_rule": "the first one to three payers of a new …",
  "window_start": "2026-08-11T00:21:11.758Z",
  "top_recipients": [
   {
    "payments": 17,
    "recipient": "0x4466d4a84b7c49a6a094ec6eef4a0712d6dd1…"
   }
  ],
  "native_tx_count": 0,
  "our_observation": {
   "seen": true,
   "classes": {
    "real": 1,
    "known_sweep": 8
   },
   "payments": 9,
   "last_seen": "2026-09-09T12:09:45.609Z",
   "first_seen": "2026-09-05T01:01:56.354Z",
   "routes_bought": 9,
   "classification": "known_sweep",
   "returned_after_1h": true
  },
  "distinct_recipients": 346,
  "payments_per_recipient": 2.34,
  "native_tx_count_is_lower_bound": false
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/oblique-markets-payer-profile-9a731191/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.oblique.markets](https://www.zero.xyz/host/api.oblique.markets/llms.txt)
