Historical
In order to retrieve positions at multiple points in time, use the positions/historical endpoint.
To fully understand the output data, please refer to the Positions Point in time documentation and see the example below.
To fully understand how to specify the time series for which you want to retrieve data, please refer to the Historical Data documentation.
This is a sample request for the positions in wallet 0x295B61866dAA53a76CE4b3a927EFAF0059b4a90A from block 17540049 until the most recent block, every 1,000 blocks.
curl \
-H 'Authorization: Bearer <API KEY>' \
'https://gateway.credmark.com/v1/portfolio/1/0x295B61866dAA53a76CE4b3a927EFAF0059b4a90A/positions/historical?startBlockNumber=17540049&blockInterval=1000'
Don’t forget to escape the ‘&’ when pasting this into a Unix terminal.
These are the path segments, in order, and their meaning:
Segment | Meaning |
---|---|
v1 | The API version |
portfolio | The API name |
1 | The Chain ID, in this case, Ethereum mainnet |
0x295B61866dAA53a76CE4b3a927EFAF0059b4a90A | The address of the wallet from which we want to extract positions |
positions/historical | The requested resource, in this case, positions/historical |
In this example we pass two query parameters, startBlockNumber and blockInterval. These mean that the first block for which positions should be retrieved is startBlockNumber, in this case, 17540049. Because we did not specify an endBlockNumber, it is assumed to be the latest block available when the API call is made. And finally, blockInterval is used to specify how often to retrieve positions between those two block numbers, in this case, once every 1,000 blocks.
Given that input, this is what our output looks like. For brevity we've omitted part of the response and replaced it with an ellipsis.
{
"chainId": 1,
"startBlockNumber": 17540049,
"endBlockNumber": 17554456,
"startTimestamp": 1687496255,
"endTimestamp": 1687671299,
"accounts": [
"0x295B61866dAA53a76CE4b3a927EFAF0059b4a90A"
],
"data": [
{
"blockNumber": 17540456,
"blockTimestamp": 1687501211,
"positions": [
{
"tokenAddress": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"balance": 0.2747114942399529
},
{
"tokenAddress": "0x43f11c02439e2736800433b4594994bd43cd066d",
"balance": 1370583.044686943
},
{
"tokenAddress": "0x68cfb82eacb9f198d508b514d898a403c449533e",
"balance": 6992.117661177189
},
{
"tokenAddress": "0x8588d3a5fa9f63fa150815a88fc97183104fb6dc",
"balance": 250
},
{
"tokenAddress": "0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab",
"balance": 57.912372252507524
},
{
"tokenAddress": "0x8a40d1d5fd9c781e2eca06c78181f038ee4f4aa0",
"balance": 23255
},
{
"tokenAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"balance": 31.62
},
{
"tokenAddress": "0xcf0c122c6b73ff809c693db761e7baebe62b6a2e",
"balance": 1370583.044686943
},
{
"tokenAddress": "0xf61cacbd97a5f41e9bec170f21a8ff0b276b0266",
"balance": 21129.148888
}
]
},
{
"blockNumber": 17541456,
"blockTimestamp": 1687513475,
"positions": [
{
"tokenAddress": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"balance": 0.2747114942399529
},
{
"tokenAddress": "0x43f11c02439e2736800433b4594994bd43cd066d",
"balance": 1370583.044686943
},
{
"tokenAddress": "0x68cfb82eacb9f198d508b514d898a403c449533e",
"balance": 6992.117661177189
},
{
"tokenAddress": "0x8588d3a5fa9f63fa150815a88fc97183104fb6dc",
"balance": 250
},
{
"tokenAddress": "0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab",
"balance": 57.912372252507524
},
{
"tokenAddress": "0x8a40d1d5fd9c781e2eca06c78181f038ee4f4aa0",
"balance": 23255
},
{
"tokenAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"balance": 31.62
},
{
"tokenAddress": "0xcf0c122c6b73ff809c693db761e7baebe62b6a2e",
"balance": 1370583.044686943
},
{
"tokenAddress": "0xf61cacbd97a5f41e9bec170f21a8ff0b276b0266",
"balance": 21129.148888
}
]
},
...,
{
"blockNumber": 17554456,
"blockTimestamp": 1687671299,
"positions": [
{
"tokenAddress": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"balance": 0.2747114942399529
},
{
"tokenAddress": "0x43f11c02439e2736800433b4594994bd43cd066d",
"balance": 1370583.044686943
},
{
"tokenAddress": "0x68cfb82eacb9f198d508b514d898a403c449533e",
"balance": 6992.117661177189
},
{
"tokenAddress": "0x8588d3a5fa9f63fa150815a88fc97183104fb6dc",
"balance": 250
},
{
"tokenAddress": "0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab",
"balance": 57.912372252507524
},
{
"tokenAddress": "0x8a40d1d5fd9c781e2eca06c78181f038ee4f4aa0",
"balance": 23255
},
{
"tokenAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"balance": 31.62
},
{
"tokenAddress": "0xcf0c122c6b73ff809c693db761e7baebe62b6a2e",
"balance": 1370583.044686943
},
{
"tokenAddress": "0xf61cacbd97a5f41e9bec170f21a8ff0b276b0266",
"balance": 21129.148888
}
]
}
]
}
As with the output from our point in time example, our response body includes the context of the request. In this case:
Field | Value | Meaning |
---|---|---|
chainID | 1 | The Chain ID, in this case, Ethereum mainnet. |
startBlockNumber | 17540049 | This is the first block number that is included in our output. |
endBlockNumber | 17554456 | This is the last block that is included in our output. Note that this was not specified but computed based on the input parameters provided. |
startTimetamp | 1687496255 | This is the timestamp (number of seconds since January 1st, 1970) associated with the startBlockNumber. |
endTimestamp | 1687671299 | This is the timestamp (number of seconds since January 1st, 1970) associated with the startBlockNumber. |
accounts | [ "0x295B61866dAA53a76CE4b3a927EFAF0059b4a90A" ] | The list of accounts (wallets) from which positions were extracted. |
The response then contains an array called data. Each array element includes a blockNumber, a blockTimestamp and an array of positions that existed at blockNumber in accounts.
Last modified 2mo ago