---
title: "Compare Base token on-chain observations. $0.02 in Base USDC."
method: POST
path: "/api/base/token-risk/changes"
tags: ["token-monitoring"]
---

# Compare Base token on-chain observations. $0.02 in Base USDC.

`POST /api/base/token-risk/changes`

## Request

- Base URL: `https://saylorinnovations.com`
- URL: `https://saylorinnovations.com/api/base/token-risk/changes`
- Auth: none declared

Base token change report: compares signed, seven-day baselines with block-pinned owner, pause, proxy and supply reads, plus optional same-pool token balances. Returns field-level evidence and unknowns. No honeypot simulation, sell-tax estimate, USD liquidity valuation or safety guarantee. USDC on Base. EOA EIP-3009 payments only. Retry HTTP 202 using exactly the same body and payment signature.

## Headers

- `PAYMENT-SIGNATURE` string

## Request body

- object
  - `address` string, required: Base ERC-20 contract address.
  - `pool` string: Optional fixed pool exposing token0() and token1(), one matching address. No automatic pool selection.
  - `baseline` string: Optional signed baseline from a previous paid response for the same address and pool; expires after seven days.

## Response `200`

Paid observation or comparison, with a signed seven-day baseline.

- object
  - `schema_version` 'token-risk-changes/1', required
  - `status` 'baseline_created' | 'changes_detected' | 'no_observed_changes' | 'insufficient_evidence', required
  - `current` object, required
    - `chain` 'eip155:8453', required
    - `address` string, required
    - `pool` string, nullable, required
    - `block` object, required
      - `number` string, required
      - `hash` string, required
      - `timestamp` string, required
      - `tag` 'safe', required
    - `observed_at` string, required
    - `fields` object, required
  - `previous_block` object, nullable, required
  - `changes` object[], required
    - `field` string, required
    - `before` union, required
      - string
      - number
      - boolean
    - `after` union, required
      - string
      - number
      - boolean
    - `attention` 'review' | 'informational', required
    - `delta_raw` string
    - `change_percent` number, nullable
  - `coverage` object, required
    - `compared` string[], required
    - `not_compared` object[], required
      - `field` string, required
      - `reason` string, required
    - `unavailable` string[], required
    - `unsupported` string[], required
  - `baseline` string, required
  - `baseline_expires_at` string, required
  - `limitations` string[], required

## Other responses

- `202`: Payment unconfirmed. Retry identical body and PAYMENT-SIGNATURE; do not sign another payment.
- `400`: Invalid body, baseline or authorization.
- `402`: Payment required or insufficient funds; read PAYMENT-REQUIRED.
- `409`: Baseline scope or block conflict, payment reuse, or unresolved expired payment. Read the error code.
- `410`: Baseline expired; omit it to begin a new observation.
- `413`: Body or payment header too large.
- `415`: Use application/json.
- `422`: No contract bytecode or an incompatible pool; settlement was not attempted.
- `503`: Chain, configuration or durable storage unavailable. Retry the same payment if one was supplied.

---

[API](https://skmtc.dev/saylorinnovations/apis/saylor-innovations-agent-api.md) · [All operations](https://skmtc.dev/saylorinnovations/apis/saylor-innovations-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/saylorinnovations/apis/saylor-innovations-agent-api/revisions/3df21c3a7629?raw)
