Skip to main content
This endpoint requires a Growth or Enterprise plan. Learn more.
This query is deprecated. Event-derived and retiring with the legacy lock pipeline. Use liquidityLocksV2.

Returns

LiquidityLockConnection
See LiquidityLockConnection

Arguments

String
The address of the pair.
String
The address of the token.
Int!
required
The network id of the pair.
String
A cursor for use in pagination.
liquidityLocks is deprecated and retiring with the legacy event-derived lock pipeline. Use liquidityLocksV2, which reads lock state from the chain right now, matures vesting at read time, and returns lockedPercent directly.

Example

Test this query in the Explorer →

Usage Guidelines

  • Query by pairAddress to get all locks for a specific trading pair, or by tokenAddress to get locks across all pairs containing that token
  • networkId is required — specify the chain (e.g., 1399811149 for Solana, 1 for Ethereum)
  • Each lock includes ownerAddress (who created the lock), lockerAddress (the locker contract), and timing info (createdAt, unlockAt)
  • lockProtocol indicates the locking mechanism; see LiquidityLockProtocol for every value and what it covers
  • pairLiquidityData provides totalLiquidity for each pair — sum liquidityAmount from items to get total locked
  • Use cursor for pagination when there are many lock records

Troubleshooting Tips

liquidityLocks returns individual lock records with details like owner, unlock time, and amounts. liquidityMetadata returns aggregated lock data (total locked vs total liquidity) without individual lock details. Use liquidityLocks when you need to display a list of locks or check specific unlock dates.
When unlockAt is null, the liquidity is permanently locked. This typically happens with BURN locks where LP tokens are sent to a burn address, or locks created without an expiration. These locks cannot be withdrawn.
For concentrated liquidity pools (UniV3, Orca Whirlpool), liquidity positions are represented as NFTs. liquidityNftData contains the nftTokenId and nftPositionManagerAddress for these positions. It’s null for traditional LP token locks.
Sum the liquidityAmount from all items to get total locked liquidity, then divide by totalLiquidity from pairLiquidityData: lockedPercentage = sumOfLiquidityAmounts / totalLiquidity * 100. Because this query is event-derived, expired or withdrawn locks can still appear in items, so the sum can overstate what is locked today. liquidityLocksV2 returns lockedPercent from a single current on-chain read instead.
liquidityLocks only knows about a lock from the transaction that created it and does not re-check it afterwards. Locks created before Codex indexed a protocol are also missing. Both are fixed in liquidityLocksV2, which reads the locker’s current registry, hook custody, or lock accounts directly.
Last modified on September 10, 2026