FINALIZED———————Open the map
04API

Same numbers,
as JSON.

The map is built on these endpoints. Clients never pass an RPC or price URL — sources are fixed server-side and named in every response.

GET /v1/snapshot

One finalized read for 1–3 basket mints: identity checks, decoded index, supply, every vault and the price bundle.

curl "https://basketmap.app/v1/snapshot?mints=<mintA>,<mintB>"

{
  "slot": 466897193, "commitment": "finalized",
  "consistency": "atomic",        // | "cached" | "unstable_snapshot"
  "adapter": "diversifi-index@2.1.0",
  "baskets": [{ "input": "<mintA>", "kind": "registry", "supply": "1987803419",
                "layout": { "bytes": 348, "slots": 8, "version": "v2" },
                "checks": [...], "constituents": [{ "mint": "...", "targetBps": 3500,
                "vault": "...", "vaultExists": true, "raw": "1526444996376" }] }],
  "prices": { "<mint>": { "usd": 0.3316, "slot": 466897166, "source": "jupiter-price-v3" } },
  "evidence": [{ "address": "...", "role": "vault", "sha256": "..." }]
}

GET /v1/registry

Supported baskets with targets and constituent symbols, plus the count of detected indexes.

Reports

A report = snapshot + your quantities, evaluated by the open engine. Holders and API clients get server-kept versions:

POST /v1/reports            { network, positions: [{ mint, quantity }], idempotencyKey }
GET  /v1/reports/{id}       frozen version — never re-read
GET  /v1/reports/{id}/evidence
GET  /v1/reports/{id}/export
POST /v1/reports/{id}/share   → share token   ·   DELETE revokes it

A refresh is a new POST and a new id. Reading someone else's private report is refused.

Export schema

schema        "basketmap.report/1"
metric        "gross look-through of visible vault balances — not net redeemable NAV"
positions[]   mint, quantityAtomic, supplyAtomic, axes{}, blockers[], checks[]
  constituents[]  targetBps, actualBps, vaultRaw, share{numerator, denominator}, state, priceUsd
overlaps[]    a, b, value | null, reason
exposure      byMint[], knownUsd, totalUsd | null
evidence[]    address, role, owner, bytes, sha256

Exports keep raw integers and rational shares next to the display values. They never contain an RPC URL, an email or a watchlist.

Limits

  • Public lookups: 30 snapshots per minute per client; then 429 with retryAfterSec.
  • Up to 3 baskets and 8 constituents each per report; one batch of ≤ 100 accounts.
  • Source timeout 5 s; at most two retries for a moving config; cache 60 s.