Download OpenAPI specification:Download
The Midgard Public API queries THORChain and any chains linked via the Bifröst and prepares information about the network to be readily available for public users. The API parses transaction event data from THORChain and stores them in a time-series database to make time-dependent queries easy. Midgard does not hold critical information. To interact with BEPSwap and Asgardex, users should query THORChain directly.
Returns an object containing the health response of the API. Meaning of heights:
lastThorNode - Latest block as reported by ThorNode.
lastFetched - Latest block fetched from ThorNode.
lastCommitted - Latest block commited to the DB but not fully processed yet.
lastAggregated - Latest block fully processed and aggregated.
{- "database": true,
- "scannerHeight": "string",
- "inSync": true,
- "lastThorNode": {
- "height": 0,
- "timestamp": 0
}, - "lastFetched": {
- "height": 0,
- "timestamp": 0
}, - "lastCommitted": {
- "height": 0,
- "timestamp": 0
}, - "lastAggregated": {
- "height": 0,
- "timestamp": 0
}
}
Returns an array containing details for a set of pools
status | string Enum: "available" "staged" "suspended" Filter for only pools with this status |
period | string Enum: "1h" "24h" "7d" "30d" "90d" "100d" "180d" "365d" "all" Example: period=100d Specifies the base interval from which APY is extrapolated. Default is 30d. |
[- {
- "asset": "string",
- "volume24h": "string",
- "assetDepth": "string",
- "runeDepth": "string",
- "assetPrice": "string",
- "assetPriceUSD": "string",
- "annualPercentageRate": "string",
- "poolAPY": "string",
- "status": "string",
- "liquidityUnits": "string",
- "synthUnits": "string",
- "synthSupply": "string",
- "units": "string"
}
]
Returns details of the pool: depths, price, 24h volume, APY.
asset required | string Example: BNB.TOMOB-1E1 pool name |
period | string Enum: "1h" "24h" "7d" "30d" "90d" "100d" "180d" "365d" "all" Example: period=100d Specifies the base interval from which APY is extrapolated. Default is 30d. |
{- "asset": "string",
- "volume24h": "string",
- "assetDepth": "string",
- "runeDepth": "string",
- "assetPrice": "string",
- "assetPriceUSD": "string",
- "annualPercentageRate": "string",
- "poolAPY": "string",
- "status": "string",
- "liquidityUnits": "string",
- "synthUnits": "string",
- "synthSupply": "string",
- "units": "string"
}
Statistics about the pool. The description of the fields have pointers about the corresponding v2/history location. Visit the history endpoint for drilldowns.
asset required | string Example: BNB.TOMOB-1E1 pool name |
period | string Enum: "1h" "24h" "7d" "30d" "90d" "100d" "180d" "365d" "all" Example: period=24h Restricts aggregation type fields to the last period only. Default is 30d. |
{- "asset": "string",
- "status": "string",
- "assetPrice": "string",
- "assetPriceUSD": "string",
- "assetDepth": "string",
- "runeDepth": "string",
- "synthUnits": "string",
- "synthSupply": "string",
- "liquidityUnits": "string",
- "units": "string",
- "toAssetVolume": "string",
- "toRuneVolume": "string",
- "swapVolume": "string",
- "toAssetCount": "string",
- "toRuneCount": "string",
- "swapCount": "string",
- "uniqueSwapperCount": "string",
- "toAssetAverageSlip": "string",
- "toRuneAverageSlip": "string",
- "averageSlip": "string",
- "toAssetFees": "string",
- "toRuneFees": "string",
- "totalFees": "string",
- "annualPercentageRate": "string",
- "poolAPY": "string",
- "addAssetLiquidityVolume": "string",
- "addRuneLiquidityVolume": "string",
- "addLiquidityVolume": "string",
- "addLiquidityCount": "string",
- "withdrawAssetVolume": "string",
- "withdrawRuneVolume": "string",
- "impermanentLossProtectionPaid": "string",
- "withdrawVolume": "string",
- "withdrawCount": "string",
- "uniqueMemberCount": "string"
}
Returns the asset and rune depths and price. The values report the state at the end of each interval.
History endpoint has two modes:
With Interval parameter it returns a series of time buckets. From and To dates will be rounded to the Interval boundaries.
Without Interval parameter a single From..To search is performed with exact timestamps.
Interval: possible values: 5min, hour, day, week, month, quarter, year.
count: [1..400]. Defines number of intervals. Don't provide if Interval is missing.
from/to: optional int, unix second.
Possible usages with interval.
?interval=day&count=10
?interval=day&count=10&to=1608825600
?interval=day&count=10&from=1606780800
interval=day&from=1606780800&to=1608825600
Pagination is possible with from&count and then using the returned meta.endTime as the From parameter of the next query.
Possible configurations without interval:
?from=1606780899&to=1608825600
?from=1606780899
pool required | string Return stats for this single pool. |
interval | string Enum: "5min" "hour" "day" "week" "month" "quarter" "year" Example: interval=day Interval of calculations |
count | integer Example: count=30 Number of intervals to return. Should be between [1..400]. |
to | integer <int64> Example: to=1608825600 End time of the query as unix timestamp. If only count is given, defaults to now. |
from | integer <int64> Example: from=1606780800 Start time of the query as unix timestamp |
{- "meta": {
- "startTime": "string",
- "endTime": "string",
- "priceShiftLoss": "string",
- "luviIncrease": "string",
- "startAssetDepth": "string",
- "startRuneDepth": "string",
- "startLPUnits": "string",
- "startSynthUnits": "string",
- "endAssetDepth": "string",
- "endRuneDepth": "string",
- "endLPUnits": "string",
- "endSynthUnits": "string"
}, - "intervals": [
- {
- "startTime": "string",
- "endTime": "string",
- "assetDepth": "string",
- "runeDepth": "string",
- "assetPrice": "string",
- "assetPriceUSD": "string",
- "liquidityUnits": "string",
- "synthUnits": "string",
- "synthSupply": "string",
- "units": "string",
- "luvi": "string"
}
]
}
Returns earnings data for the specified interval.
History endpoint has two modes:
With Interval parameter it returns a series of time buckets. From and To dates will be rounded to the Interval boundaries.
Without Interval parameter a single From..To search is performed with exact timestamps.
Interval: possible values: 5min, hour, day, week, month, quarter, year.
count: [1..400]. Defines number of intervals. Don't provide if Interval is missing.
from/to: optional int, unix second.
Possible usages with interval.
?interval=day&count=10
?interval=day&count=10&to=1608825600
?interval=day&count=10&from=1606780800
interval=day&from=1606780800&to=1608825600
Pagination is possible with from&count and then using the returned meta.endTime as the From parameter of the next query.
Possible configurations without interval:
?from=1606780899&to=1608825600
?from=1606780899
interval | string Enum: "5min" "hour" "day" "week" "month" "quarter" "year" Example: interval=day Interval of calculations |
count | integer Example: count=30 Number of intervals to return. Should be between [1..400]. |
to | integer <int64> Example: to=1608825600 End time of the query as unix timestamp. If only count is given, defaults to now. |
from | integer <int64> Example: from=1606780800 Start time of the query as unix timestamp |
{- "meta": {
- "startTime": "string",
- "endTime": "string",
- "liquidityFees": "string",
- "blockRewards": "string",
- "earnings": "string",
- "bondingEarnings": "string",
- "liquidityEarnings": "string",
- "avgNodeCount": "string",
- "runePriceUSD": "string",
- "pools": [
- {
- "pool": "string",
- "assetLiquidityFees": "string",
- "runeLiquidityFees": "string",
- "totalLiquidityFeesRune": "string",
- "rewards": "string",
- "earnings": "string"
}
]
}, - "intervals": [
- {
- "startTime": "string",
- "endTime": "string",
- "liquidityFees": "string",
- "blockRewards": "string",
- "earnings": "string",
- "bondingEarnings": "string",
- "liquidityEarnings": "string",
- "avgNodeCount": "string",
- "runePriceUSD": "string",
- "pools": [
- {
- "pool": "string",
- "assetLiquidityFees": "string",
- "runeLiquidityFees": "string",
- "totalLiquidityFeesRune": "string",
- "rewards": "string",
- "earnings": "string"
}
]
}
]
}
Returns swap count, volume, fees, slip in specified interval. If pool is not specified returns for all pools
History endpoint has two modes:
With Interval parameter it returns a series of time buckets. From and To dates will be rounded to the Interval boundaries.
Without Interval parameter a single From..To search is performed with exact timestamps.
Interval: possible values: 5min, hour, day, week, month, quarter, year.
count: [1..400]. Defines number of intervals. Don't provide if Interval is missing.
from/to: optional int, unix second.
Possible usages with interval.
?interval=day&count=10
?interval=day&count=10&to=1608825600
?interval=day&count=10&from=1606780800
interval=day&from=1606780800&to=1608825600
Pagination is possible with from&count and then using the returned meta.endTime as the From parameter of the next query.
Possible configurations without interval:
?from=1606780899&to=1608825600
?from=1606780899
pool | string Return history given pool. Returns sum of all pools if missing. |
interval | string Enum: "5min" "hour" "day" "week" "month" "quarter" "year" Example: interval=day Interval of calculations |
count | integer Example: count=30 Number of intervals to return. Should be between [1..400]. |
to | integer <int64> Example: to=1608825600 End time of the query as unix timestamp. If only count is given, defaults to now. |
from | integer <int64> Example: from=1606780800 Start time of the query as unix timestamp |
{- "meta": {
- "startTime": "string",
- "endTime": "string",
- "toAssetCount": "string",
- "toRuneCount": "string",
- "synthMintCount": "string",
- "synthRedeemCount": "string",
- "totalCount": "string",
- "toAssetVolume": "string",
- "toRuneVolume": "string",
- "synthMintVolume": "string",
- "synthRedeemVolume": "string",
- "totalVolume": "string",
- "toAssetFees": "string",
- "toRuneFees": "string",
- "synthMintFees": "string",
- "synthRedeemFees": "string",
- "totalFees": "string",
- "toAssetAverageSlip": "string",
- "toRuneAverageSlip": "string",
- "synthMintAverageSlip": "string",
- "synthRedeemAverageSlip": "string",
- "averageSlip": "string",
- "runePriceUSD": "string"
}, - "intervals": [
- {
- "startTime": "string",
- "endTime": "string",
- "toAssetCount": "string",
- "toRuneCount": "string",
- "synthMintCount": "string",
- "synthRedeemCount": "string",
- "totalCount": "string",
- "toAssetVolume": "string",
- "toRuneVolume": "string",
- "synthMintVolume": "string",
- "synthRedeemVolume": "string",
- "totalVolume": "string",
- "toAssetFees": "string",
- "toRuneFees": "string",
- "synthMintFees": "string",
- "synthRedeemFees": "string",
- "totalFees": "string",
- "toAssetAverageSlip": "string",
- "toRuneAverageSlip": "string",
- "synthMintAverageSlip": "string",
- "synthRedeemAverageSlip": "string",
- "averageSlip": "string",
- "runePriceUSD": "string"
}
]
}
Returns total pool depths, total bonds, and total value locked in specified interval.
Total Value Locked = Total Bonds + 2 * Total Pool Depths
History endpoint has two modes:
With Interval parameter it returns a series of time buckets. From and To dates will be rounded to the Interval boundaries.
Without Interval parameter a single From..To search is performed with exact timestamps.
Interval: possible values: 5min, hour, day, week, month, quarter, year.
count: [1..400]. Defines number of intervals. Don't provide if Interval is missing.
from/to: optional int, unix second.
Possible usages with interval.
?interval=day&count=10
?interval=day&count=10&to=1608825600
?interval=day&count=10&from=1606780800
interval=day&from=1606780800&to=1608825600
Pagination is possible with from&count and then using the returned meta.endTime as the From parameter of the next query.
Possible configurations without interval:
?from=1606780899&to=1608825600
?from=1606780899
interval | string Enum: "5min" "hour" "day" "week" "month" "quarter" "year" Example: interval=day Interval of calculations |
count | integer Example: count=30 Number of intervals to return. Should be between [1..400]. |
to | integer <int64> Example: to=1608825600 End time of the query as unix timestamp. If only count is given, defaults to now. |
from | integer <int64> Example: from=1606780800 Start time of the query as unix timestamp |
{- "meta": {
- "startTime": "string",
- "endTime": "string",
- "totalValuePooled": "string",
- "totalValueBonded": "string",
- "totalValueLocked": "string",
- "runePriceUSD": "string"
}, - "intervals": [
- {
- "startTime": "string",
- "endTime": "string",
- "totalValuePooled": "string",
- "totalValueBonded": "string",
- "totalValueLocked": "string",
- "runePriceUSD": "string"
}
]
}
Returns withdrawals and deposits for given time interval. If pool is not specified returns for all pools
History endpoint has two modes:
With Interval parameter it returns a series of time buckets. From and To dates will be rounded to the Interval boundaries.
Without Interval parameter a single From..To search is performed with exact timestamps.
Interval: possible values: 5min, hour, day, week, month, quarter, year.
count: [1..400]. Defines number of intervals. Don't provide if Interval is missing.
from/to: optional int, unix second.
Possible usages with interval.
?interval=day&count=10
?interval=day&count=10&to=1608825600
?interval=day&count=10&from=1606780800
interval=day&from=1606780800&to=1608825600
Pagination is possible with from&count and then using the returned meta.endTime as the From parameter of the next query.
Possible configurations without interval:
?from=1606780899&to=1608825600
?from=1606780899
pool | string Return stats for given pool. Returns sum of all pools if missing |
interval | string Enum: "5min" "hour" "day" "week" "month" "quarter" "year" Example: interval=day Interval of calculations |
count | integer Example: count=30 Number of intervals to return. Should be between [1..400] |
to | integer <int64> Example: to=1608825600 End time of the query as unix timestamp. If only count is given, defaults to now |
from | integer <int64> Example: from=1606780800 Start time of the query as unix timestamp |
{- "meta": {
- "startTime": "string",
- "endTime": "string",
- "addAssetLiquidityVolume": "string",
- "addRuneLiquidityVolume": "string",
- "addLiquidityVolume": "string",
- "addLiquidityCount": "string",
- "withdrawAssetVolume": "string",
- "withdrawRuneVolume": "string",
- "impermanentLossProtectionPaid": "string",
- "withdrawVolume": "string",
- "withdrawCount": "string",
- "net": "string",
- "runePriceUSD": "string"
}, - "intervals": [
- {
- "startTime": "string",
- "endTime": "string",
- "addAssetLiquidityVolume": "string",
- "addRuneLiquidityVolume": "string",
- "addLiquidityVolume": "string",
- "addLiquidityCount": "string",
- "withdrawAssetVolume": "string",
- "withdrawRuneVolume": "string",
- "impermanentLossProtectionPaid": "string",
- "withdrawVolume": "string",
- "withdrawCount": "string",
- "net": "string",
- "runePriceUSD": "string"
}
]
}
[- {
- "nodeAddress": "thor102y0m3uptg0vvudeyh00r2fnz70wq7d8y7mu2g",
- "secp256k1": "thorpub1addwnpepqgxwdf3ure0pg5fwnpeux3ym9n06267lkres54zwjh4c8048ezhj5024qyr",
- "ed25519": "thorpub1addwnpepqgxwdf3ure0pg5fwnpeux3ym9n06267lkres54zwjh4c8048ezhj5024qyr"
}
]
{- "bondMetrics": {
- "totalActiveBond": "string",
- "averageActiveBond": "string",
- "medianActiveBond": "string",
- "minimumActiveBond": "string",
- "maximumActiveBond": "string",
- "totalStandbyBond": "string",
- "averageStandbyBond": "string",
- "medianStandbyBond": "string",
- "minimumStandbyBond": "string",
- "maximumStandbyBond": "string"
}, - "blockRewards": {
- "blockReward": "string",
- "bondReward": "string",
- "poolReward": "string"
}, - "activeBonds": [
- "string"
], - "standbyBonds": [
- "string"
], - "activeNodeCount": "string",
- "standbyNodeCount": "string",
- "totalPooledRune": "string",
- "totalReserve": "string",
- "nextChurnHeight": "string",
- "poolActivationCountdown": "string",
- "poolShareFactor": "string",
- "bondingAPY": "string",
- "liquidityAPY": "string"
}
List actions along with their related transactions. An action is generated by one or more inbound transactions with the intended action set in the transaction memo. The action may result in one or more outbound transactions. Results are paginated by sets of 50. Filters may be applied to query actions.
address | string Example: address=tbnb1fj2lqj8dvr5pumfchc7ntlfqd2v6zdxqwjewf5 Comma separated list. Address of sender or recipient of any in/out transaction related to the action. |
txid | string Example: txid=2F624637DE179665BA3322B864DB9F30001FD37B4E0D22A0B6ECE6A5B078DAB4 ID of any in/out tx related to the action |