> ## 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.

# Batch Structural Health Check

> Returns the live structural-health criteria (`mint_burn_anomaly`, `large_holder_concentration`) for up to 100 `{ address, chain }` tuples. Per-token failures are reported in-band as `{ ok: false, error_code }` so a single bad address never fails the whole batch (HTTP 200). Addresses travel in the POST body (privacy + non-EVM encoding).

**CU cost:** 1 CU × token count (`v3-rwa-structural-health-batch`).

<Note>
  This endpoint **always returns HTTP 200** — check each result's `ok` field, and read `error_code` (`NOT_FOUND`, `INVALID_ADDRESS`, `UNSUPPORTED_CHAIN`) when `ok` is `false`. Malformed requests — empty `tokens`, more than 100 tokens, or unknown properties — return `400` and no tokens are evaluated. See [batch partial-success semantics](/api-reference/rwa-v3#batch-partial-success-semantics).
</Note>


## OpenAPI

````yaml POST /v3/rwa/batch/structural-health
openapi: 3.0.1
info:
  title: Risk Score API
  description: API definition for Webacy Risk Scores
  version: 1.2.0
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: 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 (RFC-019).
  - name: RWA Risk v3
    description: >-
      Webacy-native v3 RWA / stablecoin risk surface — composite grade,
      structural-health criteria, and batch (RFC-019).
paths:
  /v3/rwa/batch/structural-health:
    post:
      tags:
        - RWA Risk v3
      summary: Batch structural-health for N RWA / stablecoin tokens
      description: >-
        Returns the live structural-health criteria (`mint_burn_anomaly`,
        `large_holder_concentration`) for up to 100 `{ address, chain }` tuples.
        Per-token failures are reported in-band as `{ ok: false, error_code }`
        so a single bad address never fails the whole batch (HTTP 200).
        Addresses travel in the POST body (privacy + non-EVM encoding).


        **CU cost:** 1 CU × token count (`v3-rwa-structural-health-batch`).
      operationId: getRwaStructuralHealthBatchV3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StructuralHealthBatchRequest'
            example:
              tokens:
                - address: '0x100faa513ac917181eb29f73b64bf7a434a206fe'
                  chain: base
                - address: 0xnope
                  chain: base
      responses:
        '200':
          description: Per-token structural-health results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StructuralHealthBatchResponse'
              example:
                schema_version: '3.0'
                results:
                  - address: '0x100faa513ac917181eb29f73b64bf7a434a206fe'
                    chain: base
                    ok: true
                    mint_burn_anomaly:
                      status: pass
                      data_quality:
                        confidence: 0.95
                        last_observed_at: '2026-06-02T09:49:36Z'
                        source: rwa-grade-pipeline
                    large_holder_concentration:
                      status: warn
                      data_quality:
                        confidence: 0.95
                        last_observed_at: '2026-06-02T09:49:36Z'
                        source: rwa-grade-pipeline
                  - address: 0xnope
                    chain: base
                    ok: false
                    error_code: NOT_FOUND
        '400':
          description: Invalid body (empty / >100 tokens / unknown property).
        '403':
          description: Missing or invalid x-api-key.
      security:
        - api_key: []
components:
  schemas:
    StructuralHealthBatchRequest:
      type: object
      properties:
        tokens:
          type: array
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/StructuralHealthTokenInput'
      required:
        - tokens
    StructuralHealthBatchResponse:
      type: object
      properties:
        schema_version:
          type: string
          example: '3.0'
        results:
          type: array
          items:
            $ref: '#/components/schemas/StructuralHealthResult'
      required:
        - schema_version
        - results
    StructuralHealthTokenInput:
      type: object
      properties:
        address:
          type: string
        chain:
          type: string
      required:
        - address
        - chain
    StructuralHealthResult:
      description: >-
        Per-token result. Either ok with the live structural-health criteria, or
        a failure with an error_code. The batch never fails as a whole.
      oneOf:
        - type: object
          properties:
            address:
              type: string
            chain:
              type: string
            ok:
              type: boolean
              enum:
                - true
            mint_burn_anomaly:
              $ref: '#/components/schemas/V3Criterion'
            large_holder_concentration:
              $ref: '#/components/schemas/V3Criterion'
          required:
            - address
            - chain
            - ok
        - type: object
          properties:
            address:
              type: string
            chain:
              type: string
            ok:
              type: boolean
              enum:
                - false
            error_code:
              type: string
              enum:
                - NOT_FOUND
                - INVALID_ADDRESS
                - UNSUPPORTED_CHAIN
          required:
            - address
            - chain
            - ok
            - error_code
    V3Criterion:
      type: object
      description: 'One graded criterion: pass/warn/fail verdict plus provenance.'
      properties:
        status:
          type: string
          enum:
            - pass
            - warn
            - fail
        data_quality:
          $ref: '#/components/schemas/V3DataQuality'
        evidence:
          type: object
          description: >-
            Optional free-form provenance bag. Reserved for a future release —
            not emitted today.
          additionalProperties: true
      required:
        - status
        - data_quality
    V3DataQuality:
      type: object
      description: >-
        Provenance envelope on every emitted v3 criterion. Vault-level freshness
        is painted uniformly today; true per-source values populate in a future
        release.
      properties:
        confidence:
          type: number
          description: 0–1 confidence in the underlying data point.
          example: 0.95
        last_observed_at:
          type: string
          format: date-time
          description: Upstream observation timestamp.
        source:
          type: string
          example: rwa-grade-pipeline
      required:
        - confidence
        - last_observed_at
        - source
  securitySchemes:
    api_key:
      type: apiKey
      in: header
      name: x-api-key

````