# JPYC Transfer Events by Chain

> JPYC Transfer Events by Chain is a paid API for AI agents from open-pay.jp, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-13).

Returns the most recent JPYC stablecoin transfer events on a specified blockchain (roughly the last hour of blocks), newest first, optionally filtered to a single address as sender or recipient.

## Facts

- Endpoint: GET https://open-pay.jp/api/paid/usdc/jpyc/transfers
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/jpyc-transfer-events-by-chain-28f9f3e9
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_EgnGkjKu03_geGzWamljO

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 jpyc-transfer-events-by-chain-28f9f3e9
```

Example prompt: Show me the most recent JPYC transfer events on Polygon for the address 0xAbC1234567890abcdef1234567890abcdef123456 — I want to see who sent or received JPYC to that wallet in the last hour.

## When to prefer this

Use this endpoint when you need real-time, on-chain JPYC transfer event data for the past hour on a specific supported chain, especially when monitoring a specific address for incoming or outgoing JPYC payments. Prefer this over balance checks when you need transaction-level detail (tx hash, from/to, amount per transfer) rather than a summary balance. Best suited for payment verification, activity auditing, and live transfer monitoring workflows.

## Known failure modes

- Missing required 'chain' query parameter returns an error
- Invalid chain value (not polygon, kaia, avalanche, or ethereum) returns a validation error
- Malformed address (not matching 0x + 40 hex chars) returns a pattern validation error
- Limit value outside 1-100 range may be rejected or clamped
- No transfers in the last hour on a quiet chain returns an empty list
- Payment failure (insufficient USDC balance) blocks the request via x402 protocol

## How this service works

List recent JPYC Transfer events on one supported chain from roughly the last hour of blocks, optionally filtered by address — tx hash, from, to, amount, block. Without a cursor: newest first. With a cursor: only events after that position, oldest first, so each observed event is returned once within the scanned window. Use to confirm a recent JPYC payment or monitor wallet activity. Not for history beyond the window, sanctions screening, identity, or finality proof.

## Output

A list of JPYC transfer events from approximately the last hour of blocks on the specified chain, ordered newest first. Each record includes the transaction hash, sender (from) address, recipient (to) address, transfer amount, and block number. Optionally filtered to transfers involving a specific wallet address as either sender or recipient.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "chain"
     ],
     "properties": {
      "chain": {
       "enum": [
        "polygon",
        "kaia",
        "avalanche",
        "ethereum"
       ],
       "type": "string",
       "description": "Chain to scan. Supported values: polygon, kaia, avalanche, ethereum."
      },
      "limit": {
       "type": "string",
       "default": "20",
       "pattern": "^(?:[1-9]|[1-9][0-9]|100)$",
       "description": "Maximum number of transfer events to return, newest first (1-100). This is not a page number."
      },
      "cursor": {
       "type": "string",
       "pattern": "^[0-9]+:(?:-1|[0-9]+)$",
       "description": "The nextCursor value from a previous response (\"<block>:<logIndex>\"). Returns only transfers newer than that position, oldest first (mode=delta), so repeated calls pay only for new events and return each observed event once within the scanned window, assuming stable chain history; continue with nextCursor while hasMore is true. A cursor up to 64 blocks beyond the current chain head (normal when a node lags) returns no items and echoes the cursor back; further ahead is rejected with 400 cursor_ahead_of_head."
      },
      "address": {
       "type": "string",
       "pattern": "^0x[a-fA-F0-9]{40}$",
       "description": "Only transfers where this address is the sender or the recipient."
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "required": [
      "schemaVersion",
      "token",
      "generatedAt",
      "notice",
      "termsUrl",
      "chain",
      "chainId",
      "contract",
      "fromBlock",
      "toBlock",
      "mode",
      "nextCursor",
      "hasMore",
      "truncated",
      "items"
     ],
     "properties": {
      "mode": {
       "enum": [
        "snapshot",
        "delta"
       ]
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/jpyc-transfer-events-by-chain-28f9f3e9/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from open-pay.jp](https://www.zero.xyz/host/open-pay.jp/llms.txt)
