Wallet NFT endpoints now correctly document EVM-only addresses
The wallet NFT endpoints previously documented the sharedaddress parameter as accepting either an EVM or Solana address. Zerion’s NFT data does not support Solana wallets, so these endpoints now document an EVM-only address parameter. This is a documentation-only clarification. The endpoints have always rejected Solana addresses with a 400; the parameter description simply didn’t reflect that.Affected endpoints:GET /v1/wallets/{address}/nft-positions/GET /v1/wallets/{address}/nft-collections/GET /v1/wallets/{address}/nft-portfolio
Filter wallet balance charts by liquidity-pool / vault position
Newfilter[pool_addresses] and filter[exclude_pool_addresses] query parameters on the wallet and wallet-set balance chart endpoints scope the chart to specific liquidity-pool / vault positions by contract address (the Uniswap V2 LP-token or ERC-4626 vault (e.g. Morpho) address). Pass up to 25 addresses. filter[pool_addresses] charts only the matching protocol positions; filter[exclude_pool_addresses] removes them while keeping the rest of the portfolio. The two are mutually exclusive; combining them returns 400. These filters select complex (protocol) positions, so combining either with filter[positions]=only_simple also returns 400.Affected endpoints:GET /v1/wallets/{address}/charts/{chart_period}GET /v1/wallet-sets/charts/{chart_period}
Receipt tokens for DeFi positions
Wallet and wallet-set position responses now include an optional receipt for a token representing a DeFi position.Affected endpoints:GET /v1/wallets/{address}/positions/GET /v1/wallet-sets/positions/
Chart point granularity documented for balance & price charts
Documented the sampling interval (spacing betweenpoints) for each chart_period on the chart endpoints. This is a documentation-only clarification. The cadence has always been emitted by these endpoints; it simply wasn’t described in the reference.Each period samples its time window at a fixed interval: hour → 10s, day → 5m, week → 30m, month → 2h, 3months → 6h, 6months → 12h, year → 1d, 5years → 4d. For max, the interval is derived from available history, so it varies by wallet or asset.Affected endpoints:GET /v1/wallets/{address}/charts/{chart_period}GET /v1/wallet-sets/charts/{chart_period}GET /v1/fungibles/{fungible_id}/charts/{chart_period}GET /v1/fungibles/by-implementation/charts/{chart_period}
Wallet balance charts: include DeFi protocol positions
Addedfilter[positions] to the wallet and wallet-sets balance chart endpoints, letting you include complex DeFi protocol positions (liquidity pools, vaults) alongside plain token balances:only_simple(default): token and native-coin balances held directly in the wallet. Matches previous behavior, so existing integrations are unaffected.only_complex: complex DeFi protocol positions only.no_filter: both.
GET /v1/wallets/{address}/charts/{chart_period}GET /v1/wallet-sets/charts/{chart_period}
Raw on-chain amounts for Token-2022 ScaledUiAmount assets
For Token-2022 ScaledUiAmount (rebasing) assets such as SPYx,quantity.int is now the objective on-chain raw amount in base units. Use this value to build correct on-chain transactions, including max-balance (send-max) transfers, which fail on-chain when built from the scaled display amount.quantity.int: objective on-chain raw amount in base units.quantity.float/quantity.numeric: ready-to-display value =int / 10^decimals. For ScaledUiAmount assets, the display value isint × multiplier / 10^decimals.
int already equals the on-chain amount.Affected endpoints:GET /v1/wallets/{address}/positions/GET /v1/wallet-sets/positions/
quantity.int previously carried the scaled display amount and now carries the raw on-chain amount. Read the display value from quantity.float or quantity.numeric.Wallet NFT positions: page size cap raised to 500
GET /v1/wallets/{address}/nft-positions/ now accepts page[size] values up to 500 (previously capped at 100). This lets you fetch large NFT wallets in significantly fewer requests. Existing requests are unaffected; this only raises the maximum, and the default page size is 50.Affected endpoint:GET /v1/wallets/{address}/nft-positions/
page[size] up to 500 and keep following the links.next cursor to paginate.Find wallets within subscription: page size cap raised to 2000
GET /v1/tx-subscriptions/{subscription_id}/wallets now accepts page[size] values up to 2000 (previously capped at 100). The default page size remains 100, so existing clients are unaffected.Affected endpoint:GET /v1/tx-subscriptions/{subscription_id}/wallets
Wallet balance charts: exclude fungibles
Addedfilter[exclude_fungible_ids] to the wallet and wallet-sets balance chart endpoints. Use it to drop a small set of tokens from the chart instead of enumerating everything you want to keep. Same shape as filter[fungible_ids]: comma-separated, capped at 25 ids. Combining it with filter[fungible_ids] returns 400; pick one.Affected endpoints:GET /v1/wallets/{address}/charts/{chart_period}GET /v1/wallet-sets/charts/{chart_period}
Swap Offers API: deprecated
GET /v1/swap/offers/ is now deprecated and has been hidden from the API reference. Use GET /v1/swap/quotes/ instead, which covers the same use cases and adds native support for Solana and EVM ↔ Solana bridges.Sunset date: the endpoint will be permanently disabled on July 1, 2026. Requests after that date will fail.Migration:- Switch calls from
GET /v1/swap/offers/toGET /v1/swap/quotes/. - The response body shape differs: transactions are wrapped in chain-agnostic
evm/solanaenvelopes, and fees are split into separateprotocol_fee/bridge_fee/network_feeblocks. See the Swap Quotes reference for the full schema. - Quotes are returned best-first (sorted by
output_amount_after_fees), matching the ordering you already get from/v1/swap/offers/.
Reference docs: clarifications across PnL, swap, and wallet endpoints
Refreshed several reference-doc descriptions to better match how the API actually behaves. No behavior changes. Every update describes behavior that’s already live in production.Clarifications:- PnL
since/tillis a hard limit, not a guideline (GET /wallets/{address}/pnl,GET /wallet-sets/pnl). PnL is pre-computed at standard marks (now,1 day ago,1 week ago,1 month ago,1 year ago,beginning of the year); other timestamps are accepted only when fewer than 3,000 transactions sit between your timestamp and the nearest mark, otherwise the request errors out. - Swap endpoints rewritten (
GET /v1/swap/offers/,GET /v1/swap/fungibles/)./v1/swap/offers/returns ready-to-sign transaction data in a single call (0.8% Zerion fee included in the quoted amounts), not a multi-step quote-then-execute flow as previously documented./v1/swap/fungibles/is a token-picker helper for cross-chain swaps only. - Swap section reordered to
quotes→offers→fungibles, surfacing/v1/swap/quotes/as the modern primary endpoint. - Wallet address validation documented (
WalletAddressparameter,GET /wallets/{address}/transactions/). Addresses must be valid EVM or Solana; untracked addresses return400(API-1903). filter[operation_types]duplicated enum removed (GET /wallets/{address}/transactions/,GET /wallets/transactions/,GET /wallet-sets/transactions/). The bulleted list was rendered twice and the inline copy was stale (missingbid); the schema$refis now the single source of truth.PATCH /v1/tx-subscriptions/{id}/wallets100-address batch cap documented. Theaddandremovearrays accept at most 100 addresses per request;maxItems: 100is now in the schema.
Webhooks: payload example fix
Fixed two errors in the example payloads on the Webhooks page. No breaking changes. The production webhook payload format is unchanged; only the documentation examples were wrong.Corrections:data.typeis"callback"(the docs incorrectly showed"transaction_notification").- The rollback indicator
deleted: trueis on the transaction resource atincluded[0].attributes.deleted(the docs incorrectly showed it ondata.attributes.deleted).
included, not from data.attributes.Swap Quotes API: new endpoint
AddedGET /v1/swap/quotes/, which returns swap quotes from multiple liquidity sources for both same-chain swaps and cross-chain bridges. Supports EVM chains and Solana, including EVM ↔ Solana bridges./v1/swap/offers/:- Native support for Solana wallets and bridges between EVM and Solana chains.
- The response body has been restructured: transactions are wrapped in chain-agnostic
evm/solanaenvelopes, fees are split into separateprotocol_fee/bridge_fee/network_feeblocks.
/v1/swap/offers/ endpoint remains for backward compatibility.Transactions API: fee acts
Transactions and acts may now carry the typefee, and a new fee_kind field on Act classifies fee acts. No breaking changes. This is an additive change.New fee type value:
Both the transaction-level type enum and the per-act type (ActType) enum now include fee. A fee-typed act represents a fee charge that appears alongside existing acts in the transaction’s acts array; a transaction whose primary operation is a fee charge will surface type: fee at the top level.New fee_kind field on Act:
Optional string that classifies a fee act. Only present on acts of type fee.ui: fee charged by the UI / client application (e.g., a wallet or dApp frontend)jito: Jito tip paid on Solana for priority inclusion
GET /wallets/{address}/transactions/GET /wallet-sets/transactions/
fee in addition to the previously documented values; unknown types should be handled gracefully. To surface fee acts to end users, render acts with type: fee and optionally distinguish them by fee_kind.Wallet Sets API: new endpoints
Added five new endpoints for wallet sets, which provide aggregated portfolio data across up to one EVM and one Solana address simultaneously.Pass one or two addresses via theaddresses query parameter (at most one EVM and one Solana address):GET /wallet-sets/portfolioGET /wallet-sets/positions/GET /wallet-sets/transactions/GET /wallet-sets/charts/{chart_period}GET /wallet-sets/pnl
Fungibles API: sort by trading volume
Added 24-hour trading volume as a new sort option forGET /fungibles/.-market_data.trading_volumes.volume_1d: highest volume firstmarket_data.trading_volumes.volume_1d: lowest volume first
Fungibles API: new fields
Added trading volume and deployment date fields to fungible data. No breaking changes.New fields inFungibleAttributes.market_data:trading_volumes.volume_1d: total 24-hour trading volume across all chains
AttributesImplementation (new dedicated type for implementations array, backward compatible with all existing fields):market_data.trading_volumes.volume_1d: 24-hour trading volume on this chaindeployment_date: ISO 8601 datetime when the token contract was deployed
Transactions API: OpenAPI documentation fix
Fixed OpenAPI schema inconsistencies between documentation and implementation for the/transactions endpoints. No breaking changes. API responses remain unchanged; only the OpenAPI spec was corrected.Nullable fields corrected:- Fee:
fungible_info,price,valuemarked as nullable - Refund:
fungible_info,price,valuemarked as nullable - Transfer:
price,valuemarked as nullable - Fungible Info:
iconmarked as nullable
- Transaction attributes:
address,refund,delegations - Fungible Info:
id
null values, as these were already nullable in practice.Chart periods: new time values
Added two new time period values to thechart_period parameter:6months: 6-month chart period5years: 5-year chart period
hour, day, week, month, 3months, year, and max.Affected endpoints:GET /wallets/{address}/charts/{chart_period}GET /fungibles/{fungible_id}/charts/{chart_period}GET /fungibles/by-implementation/charts/{chart_period}
Portfolio API: sync parameter
Added newsync query parameter to the /wallets/{address}/portfolio endpoint.true: Triggers a position sync and waits up to 30 seconds for fresh portfolio data before responding.false(default): Returns immediately with cached data.
sync=true.Positions API: sync parameter
Added newsync query parameter to the /wallets/{address}/positions endpoint.true: Waits up to 30 seconds for protocol positions to be updated and returns fresh data.false(default): Returns immediately with available position data.
sync=true.