> ## Documentation Index
> Fetch the complete documentation index at: https://docs.webacy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List stablecoin supply flows

> Returns paginated per-token supply-flow rows plus an aggregates envelope carrying the hero metrics (bank_run_gauge, minting_pressure, supply_by_category, network_count, stress_tokens, mcap_7d_pct). Aggregates are computed over the filtered set before pagination; `mcap_7d_pct` and `stress_tokens` pass through from the pipeline's universe-level totals. Data is refreshed daily — responses carry `stale: true` when the snapshot is older than 25h or served from the fallback cache during an upstream data outage, and `degraded: true` only during a total outage (stale snapshot AND zero tokens) — an empty `items` with `degraded: false` is genuinely empty.



## OpenAPI

````yaml GET /rwa/supply
openapi: 3.0.1
info:
  title: Risk Score API
  description: API definition for Webacy Risk Scores
  version: 1.12.1
servers:
  - url: https://api.webacy.com
    description: Webacy Risk Score API (Production)
  - url: https://api-development.webacy.com
    description: Webacy Risk Score API (Development)
  - url: http://0.0.0.0:3030/api/v1/risk-score
    description: Webacy Risk Score API - Local
security:
  - api_key: []
tags:
  - name: Webhooks
    description: >-
      Subscribe to and manage real-time event notifications (currently
      DEPEG_TIER_CHANGE)
  - name: Threat Risks
    description: Analyze addresses for security threats and malicious activity
  - name: Sanction Checks
    description: Check addresses against OFAC and other sanction lists
  - name: Approval Risks
    description: Analyze token approvals and associated risks
  - name: Transaction Risks
    description: Assess risk details for blockchain transactions
  - name: Exposure Risk
    description: Understand risk profile and exposure of addresses
  - name: Contract Risk
    description: Real-time smart contract security analysis
  - name: URL Risks
    description: Analyze URLs for phishing and security threats
  - name: API Usage
    description: Monitor and manage API consumption
  - name: Holder Analysis
    description: Token holder distribution and sniper detection
  - name: Address Poisoning
    description: Detect address poisoning attack patterns
  - name: Token Analysis
    description: Comprehensive token security and market analysis
  - name: Pool Analysis
    description: Liquidity pool data and analysis
  - name: Transaction Scanning
    description: Scan and simulate transactions for risks
  - name: trading-lite
    description: Lightweight trading risk assessment
  - name: RWA & Pegged Tokens
    description: >-
      Real-world asset and pegged-token analytics (supply flows, mint/burn
      velocity)
  - name: Vault Risk v3
    description: >-
      Webacy-native v3 vault risk surface — composite grade, categories,
      coverage, and the framework taxonomy.
  - name: RWA Risk v3
    description: >-
      Webacy-native v3 RWA / stablecoin risk surface — composite grade,
      structural-health criteria, and batch scoring.
  - name: Stablecoins v3
    description: >-
      Stablecoin-only aliases of the v3 RWA routes: same grades, same shapes,
      `segment` fixed to `stablecoin`.
paths:
  /rwa/supply:
    get:
      tags:
        - RWA & Pegged Tokens
      summary: List pegged-token supply flows (mint/burn velocity)
      description: >-
        Returns paginated per-token supply-flow rows plus an aggregates envelope
        carrying the hero metrics (bank_run_gauge, minting_pressure,
        supply_by_category, network_count, stress_tokens, mcap_7d_pct).
        Aggregates are computed over the filtered set before pagination;
        `mcap_7d_pct` and `stress_tokens` pass through from the pipeline's
        universe-level totals. Data is refreshed daily — responses carry `stale:
        true` when the snapshot is older than 25h or served from the fallback
        cache during an upstream data outage, and `degraded: true` only during a
        total outage (stale snapshot AND zero tokens) — an empty `items` with
        `degraded: false` is genuinely empty.
      operationId: listSupplyFlows
      parameters:
        - name: chain
          in: query
          required: false
          schema:
            type: string
            enum:
              - eth
              - arb
              - opt
              - pol
              - base
              - bsc
              - sol
              - tron
          description: >-
            Filter to tokens with any supply on this chain. Whole-row counts — a
            multi-chain token contributes its full supply to the returned totals
            under every chain it appears on.
        - name: tokenType
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/SupplyTokenType'
          description: Filter by backing mechanism
        - name: tier
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/SupplyRiskTier'
          description: >-
            Filter by risk tier denormalized at the supply pipeline's
            generated_at (not live). Rows with a null tier are excluded.
        - name: q
          in: query
          required: false
          schema:
            type: string
            maxLength: 100
          description: Case-insensitive substring match on `symbol` or `name`
        - name: address
          in: query
          required: false
          schema:
            type: string
          description: >-
            Exact contract address (requires `chain`). Filters to the row whose
            per-chain address map carries this (chain, address), so a
            same-ticker token can never be returned. EVM addresses match
            case-insensitively.
        - name: sort
          in: query
          required: false
          schema:
            type: string
            enum:
              - abs_net_24h
              - pressure_vs_30d
              - net_24h
              - net_30d
              - supply
            default: abs_net_24h
          description: Default `abs_net_24h` surfaces the largest mint-or-burn moves first
        - name: order
          in: query
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            default: 1
        - name: pageSize
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 50
      responses:
        '200':
          headers:
            x-credit-token:
              $ref: '#/components/headers/XCreditToken'
            x-credit-balance-cu:
              $ref: '#/components/headers/XCreditBalanceCu'
          description: Paginated supply-flow rows with aggregates over the filtered set
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupplyListResponse'
        '400':
          description: >-
            Unsupported chain, tokenType, or tier, or an address supplied
            without its chain
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '402':
          $ref: '#/components/responses/X402PaymentRequired'
        '503':
          $ref: '#/components/responses/X402ServiceUnavailable'
      security:
        - api_key: []
components:
  schemas:
    SupplyTokenType:
      type: string
      description: >-
        Backing mechanism derived by the pipeline from the upstream peg
        mechanism.
      enum:
        - fiat
        - crypto
        - synthetic
        - other
    SupplyRiskTier:
      type: string
      description: >-
        Risk tier denormalized from the risk-monitor pipeline at the supply
        snapshot's generated_at (not live).
      enum:
        - critical
        - warning
        - watch
        - ok
    SupplyListResponse:
      type: object
      required:
        - items
        - pagination
        - aggregates
        - generated_at
        - stale
        - degraded
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/SupplyItem'
        pagination:
          $ref: '#/components/schemas/SupplyPagination'
        aggregates:
          type: object
          required:
            - totals
          properties:
            totals:
              $ref: '#/components/schemas/SupplyTotals'
        generated_at:
          type: string
          format: date-time
          nullable: true
        stale:
          type: boolean
          description: >-
            true when the snapshot is older than 25h or served from the fallback
            cache during an upstream data outage.
        degraded:
          type: boolean
          description: >-
            true only during a total supply-pipeline outage (stale snapshot AND
            zero tokens — the upstream data store is unavailable and the
            fallback cache is empty). Distinguishes "empty because the dataset
            is unavailable" from "genuinely empty": a fresh empty snapshot is
            `stale: false, degraded: false`. Same field on
            `SupplyTokenResponse`.
    SupplyItem:
      type: object
      description: >-
        One row per tracked pegged token, aggregated across chains. Percent
        fields are emitted as fractions rather than 0-100 percentages; signed
        net-flow fields such as `net_24h_pct`, `net_7d_pct`, and `net_30d_pct`
        may be negative when burns/redemptions exceed mints. Nullable fields are
        always present on the wire; `null` means the underlying baseline/data is
        unavailable, not that the field itself is missing.
      required:
        - symbol
        - name
        - canonical_id
        - token_type
        - peg_type
        - supply
        - net_24h
        - net_7d
        - net_30d
        - net_90d
        - minted_24h
        - burned_24h
        - minted_7d
        - burned_7d
        - net_24h_pct
        - net_7d_pct
        - net_30d_pct
        - pressure_vs_30d
        - risk_score_as_of_generated_at
        - risk_tier_as_of_generated_at
        - has_bridged_data
        - total_native_supply
        - total_bridged_supply
        - bridged_fraction
        - organic_net_24h
        - bridge_flow_pct
        - chains
      properties:
        symbol:
          type: string
        name:
          type: string
        canonical_id:
          type: string
          description: >-
            Canonical pegged-token id — stable across pipeline runs. Supply to
            `/rwa/supply/{symbol}?canonicalId=<id>` to pin a deterministic row
            when a symbol collision exists.
        llama_id:
          type: string
          deprecated: true
          description: >-
            DEPRECATED — use `canonical_id`. Mirror of `canonical_id` retained
            for one release for back-compat; will be removed.
        token_type:
          $ref: '#/components/schemas/SupplyTokenType'
        peg_type:
          type: string
          description: Peg type (e.g. `peggedUSD`, `peggedEUR`).
        supply:
          type: number
          format: double
        net_24h:
          type: number
          format: double
        net_7d:
          type: number
          format: double
        net_30d:
          type: number
          format: double
        net_90d:
          type: number
          format: double
          nullable: true
        minted_24h:
          type: number
          format: double
        burned_24h:
          type: number
          format: double
        minted_7d:
          type: number
          format: double
        burned_7d:
          type: number
          format: double
        net_24h_pct:
          type: number
          format: double
          nullable: true
          description: 24h net flow as a fraction of t-1d supply.
        net_7d_pct:
          type: number
          format: double
          nullable: true
        net_30d_pct:
          type: number
          format: double
          nullable: true
        pressure_vs_30d:
          type: number
          format: double
          description: >-
            Today's 24h net flow vs the 30d daily baseline, as a fraction of
            current supply.
        risk_score_as_of_generated_at:
          type: integer
          nullable: true
          description: >-
            Risk score denormalized from the risk-monitor pipeline at the supply
            snapshot's generated_at. Not live — can lag /rwa/peg-canary by up to
            25h. null when the upstream snapshot had no entry for this token.
        risk_tier_as_of_generated_at:
          anyOf:
            - $ref: '#/components/schemas/SupplyRiskTier'
            - type: string
              nullable: true
              enum:
                - null
        has_bridged_data:
          type: boolean
        total_native_supply:
          type: number
          format: double
        total_bridged_supply:
          type: number
          format: double
        bridged_fraction:
          type: number
          format: double
          nullable: true
          description: >-
            Bridged supply as a fraction of total supply. null when
            `has_bridged_data` is false.
        organic_net_24h:
          type: number
          format: double
          nullable: true
        bridge_flow_pct:
          type: number
          format: double
          nullable: true
          description: >-
            Absolute bridge contribution to 24h net flow, as a fraction of
            |net_24h|. null when `has_bridged_data` is false or net_24h is zero.
        chains:
          type: object
          description: >-
            Per-chain supply breakdown keyed by internal Chain slug (e.g. `eth`,
            `arb`, `tron`). Upstream chain names are rewritten on read; chains
            without an internal Chain counterpart are dropped. `sum(chains)` may
            be less than `supply` when per-chain attribution is incomplete.
          additionalProperties:
            type: number
            format: double
    SupplyPagination:
      type: object
      required:
        - total
        - page
        - pageSize
        - totalPages
      properties:
        total:
          type: integer
          minimum: 0
        page:
          type: integer
          minimum: 1
        pageSize:
          type: integer
          minimum: 1
          maximum: 500
        totalPages:
          type: integer
          minimum: 1
    SupplyTotals:
      type: object
      description: >-
        Aggregate metrics computed over the returned set (filtered,
        pre-pagination). `mcap_7d_pct` and `stress_tokens` pass through from the
        pipeline's universe-level totals and do not re-derive per filtered
        subset. Nullable fields (`mcap_7d_pct`) are always present on the wire —
        `null` means "no t-7d baseline available", not "field absent".
      required:
        - total_supply
        - net_minted_24h
        - net_burned_24h
        - net_24h
        - net_7d
        - net_30d
        - mcap_7d_pct
        - token_count
        - network_count
        - stress_tokens
        - bank_run_gauge
        - minting_pressure
        - supply_by_category
      properties:
        total_supply:
          type: number
          format: double
        net_minted_24h:
          type: number
          format: double
        net_burned_24h:
          type: number
          format: double
        net_24h:
          type: number
          format: double
        net_7d:
          type: number
          format: double
        net_30d:
          type: number
          format: double
        mcap_7d_pct:
          type: number
          format: double
          nullable: true
          description: >-
            7d supply change as a fraction of t-7d supply (pipeline-emitted,
            converted to fraction by the API).
        token_count:
          type: integer
          minimum: 0
        network_count:
          type: integer
          minimum: 0
          description: >-
            Count of distinct internal Chain slugs across the set's normalized
            `chains` maps.
        stress_tokens:
          type: array
          items:
            type: string
          description: >-
            Symbols flagged as stress tokens by the pipeline (tier in {critical,
            warning} at generated_at AND net_30d < 0 AND supply > $50M).
        bank_run_gauge:
          type: integer
          minimum: -100
          maximum: 100
          description: >-
            Today's 24h net flow vs the 30d daily baseline, scaled. Negative =
            redemption pressure; positive = above-average minting.
        minting_pressure:
          type: integer
          minimum: -100
          maximum: 100
          description: >-
            Balance of 24h gross mints vs gross burns. +100 = all mint; -100 =
            all burn; 0 = balanced.
        supply_by_category:
          type: object
          description: >-
            Breakdown by token_type. `pct` values sum to 1.0 over {fiat, crypto,
            synthetic}; `other`-classified supply is still counted in
            `total_supply` but excluded from this breakdown.
          required:
            - fiat
            - crypto
            - synthetic
          properties:
            fiat:
              $ref: '#/components/schemas/SupplyByCategoryEntry'
            crypto:
              $ref: '#/components/schemas/SupplyByCategoryEntry'
            synthetic:
              $ref: '#/components/schemas/SupplyByCategoryEntry'
    SupplyByCategoryEntry:
      type: object
      description: One bucket in supply_by_category. `pct` is a fraction in [0, 1].
      required:
        - supply
        - pct
      properties:
        supply:
          type: number
          format: double
        pct:
          type: number
          format: double
          minimum: 0
          maximum: 1
  headers:
    XCreditToken:
      description: >-
        Opaque bearer token for a prepaid x402 CU balance. Send it as
        `x-credit-token` to spend that balance. If the balance is insufficient
        and a payment for its verified payer settles, the same token is topped
        up and returned; otherwise the paid call returns a new independent
        token.
      schema:
        type: string
    XCreditBalanceCu:
      description: CU remaining for the returned or presented credit token after this call.
      schema:
        type: integer
        minimum: 0
        example: 480
  responses:
    UnauthorizedError:
      description: Authorization information is missing or invalid
      content:
        application/json:
          example:
            message: Unauthorized
    X402PaymentRequired:
      description: >-
        Keyless x402 payment required. Returned for a keyless caller (gateway
        entry `x-webacy-entry: x402`) with no prepaid CU balance or insufficient
        CU on the presented credit token. Identified by the base64
        `PAYMENT-REQUIRED` response header; the body carries the x402 challenge
        (a USDC price on Base and a Stripe-minted deposit address). Pay it, then
        retry with the `PAYMENT-SIGNATURE` header to unlock the resource and
        receive a credit token. An authenticated api-key caller with a
        past_due/unpaid subscription may instead receive a different 402
        (`Subscription payment required`, plain JSON, no `PAYMENT-REQUIRED`
        header).
      headers:
        PAYMENT-REQUIRED:
          description: >-
            Base64-encoded x402 challenge (network, asset, amount, payTo,
            resource.url). The edge rollout supplies the canonical public
            request path through a valid gateway claim; missing or invalid
            claims safely fall back to the public origin plus an internal path
            identifier. resource.url is not yet suitable for publishing to a
            public x402 discovery catalog (Coinbase's Bazaar): route-specific
            declarations and live paid validation are still pending.
          schema:
            type: string
      content:
        application/json:
          example:
            x402Version: 1
            error: payment required
    X402ServiceUnavailable:
      description: >-
        x402 paywall fails CLOSED: if payment configuration is incomplete or
        invalid, the x402 route unexpectedly has no payment requirement, or the
        facilitator, credit store, or settlement is unavailable, a gated keyless
        request returns 503 (`Payment service temporarily unavailable`) rather
        than serving the resource unpaid.
      content:
        application/json:
          example:
            message: Payment service temporarily unavailable
  securitySchemes:
    api_key:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.