Description
Retrieves pool yield/ROI predictions across fixed horizons (1D, 3D, 7D, 14D, 30D, 90D, 365D). Each record is anchored to an as-of block/log position and includes aligned arrays for pool tokens, reserves, volumes, fees, and ROI predictions.
Use this endpoint to:
- Rank pools by predicted fee yield over a horizon
- Build pool allocation screens (APR/ROI signals) with provenance
- Validate or backtest fee-driven yield models using
swap-fees and reserves
Parameters
Target EVM network. See the Chain enumeration for supported values.
Range Filters (mutually exclusive)
Starting block number (inclusive) for the query. Use with to_block.
Ending block number (inclusive) for the query. Use with from_block.
Starting timestamp (ISO-8601). If it falls between blocks, the next block after this timestamp is used. Use with to_timestamp.
Ending timestamp (ISO-8601). If it falls between blocks, the last block before this timestamp is used. Use with from_timestamp.
Validation rule:
You must provide either a block range, a time range, or at least one direct selector.
Providing more than one option results in HTTP 400.
Providing none results in HTTP 400.
Pool Selectors
Filter pools by exchange IDs. See the DigitalExchange enumeration for supported values.
Filter by BlockDB pool identifiers (uid from /evm/pools).
Filter by pool contract addresses (hex string, 20 bytes, no 0x prefix).
Filter by protocol-specific pool identifiers (e.g., Uniswap V4 pool_id).
Filter by AMM archetype. See the PoolType enumeration for supported values.
Horizon & Token Filters
Target horizon in days. Allowed values: 1, 3, 7, 14, 30, 90, 365.
Restrict to pools that contain at least one of these tokens (hex string, 20 bytes, no 0x prefix).
If true, returns only rows where observed_period_days == target_period_days (no extrapolation).
Recommended default 250; maximum 1000 to stay under ~10 MB responses.
Pagination cursor from a prior call.
Response Fields
Echo of request metadata applied to the response.
EVM chain ID echoed from the request.
Block/timestamp bounds derived from the request.
Filters echoed from the request (selectors, horizon filters, pagination state, etc.).
Data
Array of yield/ROI prediction records matching the request.
Chain ID for the yield record.
Stable identifier for the yield record.
BlockDB pool identifier (uid from /evm/pools).
Block height of the as-of snapshot anchor.
UTC timestamp of the as-of snapshot anchor.
Zero-based transaction index within the block.
Zero-based log index within the transaction.
Target horizon in days (1, 3, 7, 14, 30, 90, 365).
data.observed_period_days
Observed history actually used to produce the prediction.
true when observed_period_days == target_period_days.
true when the row is scaled from shorter history.
Scaling factor applied when extrapolating. Returned as a string to preserve precision.
Start time of the observed window used for aggregation.
End time of the observed window used for aggregation.
Pool token addresses. All array-valued metrics are aligned to this order.
Current reserves per token (decimals-adjusted). Returned as strings to preserve precision.
Observed traded volume per token in the observed window.
Predicted traded volume per token for the target horizon.
Observed user/LP fee amounts per token in the observed window.
Predicted user/LP fee amounts per token for the target horizon.
Predicted ROI fractions per token for the target horizon.
Row-level lineage hash (hex string, no 0x prefix).
Lineage references of immediate parents.
Record creation timestamp (ISO-8601).
Last update timestamp (ISO-8601).
Envelope Fields
Cursor token for pagination.
Number of records returned in data.
curl -X POST "https://api.blockdb.io/v1/evm/yields" \
-H "Authorization: Bearer $BLOCKDB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chain_id": 1,
"target_period_days": 30,
"pool_uids": [
"88e6a0c2ddd26feeb64f039a2c41296fcb3f5640000000000000000000000000"
],
"from_timestamp": "2025-12-01T00:00:00Z",
"to_timestamp": "2025-12-20T00:00:00Z",
"require_full_period": true,
"limit": 250
}'
{
"meta": {
"chain_id": 1,
"request_window": {
"from_timestamp": "2025-12-01T00:00:00Z",
"to_timestamp": "2025-12-20T00:00:00Z"
},
"filters": {
"pool_uids": [
"88e6a0c2ddd26feeb64f039a2c41296fcb3f5640000000000000000000000000"
],
"target_period_days": 30,
"require_full_period": true,
"limit": 250,
"cursor": null
}
},
"data": [
{
"chain_id": 1,
"id": 987654321,
"pool_uid": "88e6a0c2ddd26feeb64f039a2c41296fcb3f5640000000000000000000000000",
"exchange_id": 1,
"type_id": 201,
"block_number": 19001234,
"block_time": "2025-12-20T12:34:56Z",
"tx_index": 7,
"log_index": 12,
"target_period_days": 30,
"observed_period_days": 30,
"is_full_period": true,
"is_extrapolated": false,
"extrapolation_factor": "1.000000",
"window_start_time": "2025-11-20T12:34:56Z",
"window_end_time": "2025-12-20T12:34:56Z",
"tokens": [
"c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
],
"current_reserves": [
"1250.000000000000000000",
"3950000.000000000000000000"
],
"volume_observed": [
"12000.000000000000000000",
"0.000000000000000000"
],
"volume_predicted": [
"12000.000000000000000000",
"0.000000000000000000"
],
"user_fees_observed": [
"36.000000000000000000",
"0.000000000000000000"
],
"user_fees_predicted": [
"36.000000000000000000",
"0.000000000000000000"
],
"roi_predicted": [
"0.028800000000000000",
"0.000000000000000000"
],
"_tracing_id": "0411c0ffee000000000000000000000000000000000000000000000000000001",
"_parent_tracing_ids": [
"0303c0ffee000000000000000000000000000000000000000000000000000001",
"0301c0ffee000000000000000000000000000000000000000000000000000001"
],
"_created_at": "2025-12-20T12:35:01Z",
"_updated_at": "2025-12-20T12:35:01Z"
}
],
"cursor": null,
"count": 1
}