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

# xStocks Quote Assets

> List xStocks wrappers that have an InkyPump deployment and their exact launch configuration.

This endpoint is available on Ink only.

## Query parameters

<ParamField query="chainId" type="number" required>
  Must be `57073`.
</ParamField>

<ParamField query="page" type="number" default="1">
  One-based page number.
</ParamField>

<ParamField query="pageSize" type="number" default="50">
  Number of assets. Maximum `100`.
</ParamField>

<ParamField query="search" type="string">
  Search symbol, name, or API asset ID. Maximum 80 sanitized characters.
</ParamField>

<ParamField query="wrapper" type="string">
  Return one wrapper deployment.
</ParamField>

<ParamField query="snapshotVersion" type="number">
  Read a specific release snapshot.
</ParamField>

## Response shape

```ts theme={null}
type QuoteAssetResponse = {
  chainId: 57073
  release: Release
  releases: Release[]
  page: number
  pageSize: number
  totalCount: number
  totalPages: number
  assets: QuoteAsset[]
}

type Release = {
  snapshotVersion: number
  assetCount: number
  merkleRoot: `0x${string}`
  contentHash: `0x${string}`
  leafScheme: "legacy-v1" | "version-bound-v1"
  releaseBinding: null | {
    kind: "version-bound-v1"
    releaseId: `0x${string}`
    registryAddress: `0x${string}`
    factoryAddress: `0x${string}`
    bundleHash: `0x${string}`
  }
}

type QuoteAsset = {
  apiAssetId: string
  assetId: `0x${string}`
  wrapperAddress: `0x${string}`
  underlyingAssetAddress: `0x${string}`
  name: string
  symbol: string
  logoUrl: string | null
  decimals: number
  isTradingHalted: boolean
  supportsAtomicSwaps: boolean
  snapshotVersion: number
  release: Release
  config: {
    assetId: `0x${string}`
    wrapper: `0x${string}`
    underlyingAsset: `0x${string}`
    decimals: 18
    minRaise: string
    maxRaise: string
    minBuy: string
    buybackFlushThreshold: string
    priceScale: string
    metadataHash: `0x${string}`
  }
  merkleProof: `0x${string}`[]
  valuation: null | {
    status: string
    wrapperPriceUsd: string | null
    source: string
    providerObservedAt: string | null
    observedAt: string
    failureReason: string | null
  }
  deployment: null | {
    hookAddress: `0x${string}`
    viewerAddress: `0x${string}`
    factoryAddress: `0x${string}`
    poolManagerAddress: `0x${string}`
    protocolFeeRecipient: `0x${string}`
    snapshotVersion: number
    runtimeCodeHash: `0x${string}`
    configurationHash: `0x${string}`
    proxySalt: `0x${string}`
    active: boolean
    disabledReason: string | null
  }
  activation: null | {
    factoryAddress: `0x${string}`
    quotedImplementationAddress: `0x${string}`
    proxySalt: `0x${string}`
    predictedHookAddress: `0x${string}`
    initializationDataHash: `0x${string}`
    proxyInitCodeHash: `0x${string}`
    assetConfigurationHash: `0x${string}`
    miningAttempts: string
    snapshotVersion: number
    status: "MINED" | "DEPLOYED" | "INVALIDATED"
    invalidatedReason: string | null
  }
  canCreate: boolean
}
```

## Request

```bash theme={null}
curl "https://inkypump.com/api/xstocks/quote-assets?chainId=57073&pageSize=100"
```

Use `canCreate`, the exact wrapper, the exact hook, and raw-unit limits for creation. An asset can belong to a release other than the top-level primary release, so bind proofs and hashes to `asset.release`. Do not gate the on-chain launch on a non-null `valuation`; that object is USD display evidence.

See [xStocks Launches](/integrations/xstocks-launches) for approvals and transaction construction.
