---
title: "Batch trader intelligence"
method: POST
path: "/api/v1/traders/batch"
tags: ["Traders"]
---

# Batch trader intelligence

`POST /api/v1/traders/batch`

Returns trader intelligence for 1-25 wallet addresses or known usernames. Results preserve request order, duplicate inputs return duplicate rows, and each item is charged one batch item unit before execution. Unknown trader lookups return data with sync_status "unknown" matching the single trader endpoint.

## Request body

- object
  - `traders` string[], required
  - `expand` string[] — Shared expand flags applied to every trader item.

## Response `200`

Ordered batch trader results

- object
  - `object` 'trader_batch', required
  - `data` BatchTraderItem[], required
    - `index` integer, required — Zero-based request index. Duplicate inputs keep separate result rows.
    - `input` string, required
    - `status` 'ok' | 'error', required
    - `data` Trader
      - `id` string, required — Prefixed ID (trd_...).
      - `address` string, required
      - `username` string, nullable
      - `grade` 'S' | 'A' | 'B' | 'C' | 'D' | 'F', nullable
      - `streak_tier` 'hot' | 'rising' | 'neutral' | 'cooling' | 'cold', nullable — Hot-streak tier (trailing-7d cross-sectional percentile); a separate axis from the all-time grade. Null when no recent activity.
      - `score` number, nullable
      - `rank` integer, nullable
      - `pnl` object, required
        - `total` number, nullable
        - `realized` number, nullable
        - `unrealized` number, nullable
        - `last_7d` number, nullable — DEPRECATED, always null. The local pnl_7d rollup over-counted P&L (#5416 class) and is no longer emitted. Read the provider-native weekly window from GET /api/trader/{address}/profile-summary instead.
        - `last_30d` number, nullable — DEPRECATED, always null. The local pnl_30d rollup over-counted P&L (#5416 class) and is no longer emitted. Read the provider-native monthly window from GET /api/trader/{address}/profile-summary instead.
      - `stats` object, required
        - `markets_traded` integer, nullable
        - `win_rate` number, nullable
        - `daily_win_rate` number, nullable
        - `total_volume` number, nullable
      - `strategy` object, nullable
        - `strategy_type` string
        - `description` string, nullable
        - `confidence` number, nullable
      - `category_strengths` object, nullable — Per-category performance breakdown (expand=categories or expand[]=categories). Omitted unless expanded. Object keyed by category name; each value is the precomputed trader_rankings.category_ranks payload (rank, total_in_category, total_pnl, scaled_total_pnl, n_markets, wins, losses, win_rate; scaled_total_pnl is a legacy alias that currently equals total_pnl). Pass-through DB JSON: keys and value shape are DB-owned, so the inner shape is intentionally unconstrained and may carry additional compatibility fields.
      - `quant_metrics` object, nullable — Curated advanced risk/performance metrics (expand=quant_metrics or expand[]=quant_metrics). Omitted unless expanded and backed by a computed row strictly under six hours old; a missing row, NULL computed_at, or age of exactly six hours or more is stale and omitted. Provider-input changes may intentionally lag inside the bounded six-hour window. When present, all listed fields are present (each is a number or null); null means insufficient trade history and must not be treated as 0. The fixed field shape is unchanged.
        - `smart_score` number, nullable, required — Composite skill score, 0-100. smart_score = clamp(0, 100, 30*sharpe_percentile_fraction + 20*profit_factor_percentile_fraction + 20*edge_consistency_percentile_fraction + 10*min(1, return_on_capital/2) + 10*equity_smoothness + 10*(1 - min(1, asset_concentration))). Higher is better. null when insufficient history.
        - `copy_score` number, nullable, required — Copyability score, 0-100. Same base as smart_score minus penalties for traits that make a strategy hard to replicate: -20 if fewer than 50 markets traded, -15 if positions are highly concentrated, -15 if position sizing exceeds about 2x Kelly, -10 if the worst single-trade loss exceeds 30%, -10 if edge is inconsistent; result clamped to 0-100. Higher means easier to follow. null when insufficient history.
        - `sharpe_30d` number, nullable, required — Sharpe ratio over the trailing 30 days (risk-adjusted return; higher is better). Magnitude can be large for small samples. null when insufficient history.
        - `sharpe_7d` number, nullable, required — Sharpe ratio over the trailing 7 days (risk-adjusted return; higher is better). null when insufficient history.
        - `profit_factor` number, nullable, required — Gross profit divided by gross loss; greater than 1 is profitable. Capped at 1000 when there are effectively no losses. null when insufficient history.
        - `edge_consistency` number, nullable, required — Stability of the trader's edge over time, 0-1 (higher is more consistent). null when insufficient history.
        - `sharpe_percentile` number, nullable, required — Cross-sectional percentile rank of the trader's Sharpe ratio versus all traders, 0-100. null when insufficient history.
        - `pf_percentile` number, nullable, required — Cross-sectional percentile rank of profit factor versus all traders, 0-100. null when insufficient history.
        - `consistency_percentile` number, nullable, required — Cross-sectional percentile rank of edge consistency versus all traders, 0-100. null when insufficient history.
      - `last_active` string, date-time, nullable
      - `synced_at` string, date-time, nullable
      - `sync_status` string, nullable — synced, unknown, or pending.
      - `trust` TraderTrust — Field-level trust metadata returned only when GET /api/v1/trader/{address} includes expand=trust.
        - `total_pnl` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `realized_pnl` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `unrealized_pnl` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `markets_traded` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `win_rate` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `daily_win_rate` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `total_volume` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `grade` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `score` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `rank` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `streak_tier` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `strategy` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `category_strengths` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `quant_metrics` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `last_active` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `synced_at` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
        - `sync_status` TrustMetadata, required — Shared source/freshness/reconciliation/completeness metadata for public API values that may be cached, stale, partial, computed, or provider-unavailable. Unavailable provider values must be represented with explicit metadata instead of fabricated zeros or empty arrays.
          - `source` TrustSource, required — Source metadata for a trust-critical value. Providers and DB/read models own business truth; clients should not infer missing provider facts from titles, slugs, zeros, or empty arrays.
            - `kind` 'provider' | 'database' | 'cache' | 'computed' | 'client_input' | 'unavailable', required
            - `owner` string, required — Provider, table/read-model, cache, or service that owns the value.
            - `field` string, nullable — Provider field, DB column, or computed field name when applicable.
          - `freshness` TrustFreshness, required — Freshness metadata for a trust-critical value. This is separate from transport cache fields in ResponseMeta.
            - `status` 'fresh' | 'refreshing' | 'stale' | 'not_live' | 'unknown' | 'unavailable', required
            - `as_of` string, date-time, nullable
            - `max_age_s` integer, nullable
          - `reconciliation` TrustReconciliation, required — How provider-owned facts were reconciled with stored/read-model values.
            - `status` 'provider_backed' | 'db_mirror' | 'computed' | 'partial' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
          - `completeness` TrustCompleteness, required — Whether the described value or result set is complete for its stated contract.
            - `status` 'complete' | 'partial' | 'not_computed' | 'not_applicable' | 'unavailable', required
            - `detail` string, nullable
    - `error` ApiErrorBody
      - `code` 'bad_request' | 'invalid_api_key' | 'subscription_required' | 'forbidden' | 'not_found' | 'account_locked' | 'rate_limited' | 'rate_limit_unavailable' | 'internal_error', required
      - `message` string, required
      - `doc_url` string, nullable
      - `param` string, nullable
      - `retry_at` string, date-time, nullable — The recommended next retry instant (RFC3339). Present on every retryable error (reason=pick_not_released, code=rate_limited, code=rate_limit_unavailable, reason=read_model_warming) and omitted otherwise. Always in the future. For pick_not_released: before the 11:00 UTC operating-window start, before a selected pick's stored release, or after a skipped day, it names the automatic system's next boundary. While no candidate exists in the live window it normally names the persisted next automatic selector attempt (~15m). Every value is advisory under supported operator actions: manual publication, release-time override, or admin generation can make a pick available first. When the automatic schedule is absent/due or a pick is overdue it degrades to ~60s. Schedule one request and do not poll. Prefer Retry-After for the duration because it is immune to client clock skew.
      - `reason` 'cursor_expired' | 'unknown_endpoint' | 'pick_not_released' | 'trader_not_tracked' | 'read_model_warming' | 'idempotency_in_progress' | 'webhook_delivery_in_progress', nullable — ADDITIVE (#7209). The specific, actionable cause behind `code`, when there is one more specific than the code itself. `code` keeps its published values, so existing clients are unaffected; new clients branch on `reason`. Omitted when the code already says everything we know. pick_not_released: no Pick of the Day is published for the current product day; schedule one request against retry_at instead of polling. unknown_endpoint: the PATH is not a route on this API -- read GET /api/v1, do not retry. trader_not_tracked: the wallet is real and the URL is right, but the trader is outside the HOT/WARM sync tiers -- stop asking for this wallet. cursor_expired: pagination went stale mid-walk -- re-request the first page and continue. read_model_warming: the requested endpoint cannot serve its read model yet; exact causes are endpoint-specific and can include a cold or contended refresh or a dependency that prevented refresh. idempotency_in_progress: retain the exact Idempotency-Key and request body, then retry shortly. webhook_delivery_in_progress: retry the URL or signing-secret configuration change after the destination's active request completes.
  - `meta` BatchResponseMeta, required
    - `request_id` string, required
    - `cached` boolean, required
    - `total_items` integer, required
    - `successful_items` integer, required
    - `failed_items` integer, required
    - `request_cost` integer, required — Number of batch item units reserved before execution.
    - `rate_limit` BatchRateLimitMeta, required
      - `basis` 'batch_items_per_minute', required
      - `limit` integer, required
      - `remaining` integer, required
      - `reset` integer, required — Unix timestamp when the batch item window resets.

## Other responses

- `400` — Invalid request parameter
- `401` — Missing or invalid API key
- `402` — Active Pro subscription required
- `403` — Account access denied
- `408` — Request exceeded the server's 30-second transport timeout. The timeout response has an empty body because it is generated before handler-level JSON error shaping.
- `423` — Account is locked
- `429` — Rate limit exceeded. Two independent budgets. (1) 100 requests/minute per user (sliding window), on every authenticated route. (2) On the BATCH routes only: 2500 batch item units/minute per user, reserved before any item is executed. A batch with N requested items costs N item units, including duplicate and invalid items. 2500 = 100 requests x 25 items per batch, which is the most item work a key can buy through the request limiter at all: a caller may spend their entire 100-request minute on full 25-item batches without the item budget being what stops them. The REQUEST budget is the effective ceiling, and batching is never the more expensive choice. The item budget can still deny at a sliding-window boundary (both counters carry the previous window forward with a floor, and the item counter runs 25x the request counter), so honor a 429 from either. Over-quota batches return 429 with Retry-After before any item work is done.
- `500` — Unexpected server error
- `503` — Redis-backed authenticated rate limiter unavailable; retry after the per-process outage cooldown

---

[API](https://skmtc.net/0xinsider/apis/0xinsider-api.md) · [All operations](https://skmtc.net/0xinsider/apis/0xinsider-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/0xinsider/0xinsider-api/versions/918e082b045a/schema)
