---
title: "The market dashboard as one document"
method: GET
path: "/v1/stats/home"
tags: ["stats"]
---

# The market dashboard as one document

`GET /v1/stats/home`

## Request

- Base URL: `https://stablescan.achivx.com`
- URL: `https://stablescan.achivx.com/v1/stats/home`
- Auth: none required

Batch-built — read the day from `window_start`/`window_end`, not from `built_at`. Organic figures can be `null` with `organic_unavailable_reason`; asking again does not fill them.

## Query parameters

- `chain` union: A network — number, number in a string, slug or CAIP-2 id (the slugs and CAIP-2 ids are /v1/networks' `slug` and `caip2`). The string forms are listed exactly; the server reads them leniently, as A2A and MCP do: surrounding whitespace, a leading + and leading zeros are ignored, slugs and CAIP-2 ids match in any letter case, and an empty or blank value is no chain at all (the default; /v1/freezes/acts alone refuses an empty filter). Anything else (hex, a decimal fraction, a zero-padded CAIP-2 reference, an unindexed network) is 400 invalid_chain.
  - 1 | 10 | 56 | 8453 | 42161 | 728126428 | -1
  - '1' | '10' | '56' | '8453' | '42161' | '728126428' | '-1' | 'ethereum' | 'optimism' | 'bnb-chain' | 'base' | 'arbitrum' | 'tron' | 'solana' | 'eip155:1' | 'eip155:10' | 'eip155:56' | 'eip155:8453' | 'eip155:42161' | 'eip155:728126428' | 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp'
- `window` '24h' | '7d' | '30d'

## Response `200`

The market dashboard document.

- Home
  - `attestation` object: Present when this deploy signs its answers: an Ed25519 signature over the JCS-canonical body without this field. Check it with POST /v1/verify-attestation or against /.well-known/jwks.json.
    - `alg` string, required
    - `data_vintage` integer
    - `kid` string, required
    - `method` string, required
    - `observed_hash` string, required
    - `ruleset_version` string, required
    - `sig` string, required
    - `signed_at` string, required
  - `basis` string
  - `basis_blocks` string[], nullable
  - `build_ms` integer
  - `built_at` string, required
  - `categories` object, required
    - `basis_days` integer, required
    - `capped` boolean
    - `items` object[], nullable, required
      - `addresses_per_day` integer, required
      - `category` string, required
      - `in_usd6` integer, required
      - `net_usd6` integer, required
      - `out_usd6` integer, required
      - `risk` boolean, required
      - `tx_count` integer, required
    - `risk_usd6` integer, required
    - `window_days` integer, required
    - `window_end` string
    - `window_start` string
  - `chain_id` integer, required
  - `chains` object[], nullable, required
    - `active_receivers_per_day` integer, nullable, required
    - `active_senders_per_day` integer, nullable, required
    - `avg_transfer_usd6` integer, required
    - `chain_id` integer
    - `delta_pct` number, nullable, required
    - `key` string, required
    - `label` string, required
    - `prev_usd6` integer, required
    - `share_pct` number, required
    - `transfer_count` integer, required
    - `volume_usd6` integer, required
  - `errors` string[], nullable
  - `freezes` object, required
    - `count` integer, required
    - `recent` object[], nullable, required
      - `action` string, required
      - `amount_usd6` integer, nullable
      - `block_time` string, required
      - `chain_id` integer, required
      - `chain_slug` string, required
      - `raw_event` string, required
      - `subject` string, required
      - `token` string, required
      - `tx_hash` string, required
    - `seized_usd6` integer, required
  - `freshness` object[], nullable, required
    - `as_of` string
    - `chain_id` integer, required
    - `chain_slug` string, required
    - `freshness_seconds` integer, nullable, required
    - `lag_blocks` integer, required: lag_blocks of /v1/sync/status for this chain at as_of (head_block minus last_indexed_block). Not a freshness measure on Solana (chain -1): there it is near 0 by construction and never negative — read freshness_seconds.
    - `name` string, required
  - `headline` object, required
    - `basis` string
    - `inorganic_fraction_pct` number, nullable, required
    - `organic_basis_capped` boolean
    - `organic_basis_days` integer, required
    - `organic_basis_usd6` integer, nullable, required
    - `organic_computed_at` string
    - `organic_excluded_chains` object[], nullable, required
      - `chain_id` integer, required
      - `reason` string, required
    - `organic_transfer_count` integer, nullable, required
    - `organic_unavailable_reason` string
    - `organic_volume_usd6` integer, nullable, required
    - `transfer_count` integer, required
    - `volume_usd6` integer, required
    - `window_end` string
    - `window_start` string
  - `issuance` object, required
    - `burn_usd6` integer, required
    - `legacy_included` boolean, required
    - `mint_usd6` integer, required
    - `net_usd6` integer, required
    - `per_token` object[], nullable, required
      - `burn_usd6` integer, required
      - `mint_usd6` integer, required
      - `net_usd6` integer, required
      - `token` string, required
  - `matrix` object, required
    - `cells` object[], nullable, required
      - `chain_id` integer, required
      - `share_pct` number, required
      - `token` string, required
      - `transfer_count` integer, required
      - `volume_usd6` integer, required
    - `chains` object[], nullable, required
      - `chain_id` integer, required
      - `key` string, required
      - `label` string, required
    - `tokens` string[], nullable, required
  - `notes` object, required
    - `active_addresses` string
    - `categories` string, required
    - `issuance` string, required
    - `ranking` string, required
    - `settlement` string, required
  - `overflow` string[], nullable
  - `series` object[], nullable, required
    - `day` string, required
    - `organic_basis_usd6` integer, nullable, required
    - `organic_unavailable_reason` string
    - `organic_volume_usd6` integer, nullable, required
    - `transfer_count` integer, required
    - `volume_usd6` integer, required
  - `tokens` object[], nullable, required
    - `active_receivers_per_day` integer, nullable, required
    - `active_senders_per_day` integer, nullable, required
    - `avg_transfer_usd6` integer, required
    - `chain_id` integer
    - `delta_pct` number, nullable, required
    - `key` string, required
    - `label` string, required
    - `prev_usd6` integer, required
    - `share_pct` number, required
    - `transfer_count` integer, required
    - `volume_usd6` integer, required
  - `top_addresses` object, required
    - `basis_days` integer, required
    - `capped` boolean
    - `concentration` object, required
      - `address_count` integer, required
      - `top10_share_pct` number, required
      - `top10_usd6` number, required
      - `total_usd6` number, required
    - `excluding_services` object[], nullable, required
      - `address` string, required
      - `category` string
      - `chain_id` integer, required
      - `chain_slug` string, required
      - `in_usd6` integer, required
      - `is_service` boolean, required
      - `name` string
      - `out_usd6` integer, required
      - `total_usd6` integer, required
      - `tx_count` integer, required
    - `items` object[], nullable, required
      - `address` string, required
      - `category` string
      - `chain_id` integer, required
      - `chain_slug` string, required
      - `in_usd6` integer, required
      - `is_service` boolean, required
      - `name` string
      - `out_usd6` integer, required
      - `total_usd6` integer, required
      - `tx_count` integer, required
    - `window_days` integer, required
    - `window_end` string
    - `window_start` string
  - `top_routes` object, required
    - `basis_days` integer, required
    - `capped` boolean
    - `items` object[], nullable, required
      - `chain_id` integer, required
      - `chain_slug` string, required
      - `payer` string, required
      - `payer_category` string
      - `payer_name` string
      - `recipient` string, required
      - `recipient_category` string
      - `recipient_name` string
      - `tx_count` integer, required
      - `volume_usd6` integer, required
    - `window_days` integer, required
    - `window_end` string
    - `window_start` string
  - `window` string, required
  - `window_end` string
  - `window_start` string

## Other responses

- `400`: The one error envelope. Branch on `error.code`, not on the status.
- `404`: The one error envelope. Branch on `error.code`, not on the status.
- `429`: The per-IP token bucket (20 requests/second, burst 40) is empty — wait `Retry-After`.
- `500`: The one error envelope. Branch on `error.code`, not on the status.
- `503`: The one error envelope. Branch on `error.code`, not on the status.

---

[API](https://skmtc.dev/achivx/apis/stablecoin-scanner-rest-api.md) · [All operations](https://skmtc.dev/achivx/apis/stablecoin-scanner-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/achivx/apis/stablecoin-scanner-rest-api/revisions/cbd001c8925c?raw)
