# Endpoints

## List tokens

> Get a list of tokens for the given chain ID

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/tokens":{"get":{"tags":["Meta"],"summary":"List tokens","description":"Get a list of tokens for the given chain ID","operationId":"get_ListTokens","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"name":"chainId","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":32,"description":"Token symbol search"},"required":false,"description":"Token symbol search","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1000},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string","pattern":"^(?:\\d+|0x[a-fA-F0-9]+):0x[a-fA-F0-9]+$","description":"The :-concatenated chain ID and token address for pagination"},"required":false,"description":"The :-concatenated chain ID and token address for pagination","name":"afterToken","in":"query"},{"schema":{"type":["integer","null"],"minimum":-100,"maximum":100,"description":"Token visibility priority threshold","title":"Visibility Priority"},"required":false,"name":"minVisibilityPriority","in":"query"}],"responses":{"200":{"description":"List of tokens","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the token"},"symbol":{"type":"string","minLength":1,"maxLength":32,"description":"Symbol for the token"},"decimals":{"type":"integer","minimum":0,"maximum":78,"description":"The number of decimals used for display of token balances"},"address":{"type":"string","description":"The address of the token for the specified chain"},"visibility_priority":{"type":"integer","description":"How much this token should be surfaced relative to other tokens (higher is better)"},"sort_order":{"type":"integer","description":"How much the token should prefer to be the numerator when displayed in prices (higher is more numerator-like)"},"total_supply":{"type":["integer","null"],"minimum":0,"description":"The total supply of the token"},"logo_url":{"type":"string","format":"uri"},"usd_price":{"type":["number","null"],"minimum":0,"description":"The USD price for one unit of the token"},"bridgeInfos":{"type":["object","null"],"additionalProperties":{"type":"object","properties":{"bridge_address":{"type":"string","description":"Token address for the destination chain"}},"required":["bridge_address"]}}},"required":["chain_id","name","symbol","decimals","address","visibility_priority","sort_order","total_supply","usd_price","bridgeInfos"]},"description":"Array of tokens"}}}}}}}}}
```

## Batch tokens

> Fetch metadata for a specific set of tokens

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/tokens/batch":{"get":{"tags":["Meta"],"summary":"Batch tokens","description":"Fetch metadata for a specific set of tokens","operationId":"get_BatchGetTokens","parameters":[{"schema":{"type":"array","items":{"type":"string","pattern":"^(?:\\d+|0x[a-fA-F0-9]+):0x[a-fA-F0-9]+$","description":"Token identifier formatted as chain_id:token_address where chain_id may be decimal or 0x-prefixed hexadecimal"},"description":"Repeat the id parameter to fetch multiple tokens (e.g. ?id=1:0x...&id=0x1:0x...)"},"required":true,"description":"Repeat the id parameter to fetch multiple tokens (e.g. ?id=1:0x...&id=0x1:0x...)","name":"id","in":"query"}],"responses":{"200":{"description":"Tokens","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the token"},"symbol":{"type":"string","minLength":1,"maxLength":32,"description":"Symbol for the token"},"decimals":{"type":"integer","minimum":0,"maximum":78,"description":"The number of decimals used for display of token balances"},"address":{"type":"string","description":"The address of the token for the specified chain"},"visibility_priority":{"type":"integer","description":"How much this token should be surfaced relative to other tokens (higher is better)"},"sort_order":{"type":"integer","description":"How much the token should prefer to be the numerator when displayed in prices (higher is more numerator-like)"},"total_supply":{"type":["integer","null"],"minimum":0,"description":"The total supply of the token"},"logo_url":{"type":"string","format":"uri"},"usd_price":{"type":["number","null"],"minimum":0,"description":"The USD price for one unit of the token"},"bridgeInfos":{"type":["object","null"],"additionalProperties":{"type":"object","properties":{"bridge_address":{"type":"string","description":"Token address for the destination chain"}},"required":["bridge_address"]}}},"required":["chain_id","name","symbol","decimals","address","visibility_priority","sort_order","total_supply","usd_price","bridgeInfos"]},"description":"Array of tokens"}}}}}}}}}
```

## Get token

> Returns metadata for a specific token on the given chain

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/tokens/{chainId}/{tokenAddress}":{"get":{"tags":["Meta"],"summary":"Get token","description":"Returns metadata for a specific token on the given chain","operationId":"get_GetToken","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenAddress","in":"path"}],"responses":{"200":{"description":"Token information","content":{"application/json":{"schema":{"type":"object","properties":{"chain_id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the token"},"symbol":{"type":"string","minLength":1,"maxLength":32,"description":"Symbol for the token"},"decimals":{"type":"integer","minimum":0,"maximum":78,"description":"The number of decimals used for display of token balances"},"address":{"type":"string","description":"The address of the token for the specified chain"},"visibility_priority":{"type":"integer","description":"How much this token should be surfaced relative to other tokens (higher is better)"},"sort_order":{"type":"integer","description":"How much the token should prefer to be the numerator when displayed in prices (higher is more numerator-like)"},"total_supply":{"type":["integer","null"],"minimum":0,"description":"The total supply of the token"},"logo_url":{"type":"string","format":"uri"},"usd_price":{"type":["number","null"],"minimum":0,"description":"The USD price for one unit of the token"},"bridgeInfos":{"type":["object","null"],"additionalProperties":{"type":"object","properties":{"bridge_address":{"type":"string","description":"Token address for the destination chain"}},"required":["bridge_address"]}}},"required":["chain_id","name","symbol","decimals","address","visibility_priority","sort_order","total_supply","usd_price","bridgeInfos"]}}}},"404":{"description":"Token not found","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","description":"HTTP status code for the error"},"error":{"type":"string","description":"Human-readable description of the error"}},"required":["status","error"],"description":"Standard error response payload"}}}}}}}}}
```

## Get the block closest to a given timestamp

> Returns the block whose timestamp is nearest to the provided timestamp

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/blocks/{chainId}/closest":{"get":{"tags":["Meta"],"summary":"Get the block closest to a given timestamp","description":"Returns the block whose timestamp is nearest to the provided timestamp","operationId":"get_GetClosestBlock","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"type":"string","format":"date-time","description":"Timestamp to find the closest block for in the ISO string format"},"required":true,"description":"Timestamp to find the closest block for in the ISO string format","name":"timestamp","in":"query"}],"responses":{"200":{"description":"The block closest to the given timestamp","content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"integer"},"timestamp":{"type":"string"}},"required":["number","timestamp"]}}}}}}}}}
```

## Get block

> Get information about a particular block ingested by the API

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/blocks/{chainId}/{blockTag}":{"get":{"tags":["Meta"],"summary":"Get block","description":"Get information about a particular block ingested by the API","operationId":"get_GetBlock","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"integer","minimum":160000},{"type":"string","enum":["latest"]}],"description":"The tag of the block to get or the number of a block containing events"},"required":true,"description":"The tag of the block to get or the number of a block containing events","name":"blockTag","in":"path"}],"responses":{"200":{"description":"The timestamp of the given block number","content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"integer"},"timestamp":{"type":"string"}},"required":["number","timestamp"]}}}}}}}}}
```

## Get pairs

> Returns stats for the top pairs

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/overview/pairs":{"get":{"tags":["Stats"],"summary":"Get pairs","description":"Returns stats for the top pairs","operationId":"get_GetOverviewPairs","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"name":"chainId","in":"query"},{"schema":{"type":["number","null"],"minimum":0,"default":1000,"description":"Minimum USD TVL required for a pair to be included"},"required":false,"description":"Minimum USD TVL required for a pair to be included","name":"minTvlUsd","in":"query"}],"responses":{"200":{"description":"The stats for the protocols top pairs","content":{"application/json":{"schema":{"type":"object","properties":{"topPairs":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"token0":{"anyOf":[{"type":"string"},{"type":"number"}]},"token1":{"anyOf":[{"type":"string"},{"type":"number"}]},"volume0_24h":{"type":"string"},"volume1_24h":{"type":"string"},"fees0_24h":{"type":"string"},"fees1_24h":{"type":"string"},"tvl0_total":{"type":"string"},"tvl1_total":{"type":"string"},"tvl0_delta_24h":{"type":"string"},"tvl1_delta_24h":{"type":"string"},"depth0":{"type":"string"},"depth1":{"type":"string"},"min_depth_percent":{"type":["number","null"]}},"required":["chain_id","token0","token1","volume0_24h","volume1_24h","fees0_24h","fees1_24h","tvl0_total","tvl1_total","tvl0_delta_24h","tvl1_delta_24h","depth0","depth1","min_depth_percent"]}}},"required":["topPairs"]}}}}}}}}}
```

## Get boosted fees pools

> Returns pools with boosted fees state, including current and scheduled donation deltas

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/overview/boosted-fees-pools":{"get":{"tags":["Stats"],"summary":"Get boosted fees pools","description":"Returns pools with boosted fees state, including current and scheduled donation deltas","operationId":"get_GetOverviewBoostedFeesPools","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"name":"chainId","in":"query"}],"responses":{"200":{"description":"Pools with boosted fees data","content":{"application/json":{"schema":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"token0":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"token1":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"pool_id":{"type":"string"},"fee":{"type":"string"},"tick_spacing":{"type":"integer"},"core_address":{"type":"string"},"extension":{"type":"string"},"volume0_24h":{"type":"string"},"volume1_24h":{"type":"string"},"fees0_24h":{"type":"string"},"fees1_24h":{"type":"string"},"tvl0_total":{"type":"string"},"tvl1_total":{"type":"string"},"tvl0_delta_24h":{"type":"string"},"tvl1_delta_24h":{"type":"string"},"depth0":{"type":"string"},"depth1":{"type":"string"},"depth_percent":{"type":["number","null"]},"stableswap_params":{"type":["object","null"],"properties":{"center_tick":{"type":"integer"},"amplification":{"type":"integer"}},"required":["center_tick","amplification"]},"boosts":{"type":["object","null"],"properties":{"donate_rate0":{"type":"string"},"donate_rate1":{"type":"string"},"last_donated_time":{"type":"integer","minimum":0},"future_donation_deltas":{"type":"array","items":{"type":"object","properties":{"time":{"type":"integer","minimum":0},"donate_rate_delta0":{"type":"string"},"donate_rate_delta1":{"type":"string"}},"required":["time","donate_rate_delta0","donate_rate_delta1"]}}},"required":["donate_rate0","donate_rate1","last_donated_time","future_donation_deltas"]}},"required":["chain_id","token0","token1","pool_id","fee","tick_spacing","core_address","extension","volume0_24h","volume1_24h","fees0_24h","fees1_24h","tvl0_total","tvl1_total","tvl0_delta_24h","tvl1_delta_24h","depth0","depth1","depth_percent","stableswap_params","boosts"]}}},"required":["pools"]}}}}}}}}}
```

## Get revenue

> Returns the revenue stats for the protocol

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/overview/revenue":{"get":{"tags":["Stats"],"summary":"Get revenue","description":"Returns the revenue stats for the protocol","operationId":"get_GetOverviewRevenue","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"name":"chainId","in":"query"}],"responses":{"200":{"description":"The revenue stats for the protocol","content":{"application/json":{"schema":{"type":"object","properties":{"revenueByTokenByDate":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"revenue":{"type":"string"},"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"date":{"anyOf":[{"type":"string"},{"type":"string"}]}},"required":["token","revenue","chain_id","date"]}},"revenueByToken_24h":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"revenue":{"type":"string"},"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"}},"required":["token","revenue","chain_id"]}}},"required":["revenueByTokenByDate","revenueByToken_24h"]}}}}}}}}}
```

## Get TVL

> Returns the TVL portion of the overview

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/overview/tvl":{"get":{"tags":["Stats"],"summary":"Get TVL","description":"Returns the TVL portion of the overview","operationId":"get_GetOverviewTvl","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"name":"chainId","in":"query"}],"responses":{"200":{"description":"The TVL stats","content":{"application/json":{"schema":{"type":"object","properties":{"tvlByToken":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"balance":{"type":"string"},"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"}},"required":["token","balance","chain_id"]}},"tvlDeltaByTokenByDate":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"date":{"anyOf":[{"type":"string"},{"type":"string"}]},"delta":{"type":"string"},"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"}},"required":["token","date","delta","chain_id"]}}},"required":["tvlByToken","tvlDeltaByTokenByDate"]}}}}}}}}}
```

## Get volume

> Returns the volume portion of the overview

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/overview/volume":{"get":{"tags":["Stats"],"summary":"Get volume","description":"Returns the volume portion of the overview","operationId":"get_GetOverviewVolume","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"name":"chainId","in":"query"}],"responses":{"200":{"description":"The volume stats for the protocol","content":{"application/json":{"schema":{"type":"object","properties":{"volumeByTokenByDate":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"volume":{"type":"string"},"fees":{"type":"string"},"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"date":{"anyOf":[{"type":"string"},{"type":"string"}]}},"required":["token","volume","fees","chain_id","date"]}},"volumeByToken_24h":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"volume":{"type":"string"},"fees":{"type":"string"},"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"}},"required":["token","volume","fees","chain_id"]}}},"required":["volumeByTokenByDate","volumeByToken_24h"]}}}}}}}}}
```

## Get pair TVL

> Returns TVL stats for the pair

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/pair/{chainId}/{tokenA}/{tokenB}/tvl":{"get":{"tags":["Stats"],"summary":"Get pair TVL","description":"Returns TVL stats for the pair","operationId":"get_GetPairInfoTvl","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenA","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenB","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":false,"description":"Restrict results to pools with the given core address.","name":"coreAddress","in":"query"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":false,"description":"Restrict results to pools with the given pool id.","name":"poolId","in":"query"}],"responses":{"200":{"description":"Information about the token pair TVL","content":{"application/json":{"schema":{"type":"object","properties":{"tvlByToken":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"balance":{"type":"string"}},"required":["token","balance"]}},"tvlDeltaByTokenByDate":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"date":{"anyOf":[{"type":"string"},{"type":"string"}]},"delta":{"type":"string"},"chain_id":{"type":"string"}},"required":["token","date","delta","chain_id"]}}},"required":["tvlByToken","tvlDeltaByTokenByDate"]}}}}}}}}}
```

## Get pair volume

> Returns volume stats for a given trading pair

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/pair/{chainId}/{tokenA}/{tokenB}/volume":{"get":{"tags":["Stats"],"summary":"Get pair volume","description":"Returns volume stats for a given trading pair","operationId":"get_GetPairInfoVolume","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenA","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenB","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":false,"description":"Restrict results to pools with the given core address.","name":"coreAddress","in":"query"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":false,"description":"Restrict results to pools with the given pool id.","name":"poolId","in":"query"}],"responses":{"200":{"description":"Information about the token pair volume","content":{"application/json":{"schema":{"type":"object","properties":{"chain_id":{"type":"string"},"volumeByTokenByDate":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"volume":{"type":"string"},"fees":{"type":"string"},"date":{"anyOf":[{"type":"string"},{"type":"string"}]}},"required":["token","volume","fees","date"]}},"volumeByToken_24h":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"volume":{"type":"string"},"fees":{"type":"string"}},"required":["token","volume","fees"]}}},"required":["chain_id","volumeByTokenByDate","volumeByToken_24h"]}}}}}}}}}
```

## Get pools of pair

> Returns pool info for a pair

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/pair/{chainId}/{tokenA}/{tokenB}/pools":{"get":{"tags":["Stats"],"summary":"Get pools of pair","description":"Returns pool info for a pair","operationId":"get_GetPairInfoPools","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenA","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenB","in":"path"},{"schema":{"type":["number","null"],"minimum":0,"default":1000,"description":"Minimum USD TVL required for a pool to be included"},"required":false,"description":"Minimum USD TVL required for a pool to be included","name":"minTvlUsd","in":"query"}],"responses":{"200":{"description":"Information about the pools of a token pair","content":{"application/json":{"schema":{"type":"object","properties":{"topPools":{"type":"array","items":{"type":"object","properties":{"pool_id":{"type":"string"},"fee":{"type":"string"},"tick_spacing":{"type":"integer"},"core_address":{"type":"string"},"extension":{"type":"string"},"volume0_24h":{"type":"string"},"volume1_24h":{"type":"string"},"fees0_24h":{"type":"string"},"fees1_24h":{"type":"string"},"tvl0_total":{"type":"string"},"tvl1_total":{"type":"string"},"tvl0_delta_24h":{"type":"string"},"tvl1_delta_24h":{"type":"string"},"depth0":{"type":"string"},"depth1":{"type":"string"},"depth_percent":{"type":["number","null"]},"stableswap_params":{"type":["object","null"],"properties":{"center_tick":{"type":"integer"},"amplification":{"type":"integer"}},"required":["center_tick","amplification"]},"boosts":{"type":["object","null"],"properties":{"donate_rate0":{"type":"string"},"donate_rate1":{"type":"string"},"last_donated_time":{"type":"integer","minimum":0},"future_donation_deltas":{"type":"array","items":{"type":"object","properties":{"time":{"type":"integer","minimum":0},"donate_rate_delta0":{"type":"string"},"donate_rate_delta1":{"type":"string"}},"required":["time","donate_rate_delta0","donate_rate_delta1"]}}},"required":["donate_rate0","donate_rate1","last_donated_time","future_donation_deltas"]}},"required":["pool_id","fee","tick_spacing","core_address","extension","volume0_24h","volume1_24h","fees0_24h","fees1_24h","tvl0_total","tvl1_total","tvl0_delta_24h","tvl1_delta_24h","depth0","depth1","depth_percent","stableswap_params","boosts"]}}},"required":["topPools"]}}}}}}}}}
```

## Get price history

> Get the VWAP-based price history for the given pair

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/price/{chainId}/{baseToken}/{quoteToken}/history":{"get":{"tags":["Prices"],"summary":"Get price history","description":"Get the VWAP-based price history for the given pair","operationId":"get_GetPairPriceHistory","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"baseToken","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"quoteToken","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"chainId","in":"path"},{"schema":{"type":"integer","minimum":60},"required":false,"name":"interval","in":"query"}],"responses":{"200":{"description":"The price history of the pair","content":{"application/json":{"schema":{"type":"object","properties":{"timestamp":{"type":"integer"},"start":{"type":"integer"},"end":{"type":"integer"},"interval":{"type":"integer"},"data":{"type":"array","items":{"type":"object","properties":{"start":{"anyOf":[{"type":"string"},{"type":"string"}]},"vwap":{"type":"number"},"max":{"type":"number"},"min":{"type":"number"},"k_volume":{"type":"string"}},"required":["start","vwap","max","min","k_volume"]}}},"required":["timestamp","start","end","interval","data"]}}}}}}}}}
```

## Get pool price history

> Returns pool OHLC history with swap candles and TWAMM-projected tail fill when needed

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/pools/{chainId}/{coreAddress}/{poolId}/price/history":{"get":{"tags":["Prices"],"summary":"Get pool price history","description":"Returns pool OHLC history with swap candles and TWAMM-projected tail fill when needed","operationId":"get_GetPoolPriceHistory","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"coreAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"poolId","in":"path"},{"schema":{"type":"integer","minimum":1,"description":"Bucket size in seconds"},"required":false,"description":"Bucket size in seconds","name":"interval","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"description":"Unix timestamp (seconds)"},"required":false,"description":"Unix timestamp (seconds)","name":"start","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"description":"Unix timestamp (seconds)"},"required":false,"description":"Unix timestamp (seconds)","name":"end","in":"query"}],"responses":{"200":{"description":"Pool-level price history and TWAMM metadata for charting","content":{"application/json":{"schema":{"type":"object","properties":{"timestamp":{"type":"integer"},"start":{"type":"integer"},"end":{"type":"integer"},"interval":{"type":"integer"},"token0":{"type":"string"},"token1":{"type":"string"},"data":{"type":"array","items":{"type":"object","properties":{"start":{"anyOf":[{"type":"string"},{"type":"string"}]},"open":{"type":"number"},"high":{"type":"number"},"low":{"type":"number"},"close":{"type":"number"}},"required":["start","open","high","low","close"]}}},"required":["timestamp","start","end","interval","token0","token1","data"]}}}}}}}}}
```

## Get pool key

> Returns the pool key details for the given core address and pool id

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/pools/{chainId}/{coreAddress}/{poolId}/key":{"get":{"tags":["Swap"],"summary":"Get pool key","description":"Returns the pool key details for the given core address and pool id","operationId":"get_GetPoolKey","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"coreAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"poolId","in":"path"}],"responses":{"200":{"description":"Pool key details for the given pool","content":{"application/json":{"schema":{"type":"object","properties":{"pool_key":{"type":"object","properties":{"token0":{"type":"string"},"token1":{"type":"string"},"fee":{"type":"string"},"tick_spacing":{"type":["string","null"]},"extension":{"type":"string"},"stableswap_params":{"type":["object","null"],"properties":{"center_tick":{"type":"integer"},"amplification":{"type":"integer"}},"required":["center_tick","amplification"]}},"required":["token0","token1","fee","tick_spacing","extension","stableswap_params"]}},"required":["pool_key"]}}}}}}}}}
```

## Get pool liquidity

> Returns the liquidity delta for each tick for the given pool key hash

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/pools/{chainId}/{coreAddress}/{poolId}/liquidity":{"get":{"tags":["Swap"],"summary":"Get pool liquidity","description":"Returns the liquidity delta for each tick for the given pool key hash","operationId":"get_GetPoolLiquidity","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"coreAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"poolId","in":"path"}],"responses":{"200":{"description":"The current liquidity chart for the given pool key hash","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"tick":{"type":"string"},"net_liquidity_delta_diff":{"type":"string"}},"required":["tick","net_liquidity_delta_diff"]}}},"required":["data"]}}}}}}}}}
```

## Get pair liquidity

> Returns the liquidity chart for the given token pair, aggregated across all pools

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/tokens/{chainId}/{tokenA}/{tokenB}/liquidity":{"get":{"tags":["Stats"],"summary":"Get pair liquidity","description":"Returns the liquidity chart for the given token pair, aggregated across all pools","operationId":"get_GetPairLiquidity","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenA","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenB","in":"path"}],"responses":{"200":{"description":"For each tick for pools of the pair, the liquidity delta","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"tick":{"type":"string"},"net_liquidity_delta_diff":{"type":"string"}},"required":["tick","net_liquidity_delta_diff"]}}},"required":["data"]}}}}}}}}}
```

## Get top positions for pair

> Returns the top positions (by liquidity) for the given trading pair

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/pair/{chainId}/{tokenA}/{tokenB}/positions":{"get":{"tags":["Stats"],"summary":"Get top positions for pair","description":"Returns the top positions (by liquidity) for the given trading pair","operationId":"get_GetPairTopPositions","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenA","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenB","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":false,"description":"Restrict results to pools with the given core address.","name":"coreAddress","in":"query"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":false,"description":"Restrict results to pools with the given pool id.","name":"poolId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"Maximum number of positions to return"},"required":false,"description":"Maximum number of positions to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Top positions for the given pair","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chain_id":{"type":"string"},"nft_address":{"type":"string"},"core_address":{"type":"string"},"positions_address":{"type":"string"},"owner":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"minted_timestamp":{"anyOf":[{"type":"string"},{"type":"string"}]},"pool_key":{"type":"object","properties":{"token0":{"type":"string"},"token1":{"type":"string"},"fee":{"type":"string"},"tick_spacing":{"type":["string","null"]},"extension":{"type":"string"},"stableswap_params":{"type":["object","null"],"properties":{"center_tick":{"type":"number"},"amplification":{"type":"number"}},"required":["center_tick","amplification"]}},"required":["token0","token1","fee","tick_spacing","extension","stableswap_params"]},"bounds":{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"}},"required":["lower","upper"]},"liquidity":{"type":"string"},"pool_state":{"type":["object","null"],"properties":{"sqrt_ratio":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"tick":{"type":"integer"},"liquidity":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}},"required":["sqrt_ratio","tick","liquidity"]}},"required":["id","chain_id","nft_address","core_address","positions_address","owner","minted_timestamp","pool_key","bounds","liquidity","pool_state"]}}},"required":["data"]}}}}}}}}}
```

## Get pair events

> Returns a list of recent events for the given trading pair

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/tokens/{chainId}/{tokenA}/{tokenB}/events":{"get":{"tags":["Stats"],"summary":"Get pair events","description":"Returns a list of recent events for the given trading pair","operationId":"get_ListPairEvents","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenA","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenB","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":false,"description":"Restrict results to pools with the given core address.","name":"coreAddress","in":"query"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":false,"description":"Restrict results to pools with the given pool id.","name":"poolId","in":"query"}],"responses":{"200":{"description":"A list of events for the given pair","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"anyOf":[{"type":"number","enum":[0]},{"type":"number","enum":[1]}]},"fee":{"type":"string"},"tick_spacing":{"type":"integer"},"extension":{"type":"string"},"core_address":{"type":"string"},"locker":{"type":"string"},"timestamp":{"anyOf":[{"type":"string"},{"type":"string"}]},"transaction_hash":{"type":"string"},"delta0":{"type":"string"},"delta1":{"type":"string"}},"required":["type","fee","tick_spacing","extension","core_address","locker","timestamp","transaction_hash","delta0","delta1"]}}},"required":["data"]}}}}}}}}}
```

## List positions

> Returns the list of position NFTs and their keys

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/positions/{address}":{"get":{"tags":["Positions"],"summary":"List positions","description":"Returns the list of position NFTs and their keys","operationId":"get_ListPositionsByAddress","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The address for which to list positions","name":"address","in":"path"},{"schema":{"type":"string","enum":["opened","closed"],"description":"Filter positions by state; defaults to returning all positions"},"required":false,"description":"Filter positions by state; defaults to returning all positions","name":"state","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"description":"Restrict results to a specific chain ID","name":"chainId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50,"description":"Maximum number of positions to return per page"},"required":false,"description":"Maximum number of positions to return per page","name":"pageSize","in":"query"},{"schema":{"type":"integer","minimum":1,"default":1,"description":"Page number to fetch (1-indexed)"},"required":false,"description":"Page number to fetch (1-indexed)","name":"page","in":"query"}],"responses":{"200":{"description":"The position NFTs owned by the address and keys","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"positions_address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"owner":{"type":["string","null"],"pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"pool_key":{"type":"object","properties":{"token0":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"token1":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"fee":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"tick_spacing":{"type":["string","null"],"pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"extension":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"stableswap_params":{"type":["object","null"],"properties":{"center_tick":{"type":"number"},"amplification":{"type":"number"}},"required":["center_tick","amplification"]}},"required":["token0","token1","fee","tick_spacing","extension","stableswap_params"]},"bounds":{"type":"object","properties":{"lower":{"type":"number"},"upper":{"type":"number"}},"required":["lower","upper"]},"metadata_url":{"type":"string"},"image":{"type":"string"},"liquidity":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"pool_state":{"type":["object","null"],"properties":{"sqrt_ratio":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"tick":{"type":"integer"},"liquidity":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}},"required":["sqrt_ratio","tick","liquidity"]},"rewards":{"type":"object","additionalProperties":{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"pending":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}},"required":["amount","pending"]}}},"required":["id","chain_id","positions_address","owner","pool_key","bounds","metadata_url","image","liquidity","pool_state","rewards"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1},"totalPages":{"type":"integer","minimum":0},"totalItems":{"type":"integer","minimum":0}},"required":["page","pageSize","totalPages","totalItems"]}},"required":["data","pagination"]}}}}}}}}}
```

## List position history

> Returns the entire history of the given position ID

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/positions/{chainId}/{lockerAddress}/{id}/history":{"get":{"tags":["Positions"],"summary":"List position history","description":"Returns the entire history of the given position ID","operationId":"get_ListPositionNftEvents","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to list events","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The address of the Positions contract","name":"lockerAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"id","in":"path"}],"responses":{"200":{"description":"The position history","content":{"application/json":{"schema":{"type":"object","properties":{"chain_id":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"events":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["transfer"]},"block_number":{"type":"string"},"transaction_hash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"timestamp":{"anyOf":[{"type":"string"},{"type":"string"}]},"from_address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"to_address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"}},"required":["type","block_number","transaction_hash","timestamp","from_address","to_address"]},{"type":"object","properties":{"type":{"type":"string","enum":["update"]},"block_number":{"type":"string"},"transaction_hash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"timestamp":{"anyOf":[{"type":"string"},{"type":"string"}]},"liquidity_delta":{"type":"string"},"delta0":{"type":"string"},"delta1":{"type":"string"}},"required":["type","block_number","transaction_hash","timestamp","liquidity_delta","delta0","delta1"]},{"type":"object","properties":{"type":{"type":"string","enum":["collect_fees"]},"block_number":{"type":"string"},"transaction_hash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"timestamp":{"anyOf":[{"type":"string"},{"type":"string"}]},"delta0":{"type":"string"},"delta1":{"type":"string"}},"required":["type","block_number","transaction_hash","timestamp","delta0","delta1"]}]}}},"required":["chain_id","events"]}}}}}}}}}
```

## Get NFT Metadata

> Returns the ERC721 metadata for the given position token ID

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/positions/{chainId}/{nftAddress}/{id}":{"get":{"tags":["Positions"],"summary":"Get NFT Metadata","description":"Returns the ERC721 metadata for the given position token ID","operationId":"get_GetPositionNftMetadata","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to generate metadata","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The address of the Positions NFT contract","name":"nftAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"id","in":"path"}],"responses":{"200":{"description":"The NFT metadata for the given position ID","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"},"attributes":{"type":"array","items":{"type":"object","properties":{"trait_type":{"type":"string"},"value":{"type":["string","null"]}},"required":["trait_type","value"]}}},"required":["name","description","image","attributes"]}}}}}}}}}
```

## Get NFT Image

> Returns the generated art for the given order NFT ID

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/orders/{chainId}/{nftAddress}/{id}/image.svg":{"get":{"tags":["Orders"],"summary":"Get NFT Image","description":"Returns the generated art for the given order NFT ID","operationId":"get_GetOrderNftImage","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The address of the Positions NFT contract","name":"nftAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"id","in":"path"}],"responses":{"200":{"description":"The order NFT image"}}}}}}
```

## Get NFT Metadata

> Returns the ERC721 metadata for the given order token ID

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/orders/{chainId}/{nftAddress}/{id}":{"get":{"tags":["Orders"],"summary":"Get NFT Metadata","description":"Returns the ERC721 metadata for the given order token ID","operationId":"get_GetOrderNftMetadata","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The address of the Positions NFT contract","name":"nftAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"id","in":"path"}],"responses":{"200":{"description":"The NFT metadata for the given order ID","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"},"attributes":{"type":"array","items":{"type":"object","properties":{"trait_type":{"type":"string"},"value":{"type":["string","null"]}},"required":["trait_type","value"]}}},"required":["name","description","image","attributes"]}}}}}}}}}
```

## Get TWAP pool

> Returns the current state of the given TWAMM pool, including the future order expirations

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/twap/pools/{chainId}/{coreAddress}/{tokenA}/{tokenB}/{fee}":{"get":{"tags":["TWAP"],"summary":"Get TWAP pool","description":"Returns the current state of the given TWAMM pool, including the future order expirations","operationId":"get_GetTwammPoolState","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenA","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenB","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"coreAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"fee","in":"path"}],"responses":{"200":{"description":"The current state of the given TWAMM pool","content":{"application/json":{"schema":{"type":"object","properties":{"saleRateDeltas":{"type":"array","items":{"type":"object","properties":{"time":{"type":"integer","minimum":0},"token0SaleRateDelta":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"token1SaleRateDelta":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}},"required":["time","token0SaleRateDelta","token1SaleRateDelta"]}}},"required":["saleRateDeltas"]}}}}}}}}}
```

## Get TWAP pair

> Returns the current state of the given TWAMM pair, including the future order expirations

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/twap/pair/{chainId}/{tokenA}/{tokenB}":{"get":{"tags":["TWAP"],"summary":"Get TWAP pair","description":"Returns the current state of the given TWAMM pair, including the future order expirations","operationId":"get_GetTwammPairState","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenA","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"tokenB","in":"path"}],"responses":{"200":{"description":"The current state of the given TWAMM pair","content":{"application/json":{"schema":{"type":"object","properties":{"saleRateDeltas":{"type":"array","items":{"type":"object","properties":{"time":{"type":"integer","minimum":0},"token0SaleRateDelta":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"token1SaleRateDelta":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}},"required":["time","token0SaleRateDelta","token1SaleRateDelta"]}}},"required":["saleRateDeltas"]}}}}}}}}}
```

## List TWAP orders

> Returns the list of TWAP orders currently held by the given address

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/twap/orders/{address}":{"get":{"tags":["TWAP"],"summary":"List TWAP orders","description":"Returns the list of TWAP orders currently held by the given address","operationId":"get_ListTwapOrders","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"address","in":"path"},{"schema":{"type":"string","enum":["opened","closed"],"description":"Filter orders by state; defaults to returning all orders"},"required":false,"description":"Filter orders by state; defaults to returning all orders","name":"state","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"description":"Restrict results to a specific chain ID","name":"chainId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50,"description":"Maximum number of TWAP orders to return per page"},"required":false,"description":"Maximum number of TWAP orders to return per page","name":"pageSize","in":"query"},{"schema":{"type":"integer","minimum":1,"default":1,"description":"Page number to fetch (1-indexed)"},"required":false,"description":"Page number to fetch (1-indexed)","name":"page","in":"query"}],"responses":{"200":{"description":"The list of TWAP orders placed by the address","content":{"application/json":{"schema":{"type":"object","properties":{"orders":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"nft_address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"token_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"orders":{"type":"array","items":{"type":"object","properties":{"key":{"type":"object","properties":{"sell_token":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"buy_token":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"fee":{"type":"string"},"start_time":{"type":"integer","minimum":0,"description":"The epoch time in seconds at which the order starts"},"end_time":{"type":"integer","minimum":0,"description":"The epoch time in seconds at which the order ends"}},"required":["sell_token","buy_token","fee","start_time","end_time"],"description":"The key identifier for a TWAP order in Ekubo"},"total_proceeds_withdrawn":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"sale_rate":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"last_collect_proceeds":{"type":["integer","null"]},"total_amount_sold":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}},"required":["key","total_proceeds_withdrawn","sale_rate","last_collect_proceeds","total_amount_sold"]}}},"required":["chain_id","nft_address","token_id","orders"]}},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1},"totalPages":{"type":"integer","minimum":0},"totalItems":{"type":"integer","minimum":0}},"required":["page","pageSize","totalPages","totalItems"]}},"required":["orders","pagination"]}}}}}}}}}
```

## List limit orders

> Returns the list of limit orders currently held by the given address

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/limit-orders/orders/{address}":{"get":{"tags":["Limit Orders"],"summary":"List limit orders","description":"Returns the list of limit orders currently held by the given address","operationId":"get_ListLimitOrders","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"address","in":"path"},{"schema":{"type":"string","enum":["opened","closed"],"description":"Filter limit orders by state; defaults to returning all orders"},"required":false,"description":"Filter limit orders by state; defaults to returning all orders","name":"state","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"description":"Restrict results to a specific chain ID","name":"chainId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50,"description":"Maximum number of limit orders to return per page"},"required":false,"description":"Maximum number of limit orders to return per page","name":"pageSize","in":"query"},{"schema":{"type":"integer","minimum":1,"default":1,"description":"Page number to fetch (1-indexed)"},"required":false,"description":"Page number to fetch (1-indexed)","name":"page","in":"query"}],"responses":{"200":{"description":"The list of limit orders held or previously held by the address","content":{"application/json":{"schema":{"type":"object","properties":{"orders":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"token_id":{"type":"integer","minimum":1},"orders":{"type":"array","items":{"type":"object","properties":{"key":{"type":"object","properties":{"token0":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"token1":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"tick":{"type":"number"}},"required":["token0","token1","tick"],"description":"The key identifier for a limit order in Ekubo"},"liquidity":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"amount":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"token0_amount_withdrawn":{"type":["string","null"],"pattern":"^\\d+e?\\d*$","description":"A decimal number"},"token1_amount_withdrawn":{"type":["string","null"],"pattern":"^\\d+e?\\d*$","description":"A decimal number"}},"required":["key","liquidity","amount","token0_amount_withdrawn","token1_amount_withdrawn"]}}},"required":["chain_id","token_id","orders"]},"description":"The list of limit orders owned by the address"},"pagination":{"type":"object","properties":{"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","minimum":1},"totalPages":{"type":"integer","minimum":0},"totalItems":{"type":"integer","minimum":0}},"required":["page","pageSize","totalPages","totalItems"]}},"required":["orders","pagination"]}}}}}}}}}
```

## Get NFT Image

> Returns the generated art for the given position NFT ID

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/positions/{chainId}/{nftAddress}/{id}/image.svg":{"get":{"tags":["Positions"],"summary":"Get NFT Image","description":"Returns the generated art for the given position NFT ID","operationId":"get_GetPositionNftImage","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The address of the Positions NFT contract","name":"nftAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"id","in":"path"}],"responses":{"200":{"description":"The position NFT image"}}}}}}
```

## Get NFT Metadata

> Returns the ERC721 metadata for the given token ID, chain ID and NFT contract address

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/nft/{chainId}/{nftAddress}/{id}":{"get":{"tags":["Positions"],"summary":"Get NFT Metadata","description":"Returns the ERC721 metadata for the given token ID, chain ID and NFT contract address","operationId":"get_GetNftMetadata","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to generate metadata","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The address of the NFT contract","name":"nftAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"id","in":"path"}],"responses":{"200":{"description":"The NFT metadata for the given position ID"}}}}}}
```

## Get NFT Image

> Returns the generated art for the given position NFT ID

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/nft/{chainId}/{nftAddress}/{id}/image.svg":{"get":{"tags":["Positions"],"summary":"Get NFT Image","description":"Returns the generated art for the given position NFT ID","operationId":"get_GetNftImage","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to generate metadata","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The address of the NFT contract","name":"nftAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"id","in":"path"}],"responses":{"200":{"description":"The position NFT image"}}}}}}
```

## List auction keys

> Lists auction NFTs grouped by token\_id + (token0, token1, config)

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/auctions":{"get":{"tags":["Auctions"],"summary":"List auction keys","description":"Lists auction NFTs grouped by token_id + (token0, token1, config)","operationId":"get_ListAuctions","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"description":"Chain ID for which to list auctions","name":"chainId","in":"query"},{"schema":{"type":["integer","null"],"minimum":-100,"maximum":100,"description":"Token visibility priority threshold","title":"Visibility Priority"},"required":false,"description":"Only include auction keys where both tokens meet this visibility priority threshold","name":"minVisibilityPriority","in":"query"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":false,"description":"If provided, only include auction keys linked to NFTs currently owned by this address","name":"owner","in":"query"}],"responses":{"200":{"description":"List of auction keys","content":{"application/json":{"schema":{"type":"object","properties":{"auctions":{"type":"array","items":{"type":"object","properties":{"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"key":{"type":"object","properties":{"token0":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"token1":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"config":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"}},"required":["token0","token1","config"]},"token_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"owner":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"auctions_contract_address":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"total_sale_rate":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"boost_end_time":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},{"type":"null"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"completed_timestamp":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},{"type":"null"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"}},"required":["chain_id","key","token_id","owner","auctions_contract_address","total_sale_rate","boost_end_time","completed_timestamp"]}}},"required":["auctions"]}}}}}}}}}
```

## Get auction NFT metadata

> Returns NFT metadata for auction NFTs; route shape matches positions and orders

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/auctions/{chainId}/{nftAddress}/{id}":{"get":{"tags":["Auctions"],"summary":"Get auction NFT metadata","description":"Returns NFT metadata for auction NFTs; route shape matches positions and orders","operationId":"get_GetAuctionNftMetadata","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to generate metadata","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The NFT contract address","name":"nftAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"id","in":"path"}],"responses":{"200":{"description":"The NFT metadata for the given token ID","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"},"attributes":{"type":"array","items":{"type":"object","properties":{"trait_type":{"type":"string"},"value":{"type":["string","null"]}},"required":["trait_type","value"]}}},"required":["name","description","image","attributes"]}}}}}}}}}
```

## Get auction NFT image

> Returns the generated NFT image for auction NFTs; route shape matches positions and orders

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/auctions/{chainId}/{nftAddress}/{id}/image.svg":{"get":{"tags":["Auctions"],"summary":"Get auction NFT image","description":"Returns the generated NFT image for auction NFTs; route shape matches positions and orders","operationId":"get_GetAuctionNftImage","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to generate metadata","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The NFT contract address","name":"nftAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"id","in":"path"}],"responses":{"200":{"description":"The NFT image"}}}}}}
```

## Get auction NFT state

> Returns dynamic auction NFT state for UI consumption

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/auctions/{chainId}/{nftAddress}/{id}/state":{"get":{"tags":["Auctions"],"summary":"Get auction NFT state","description":"Returns dynamic auction NFT state for UI consumption","operationId":"get_GetAuctionNftState","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to fetch state","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The NFT contract address","name":"nftAddress","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"id","in":"path"}],"responses":{"200":{"description":"Auction NFT state data","content":{"application/json":{"schema":{"type":"object","properties":{"current_owner":{"type":["string","null"],"pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"auctions":{"type":"array","items":{"type":"object","properties":{"token0":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"token1":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"config":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"total_sale_rate":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"participants_count":{"type":"integer","minimum":0},"creator_proceeds_collected":{"type":["string","null"],"pattern":"^\\d+e?\\d*$","description":"A decimal number"},"boost_rate":{"type":["string","null"],"pattern":"^\\d+e?\\d*$","description":"A decimal number"},"boost_end_time":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},{"type":"null"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"completed_timestamp":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},{"type":"null"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"creator_amount":{"type":["string","null"],"pattern":"^\\d+e?\\d*$","description":"A decimal number"},"boost_amount":{"type":["string","null"],"pattern":"^\\d+e?\\d*$","description":"A decimal number"}},"required":["token0","token1","config","total_sale_rate","participants_count","creator_proceeds_collected","boost_rate","boost_end_time","completed_timestamp","creator_amount","boost_amount"]}}},"required":["current_owner","auctions"]}}}}}}}}}
```

## List Proposals

> Returns the list of all proposals

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/governance/{chainId}/proposals":{"get":{"tags":["Governance"],"summary":"List Proposals","description":"Returns the list of all proposals","operationId":"get_ListProposals","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to list proposals","name":"chainId","in":"path"}],"responses":{"200":{"description":"The list of proposals","content":{"application/json":{"schema":{"type":"object","properties":{"proposals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"createdTime":{"type":"integer","minimum":0},"description":{"anyOf":[{"type":"null"},{"type":"string"},{"type":"null"}]},"calls":{"type":"array","items":{"type":"object","properties":{"to":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"selector":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"calldata":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"}}},"required":["to","selector","calldata"]}},"results":{"type":"array","items":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"}}},"executed_tx_hash":{"anyOf":[{"type":"null"},{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"null"}]}},"required":["id","createdTime","description","calls","results","executed_tx_hash"]}}},"required":["proposals"]}}}}}}}}}
```

## List Top Delegates

> Returns the list of top delegates

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/governance/{chainId}/delegates":{"get":{"tags":["Governance"],"summary":"List Top Delegates","description":"Returns the list of top delegates","operationId":"get_ListTopDelegates","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to list top delegates","name":"chainId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":1000},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":["integer","null"],"minimum":0},"required":false,"name":"start","in":"query"}],"responses":{"200":{"description":"The list of top delegates","content":{"application/json":{"schema":{"type":"object","properties":{"amountDelegatedTo":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"delegates":{"type":"array","items":{"type":"object","properties":{"delegate":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"amount":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"votingRecord":{"type":"object","properties":{"yea":{"type":"integer","minimum":0},"nay":{"type":"integer","minimum":0},"missed":{"type":"integer","minimum":0}},"required":["yea","nay","missed"]}},"required":["delegate","amount","votingRecord"]}}},"required":["amountDelegatedTo","delegates"]}}}}}}}}}
```

## List Votes

> Returns the list of votes on a proposal

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/governance/{chainId}/proposals/{proposalId}/votes":{"get":{"tags":["Governance"],"summary":"List Votes","description":"Returns the list of votes on a proposal","operationId":"get_ListVotesOnProposal","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to list proposals","name":"chainId","in":"path"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"The ID of the proposal"},"required":true,"description":"The ID of the proposal","name":"proposalId","in":"path"}],"responses":{"200":{"description":"The list of votes on a specific proposal","content":{"application/json":{"schema":{"type":"object","properties":{"votes":{"type":"array","items":{"type":"object","properties":{"time":{"type":"integer","minimum":0},"voter":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"weight":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"yea":{"type":"boolean"}},"required":["time","voter","weight","yea"]}}},"required":["votes"]}}}}}}}}}
```

## List Voters

> Returns the list of voters for a proposal and their votes

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/governance/{chainId}/proposals/{proposalId}/voters":{"get":{"tags":["Governance"],"summary":"List Voters","description":"Returns the list of voters for a proposal and their votes","operationId":"get_ListProposalVoters","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to list proposals","name":"chainId","in":"path"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"The ID of the proposal"},"required":true,"description":"The ID of the proposal","name":"proposalId","in":"path"}],"responses":{"200":{"description":"The list of voters and their weights for a specific proposal","content":{"application/json":{"schema":{"type":"object","properties":{"voters":{"type":"array","items":{"type":"object","properties":{"voter":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"weight":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"vote":{"anyOf":[{"type":"object","properties":{"time":{"type":"integer","minimum":0},"yea":{"type":"boolean"}},"required":["time","yea"]},{"type":"null"},{"type":"null"}]}},"required":["voter","weight","vote"]}}},"required":["voters"]}}}}}}}}}
```

## Get Staker Info

> Returns information about a particular staker address: the addresses they have delegated to and the total amount delegated to them

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/governance/{chainId}/delegates/{address}":{"get":{"tags":["Governance"],"summary":"Get Staker Info","description":"Returns information about a particular staker address: the addresses they have delegated to and the total amount delegated to them","operationId":"get_GetStakerInfo","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"Chain ID for which to look up staker data","name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"The address for which to look up staker data","name":"address","in":"path"}],"responses":{"200":{"description":"Information about the given staker","content":{"application/json":{"schema":{"type":"object","properties":{"amountDelegatedTo":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"delegates":{"type":"array","items":{"type":"object","properties":{"delegate":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"amount":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"votingRecord":{"type":"object","properties":{"yea":{"type":"integer","minimum":0},"nay":{"type":"integer","minimum":0},"missed":{"type":"integer","minimum":0}},"required":["yea","nay","missed"]}},"required":["delegate","amount","votingRecord"]}}},"required":["amountDelegatedTo","delegates"]}}}}}}}}}
```

## List campaigns

> List all the liquidity incentive campaigns

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/campaigns":{"get":{"tags":["Incentives"],"summary":"List campaigns","description":"List all the liquidity incentive campaigns","operationId":"get_ListCampaigns","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"description":"Restrict campaigns to the specified chain ID","name":"chainId","in":"query"}],"responses":{"200":{"description":"The list of campaigns","content":{"application/json":{"schema":{"type":"object","properties":{"campaigns":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"chain_id":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"coreAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"allowedLockers":{"anyOf":[{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"}},{"type":"null"},{"type":"null"}]},"name":{"type":"string"},"rewardToken":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"startTime":{"type":"string"},"endTime":{"type":["string","null"]},"nextDropTime":{"type":"string"},"allowedExtensions":{"type":"array","items":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"}},"pairs":{"type":"array","items":{"type":"object","properties":{"token0":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"token1":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"depth_percent":{"type":["number","null"],"minimum":0},"depth0":{"type":["string","null"],"pattern":"^\\d+e?\\d*$","description":"A decimal number"},"depth1":{"type":["string","null"],"pattern":"^\\d+e?\\d*$","description":"A decimal number"},"distributed":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"scheduled":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"daily_rewards":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"daily_rewards_token0":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"daily_rewards_token1":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"realized_volatility":{"type":["number","null"],"minimum":0}},"required":["token0","token1","depth_percent","depth0","depth1","distributed","scheduled","daily_rewards","daily_rewards_token0","daily_rewards_token1","realized_volatility"]}}},"required":["slug","chain_id","coreAddress","allowedLockers","name","rewardToken","startTime","endTime","nextDropTime","allowedExtensions","pairs"]}}},"required":["campaigns"],"description":"Response for list campaigns endpoint"}}}}}}}}}
```

## Get position rewards

> Returns the computed rewards for a specified position

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/rewards/{chainId}/{locker}/{salt}":{"get":{"tags":["Incentives"],"summary":"Get position rewards","description":"Returns the computed rewards for a specified position","operationId":"get_ListRewardsForLocker","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":true,"name":"chainId","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"locker","in":"path"},{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"A number represented in hexadecimal or decimal","title":"Numeric"},"required":true,"description":"A hexadecimal number","name":"salt","in":"path"},{"schema":{"type":"string","format":"date-time","description":"Filter to rewards in periods that started at or after this time"},"required":false,"description":"Filter to rewards in periods that started at or after this time","name":"startTime","in":"query"},{"schema":{"type":"string","format":"date-time","description":"Filter to rewards in periods that ended at or before this time"},"required":false,"description":"Filter to rewards in periods that ended at or before this time","name":"endTime","in":"query"}],"responses":{"200":{"description":"The computed rewards for each campaign and the specified position","content":{"application/json":{"schema":{"type":"object","properties":{"rewards":{"type":"array","items":{"type":"object","properties":{"campaignSlug":{"type":"string"},"amount":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},"pending":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}},"required":["campaignSlug","amount","pending"]}}},"required":["rewards"],"description":"The list of rewards for a specified position"}}}}}}}}}
```

## List available claims

> Returns all the claims available for the address

```json
{"openapi":"3.1.0","info":{"title":"Ekubo API","version":"0.0.1"},"paths":{"/claims/{address}":{"get":{"tags":["Incentives"],"summary":"List available claims","description":"Returns all the claims available for the address","operationId":"get_ListClaimsForAddress","parameters":[{"schema":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"required":true,"description":"A hexadecimal number","name":"address","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":9223372036854776000,"format":"int64","description":"The ID of the network that is being fetched","title":"Chain ID"},"required":false,"description":"Restrict claims to the specified chain ID","name":"chainId","in":"query"}],"responses":{"200":{"description":"The list of claims for an address","content":{"application/json":{"schema":{"type":"object","properties":{"claims":{"type":"array","items":{"type":"object","properties":{"campaign":{"type":["string","null"]},"chainId":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"dropAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"key":{"type":"object","properties":{"owner":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"},{"type":"null"}],"description":"An address on the specified blockchain network","title":"Address"},"token":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},"root":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"}},"required":["owner","token","root"]},"claim":{"type":"object","properties":{"index":{"type":"integer","minimum":0},"account":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"},{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}],"description":"An address on the specified blockchain network","title":"Address"},"amount":{"type":"string","pattern":"^\\d+e?\\d*$","description":"A decimal number"}},"required":["index","account","amount"]},"proof":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"A hexadecimal number"}}},"required":["campaign","chainId","dropAddress","key","claim","proof"]}}},"required":["claims"],"description":"The list of claims for the given address"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ekubo.org/integration-guides/reference/ekubo-api/endpoints.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
