Upshot Python API Tutorial
This tutorial aims to be a quick guide to get you started using the Upshot API integrated into messari’s python library.
[1]:
from messari.nfts import Upshot
up = Upshot()
[2]:
contract = '0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB'
asset_id = ['11', '1']
API Structure
The Upshot Python client contains a number of functions that wrap some of Upshot’s API endpoints. These include:
Assets
get_asset
get_asset_events
Pricing
get_pricing
get_pricing_current
Below are a few examples to showcase the functionality and types of data each function generates.
Assets
get_asset
Retrieve an asset by its asset ID
[5]:
assets = up.get_asset(contract_address=contract, asset_id=asset_id)
assets
[5]:
| 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| assetId | tokenId | name | description | creatorAddress | mediaUrl | tokenUri | contractAddress | previewImageUrl | mediaType | sourceType | txBlockNumber | txHash | txAt | contract | traits | |
| 0 | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/11 | 11 | CryptoPunk #11 | 0xC352B534e8b987e036A93539Fd6897F53488e56a | https://www.larvalabs.com/public/images/crypto... | None | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB | http://res.cloudinary.com/upshot-inc/image/upl... | IMAGE | SUBGRAPH | 3918216 | 0xdcc2d338ae2a0154ac0c50b8836fe96e7e8f17a2ccc2... | 1498225851 | {'address': '0xb47e3cd837dDF8e4c57F05d70Ab865d... | [{'traitId': 46907, 'trait': {'traitType': 'ty... | |
| 1 | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/432 | 432 | CryptoPunk #432 | 0xC352B534e8b987e036A93539Fd6897F53488e56a | https://www.larvalabs.com/public/images/crypto... | None | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB | http://res.cloudinary.com/upshot-inc/image/upl... | IMAGE | SUBGRAPH | 3918384 | 0x249bc6fdf97979676d2ddb66eae8f01520fa43077615... | 1498228895 | {'address': '0xb47e3cd837dDF8e4c57F05d70Ab865d... | [{'traitId': 46909, 'trait': {'traitType': 'ac... | |
| 2 | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | 1 | CryptoPunk #1 | 0xC352B534e8b987e036A93539Fd6897F53488e56a | https://www.larvalabs.com/public/images/crypto... | None | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB | http://res.cloudinary.com/upshot-inc/image/upl... | IMAGE | SUBGRAPH | 3918216 | 0xdcc2d338ae2a0154ac0c50b8836fe96e7e8f17a2ccc2... | 1498225851 | {'address': '0xb47e3cd837dDF8e4c57F05d70Ab865d... | [{'traitId': 46911, 'trait': {'traitType': 'ty... | |
get_asset_events
Return the event history for a given asset
[6]:
asset_events = up.get_asset_events(contract_address=contract, asset_id=asset_id)
asset_events.head()
[6]:
| 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 11 | ... | 1 | |||||||||||||||||||
| id | quantity | price | txBlockNumber | txToAddress | txFromAddress | txHash | type | txAt | marketType | ... | txToAddress | txFromAddress | txHash | type | txAt | marketType | sourceType | assetId | marketplace | currency | |
| 0 | 4551865.0 | 1 | 0 | 3918216 | 0xC352B534e8b987e036A93539Fd6897F53488e56a | 0x0000000000000000000000000000000000000000 | 0xdcc2d338ae2a0154ac0c50b8836fe96e7e8f17a2ccc2... | MINT | 1.498226e+09 | PRIMARY | ... | 0x0000000000000000000000000000000000000000 | 0xE73A1DBb41Bd58945c5Bdd0F30a721096e625aE9 | 0x2c988889 | BID_CANCELLED | 1630730539 | SECONDARY | OPENSEA | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | {'name': 'OpenSea-Orders', 'address': '0x7Be80... | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... |
| 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 0x0000000000000000000000000000000000000000 | 0xE73A1DBb41Bd58945c5Bdd0F30a721096e625aE9 | 0x2b34dd0a | BID | 1630567010 | SECONDARY | SUBGRAPH | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | {'name': 'CryptoPunks', 'address': '0xb47e3cd8... | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... |
| 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 0x0000000000000000000000000000000000000000 | 0x2e5e227280B1d5ee28500a9000296C112DC8efc5 | 0x2a92e7a3 | BID_CANCELLED | 1630476362 | SECONDARY | OPENSEA | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | {'name': 'OpenSea-Orders', 'address': '0x7Be80... | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... |
| 3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 0x0000000000000000000000000000000000000000 | 0x2e5e227280B1d5ee28500a9000296C112DC8efc5 | 0x29d96093 | BID | 1630376246 | SECONDARY | SUBGRAPH | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | {'name': 'CryptoPunks', 'address': '0xb47e3cd8... | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... |
| 4 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 0x0000000000000000000000000000000000000000 | 0x2e5e227280B1d5ee28500a9000296C112DC8efc5 | 0x29d90d5c | BID_CANCELLED | 1630376055 | SECONDARY | OPENSEA | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | {'name': 'OpenSea-Orders', 'address': '0x7Be80... | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... |
5 rows × 42 columns
Pricing
get_pricing
Returns all the price information for a specified asset (or assets) based on the provided filter.
[7]:
pricing = up.get_pricing(contract_address=contract, asset_id=asset_id)
pricing
[7]:
| 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 11 | 432 | 1 | |||||||||||||||||||
| assetId | estimatedPrice | low | high | confidence | source | currency | asset | assetId | estimatedPrice | ... | currency | asset | assetId | estimatedPrice | low | high | confidence | source | currency | asset | |
| 2022-01-06 | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/11 | 67823624523000000000 | 59965590916000000000 | 90465629799000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/432 | 79230014151000000000 | ... | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | 79553126868000000000 | 67109318549000000000 | 110015993894000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... |
| 2022-01-05 | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/11 | 75013486071000000000 | 64967958567000000000 | 100881525182000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/432 | 72922817261000000000 | ... | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | 88985507982000000000 | 78999999999000000000 | 124999999999000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... |
| 2021-12-30 | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/11 | 79258222435000000000 | 68983598440000000000 | 111317604802000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... | NaN | NaN | ... | NaN | NaN | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | 85604690507000000000 | 78676543667000000000 | 124999999999000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... |
3 rows × 24 columns
get_pricing_current
Returns an asset’s most recent price information
[8]:
pricing_current = up.get_pricing(contract_address=contract, asset_id=asset_id)
pricing_current.head()
[8]:
| 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 11 | 432 | 1 | |||||||||||||||||||
| assetId | estimatedPrice | low | high | confidence | source | currency | asset | assetId | estimatedPrice | ... | currency | asset | assetId | estimatedPrice | low | high | confidence | source | currency | asset | |
| 2022-01-06 | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/11 | 67823624523000000000 | 59965590916000000000 | 90465629799000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/432 | 79230014151000000000 | ... | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | 79553126868000000000 | 67109318549000000000 | 110015993894000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... |
| 2022-01-05 | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/11 | 75013486071000000000 | 64967958567000000000 | 100881525182000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/432 | 72922817261000000000 | ... | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | 88985507982000000000 | 78999999999000000000 | 124999999999000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... |
| 2021-12-30 | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/11 | 79258222435000000000 | 68983598440000000000 | 111317604802000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... | NaN | NaN | ... | NaN | NaN | 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB/1 | 85604690507000000000 | 78676543667000000000 | 124999999999000000000 | 0.68 | UPSHOT | {'id': 1, 'symbol': 'ETH', 'name': 'Ether', 'd... | {'id': '0xb47e3cd837dDF8e4c57F05d70Ab865de6e19... |
3 rows × 24 columns
[ ]: