Introduction

To use any of the API endpoints, you first need to acquire an API key. Contact us on enquiries@block.co to get your API key.

Block.co's NFT API provides you with programmatic access to all of the platform's functionality and features, allowing a user to create NFT collections, get info of the created collections and claim an NFT if the user has the privileges

If you are looking for the API documentation for Block.co's Credentialing platform, you can find it here.

To gain access to the API you need to request an API key at enquiries@block.co.

Every request should contain an HTTP header Authorization: Token YOUR_API_KEY.

All the URLs in this documentation are relative. You should prepend `https://api.block.co` or `https://test-api.block.co` depending on the environment you're working on. Please note that all API endpoint URLs should have a trailing slash `/` at the end.

You can download a Postman collection with the requests in this document here. You need to create a Postman environment with the variables `base_url` (https://test-api.block.co or https://api.block.co depending on which environment your account was created) and `api_key` (your API key).

Workflow

One of the challenges of working with this API is that creating a collection or claiming an NFT are not instant actions. These actions require a blockchain transaction in order to become final, and because of the nature of the blockchain this takes time.

So, when creating a collection you get back a collection ID (this is an internal unique ID in the API's database) and then you need to periodically poll (request) the "Get collection" endpoint until the collection's status is "READY" (30). This may take up to a few minutes. Only then is the collection's smart contract deployed on the blockchain and the collection's NFTs can be minted and claimed.

Create Collection

POST/nftapi/collection/

Creates a collection of one or more NFTs using the ERC721 standard. The collection will first have a "PROCESSING" status (10) until the files are processed and the contract deployment transaction is included in the next block. You can interact (claim, get QR codes etc.) with the collection's NFTs when the collection's status becomes "READY" (30), you can check a collection status using the Get Collection endpoint.

There are 4 types of collections depending on the parameter `sharetype`.

Possible collection 'sharetype' values are:

EMAIL = 10
ADDRESS = 15
QRCODE = 20
SMS = 30

'EMAIL' sharetype means that an email address should be included in each NFT's metadata (as an 'Email' field). After the collection is ready it allows for sending the NFTs' claiming links via email to their recipients

'ADDRESS' sharetype means that a wallet address should be included in each NFT's metadata (as an 'Address' field). After the collection is ready, the NFTs will be automatically minted and transfered to their recipients' wallet addresses. This sharetype also allows to mint every NFT in a collection to your own wallet (just provide the same 'Address' for each NFT) and handle them however you see fit afterwards.

'QRCODE' sharetype is the simplest form of collection. After the collection is ready, you have the option of either downloading the QR-codes for claiming each NFT, or getting the NFT claim links and disseminating them to the intended recipients as appropriate.

'SMS' sharetype means that a mobile phone number should be included in each NFT's metadata (as an 'PhoneNumber' field in international +XXX format). After the collection is ready it allows for sending the NFTs' claiming links via SMS to their recipients

This request's Content-Type should be multipart/form-data.

Request

Example: 137
Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
chain number FormData Required The network_id of the blockchain that the NFTs will be minted. Ethereum mainnet: 1, Polygon mainnet: 137, Polygon testnet (Mumbai): 80001 (see Supported Blockchains Info). You need to have minting credits for the blockchain you are going to use (see Credits Info).
file file FormData Required A list of the image files that will be minted as NFTs. Append them as 'file' in the FormData.
name string FormData Required The Collection name. This is also the 'name' of the Smart Contract so it goes on the blockchain, publicly visible.
description string FormData Required The description for the Collection.
metadata JSON string FormData Required A JSON string that contains individual information (metadata) for each NFT. The same asset can be used multiple times (to mint several NFTs with the same asset). Each "Asset" should also be included in the `file` field of the request. "Name" and "Description" are required. Example: [{"Asset":"test.jpeg","Name":"","Description":"","Email":""}]
sharetype number FormData Required A number indicating what type of collection you're creating. It should have one of the `sharetype` values listed above. Example: 20
transferable string FormData Optional Indicates if the NFTs may be transferred (or sold) after the initial claiming. Set to false if the NFTs are supposed to be personal (e.g. Proof of attendance, degree, etc.). Default is 'false'. Example: 'true'
limit number FormData Optional A number indicating the maximum number of NFTs this collection may have. This limit is also enforced at the smart contract, so it's public. Default is no limit. Example: 20
royalties number FormData Optional The value of royalties percentage multiplied by 100, for example if you want the percentage to be 5% the value should be 500. Example: 500
royalties_recipient string FormData Optional The address of the wallet which will receive the royalties. Example: 0xe79311408c601e2998F071B3D56194d009eD47bB

Response

{ collectionId: 212 }

Add to Collection

POST/collection/{collection_id}/add/

Adds a number of NFTs to an existing collection. If a limit (maximum number of NFTs) has been set when creating the collection, the existing NFTs plus the added NFTs should not surpass that number.

If succesful, these NFTs can be handled as all NFTs in a collection according to its sharetype (e.g. you may get their QR-codes, or claim links and send them to their recipients)

This request's Content-Type should be multipart/form-data.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
file file FormData Required A list of the image files that will be minted as NFTs. Append them as 'file' in the FormData.
metadata JSON string FormData Required A JSON string that contains individual information (metadata) for each NFT. The same asset can be used multiple times (to mint several NFTs with the same asset). Each "Asset" should also be included in the `file` field of the request. "Name" and "Description" are required. Example: [{"Asset":"test.jpeg","Name":"","Description":"","Email":""}]

Response

{ collectionId: 212 }

Get Collections

GET/nftapi/collection/

Returns a list of your collections (paginated) with some generic details about each one.

Possible collection statuses are:

INITIATED = 10
PROCESSING = 15
PENDING_CONFIRMATION = 20
DEPLOYED = 25
READY = 30
FAILED = 100

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
page int Query parameter Optional The resulting list of collections is paginated in pages of 10 objects. If the parameter is omitted, the first page will be returned by default. A page query parameter is required to get the appropriate page. Example: ?page=2

Response

{
    "total": 2,
    "results": [
        {
            "id": 1,
            "name": "First",
            "description": "First desc",
            "status": 30,
            "created": "2022-05-03T11:51:05.203143Z",
            "user": 1,
            "client": 1,
            "chain": 2,
            "nfts": {
                "total": 3,
                "claimed": 1
            },
            "thumbnail": "client_1/collection_1/assets/1.png"
        },
        {
            "id": 2,
            "name": "Second",
            "description": "Second desc",
            "status": 30,
            "created": "2022-05-03T11:51:05.203143Z",
            "user": 1,
            "client": 1,
            "chain": 2,
            "nfts": {
                "total": 3,
                "claimed": 1
            },
            "thumbnail": "client_1/collection_2/assets/2.png"
        }
    ]
}

Get Collection details

GET/nftapi/collection/{collection_id}/

Returns collection status and details.

Possible collection statuses are:

INITIATED = 10
PROCESSING = 15
PENDING_CONFIRMATION = 20
DEPLOYED = 25
READY = 30
FAILED = 100

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
collection_id int URL Required The details of the collection with this id will be returned.

Response

{
    "id": 1,
    "name": "test",
    "description": "test",
    "status": 15,
    "created": "2021-09-03T14:20:03.409572Z",
    "user": "admin",
    "client": 1,
    "nfts": {
        "total": 1,
        "claimed": 0
    }
}

Get Collection NFT details

GET/nftapi/collection/{collection_id}/nft-details/

Returns a list of all NFT details in a collection.

Possible NFT statuses are:

INITIATED = 10
CLAIMED = 15
PROCESSING = 20
PENDING_CONFIRMATION = 25
FAILED = 100

Of these statuses, `INITIATED` means that the NFT exists in a collection but hasn't been claimed yet, and 'CLAIMED' that it has been minted and transferred to a wallet address. All the rest are transitioning status on various stages of processing or waiting to be confirmed on the blockchain.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
collection_id int URL Required The collection_id for which you want the NFT details
page int Query parameter Optional NFT details results are paginated in pages of 50 objects. If the parameter is ommitted, the first page will be returned by default. A page query parameter is required to get the appropriate page. Example: ?page=2

Response

{
    "total": 1,
    "page": 1,
    "results": [
        {
            "url": "client_1/collection_1/assets/7728a38a-faff-48a5-807a-9423fbc0b899.jpeg", # This is the path of the image on Block.co's servers (for easier viewing)
            "thumbnail": "client_1/collection_1/thumbnails/7728a38a-faff-48a5-807a-9423fbc0b899.jpeg", # This is the path of the image on Block.co's servers (for easier viewing)
            "metadata": {
                "Asset": "test.jpeg",
                "Email": "",
                "Name": "",
                "Description": ""
            },
            "status": 10,
            "created": "2021-09-03T14:20:08.628374Z",
            "link_id": "671f1ef6-1b4f-4b98-b2ff-6cb2b2138158", # This is the unique ID for the NFT's claiming page
                (the full URL would be https://api.block.co/nft/671f1ef6-1b4f-4b98-b2ff-6cb2b2138158/ or https://test-api.block.co/nft/671f1ef6-1b4f-4b98-b2ff-6cb2b2138158/ depending on the environment you're working on)
            "claim_link": "https://test-api.block.co/nft/671f1ef6-1b4f-4b98-b2ff-6cb2b2138158/", # This is the full URL for the webpage to claim the NFT. Send this to the intended NFT recipient
            "json_cid": "QmYTXd6xFumDwE8Hc8W4Jy6ywEiJbUPP7mrg3EHDQotS8r", # This is the IPFS cid for the NFT's metadata
            "img_cid": "QmRUTK9Bzqaww8kEjB7RKToojABS6Va3rUDt9iHHaA4CFu", # This is the IPFS cid for the NFT's asset
            "claimed": true
        }
    ]
}

Get Collection QR-codes

GET/nftapi/collection/{collection_id}/qrcodes/

Returns a ZIP file containing QR-codes for claiming each NFT in a collection. The collection sharetype should be either EMAIL or QRCODE for this to work.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
collection_id int URL Required The collection_id for which you want the claiming QR-codes

Response

ZIP file containing the QR-code image files for claiming the NFTs.

Send Emails for Collection

POST/nftapi/collection/{collection_id}/email/

Send emails (wherever available) to each NFT owner with a claim link so he/she can use it to claim the NFT (the collection shoud have sharetype EMAIL)

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
collection_id int URL Required The collection_id for which you want to send the emails

Response

status_code: 200 OK

Send SMSes for Collection

POST/nftapi/collection/{collection_id}/sms/

Send SMSes (wherever available) to each NFT owner with a claim link so he/she can use it to claim the NFT (the collection should have sharetype SMS)

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
collection_id int URL Required The collection_id for which you want to send the SMSes

Response

status_code: 200 OK

Supported Blockchains Info

GET/nftapi/nft/{link_id}/

Returns a specific NFT's details. You use the link_id (the unique ID for the NFT's claiming page) of the NFT to perform the query.

Possible NFT statuses are:

INITIATED = 10
CLAIMED = 15
PROCESSING = 20
PENDING_CONFIRMATION = 25
FAILED = 100

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
link_id str URL Required The link_id for which you want the NFT details

Response

{
    "url": "client_1/collection_1/assets/7728a38a-faff-48a5-807a-9423fbc0b899.jpeg",
    "thumbnail": "client_1/collection_1/thumbnails/7728a38a-faff-48a5-807a-9423fbc0b899.jpeg",
    "metadata": {
        "Asset": "test.jpeg",
        "Email": "",
        "Name": "",
        "Description": ""
    },
    "status": 10,
    "created": "2021-09-03T14:20:08.628374Z",
    "link_id": "671f1ef6-1b4f-4b98-b2ff-6cb2b2138158",
    "claim_link": "https://test-api.block.co/nft/671f1ef6-1b4f-4b98-b2ff-6cb2b2138158/", # This is the full URL for the webpage to claim the NFT. Send this to the intended NFT recipient
    "json_cid": "QmYTXd6xFumDwE8Hc8W4Jy6ywEiJbUPP7mrg3EHDQotS8r", # This is the IPFS cid for the NFT's metadata
    "img_cid": "QmRUTK9Bzqaww8kEjB7RKToojABS6Va3rUDt9iHHaA4CFu", # This is the IPFS cid for the NFT's asset
    "claimed": true
}

Send Email for NFT

POST/nftapi/nft/{nft_id}/email/

Send email to NFT owner with a claim link so he/she can use it to claim the NFT (the collection should have sharetype EMAIL)

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
nft_id int URL Required The nft_id for which you want to send the email

Response

status_code: 200 OK

Send SMS for NFT

POST/nftapi/nft/{nft_id}/sms/

Send SMS to NFT owner with a claim link so he/she can use it to claim the NFT (the collection should have sharetype SMS)

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
nft_id int URL Required The nft_id for which you want to send the SMS

Response

status_code: 200 OK

Claim NFT

POST/nftapi/nft/{link_id}/claim/{recipient_address}

Claim the NFT with the link ID given. This mints and transfers the NFT to a wallet address (recipient address)

This is not instant, since the claim transaction needs to be included in a block before being final. You can check the NFT details for status 'CLAIMED' for this.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
link_id int URL Required The link ID of the NFT that will be claimed.
recipient_address str URL Required The recipient address which the NFT will be transfered to.

Response

status_code: 201 CREATED
                                        

Credits Info

GET/auth/nft-credits/

Returns user remaining credits for each supported blockchain (the key is the network_id for the supported blockchain)

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.

Response

{
	"137": {
		"coll_creds_remaining": 2,
		"nft_creds_remaining": 1000
        },
    	"80001": {
		"coll_creds_remaining": 10,
		"nft_creds_remaining": 2000
	}
}

Supported Blockchains Info

GET/auth/nft-chains/

Returns user's NFT blockchain networks available for minting NFTs.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.

Response


[
	{
		"id": 1,
		"network_id": 137,
		"name": "Polygon",
		"explorer_url": "https://polygonscan.com/"
	},
	{
		"id": 2,
		"network_id": 80001,
		"name": "Mumbai Test Network",
		"explorer_url": "https://mumbai.polygonscan.com/"
	}
]

Get user info

GET/auth/nft-user-data/

Returns general information about your account and the platform. Includes information about the supported blockchains

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.

Response

{
    "username": "tsiolkas.v@block.co",
    "email": "tsiolkas.v@block.co",
    "verified_email": true,
    "client": { # This contains general information about your organisation
        "id": 1,
        "name": "Block.co",
        "logo": "client_1/logo/logo.png",
        "domain": "https://test-api.block.co",
        "domain_identity_proof": false,
        "contract_type": "Contract",
        "has_pending_order": false,
        "client_links_domain": null,
        "options": {
            "only_see_document_credits": false,
            "only_see_tx_credits": false
        },
        "has_pk_ownership": false
    },
    "chains": [
        {
            "id": 2,
            "network_id": 137,
            "name": "Polygon",
            "explorer_url": "https://polygonscan.com/"
        },
        {
            "id": 3,
            "network_id": 80001,
            "name": "Polygon Mumbai Testnet",
            "explorer_url": "https://mumbai.polygonscan.com/"
        },
    ]
}
                                        

Contract Owners count

GET /analytics/{chainID}/owners-count-by-contract/{contractAddress}/{duration}/{groupByPeriod}/

Get owners count by contract address.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
chainID string Path Parameter Required The chainID of the blockchain you want to query. 1 for Ethereum, 137 for Polygon.
contractAddress string Path Parameter Required The Contract address which will be queried.
duration string Path Parameter Required Possible values
DURATION_UNSPECIFIED: Unspecified value.
DURATION_1_DAY: 1 day.
DURATION_7_DAYS: 7 days.
DURATION_30_DAYS: 30 days.
DURATION_365_DAYS: 365 days
groupByPeriod string Path Parameter Required Aggregation period for the analysis.
Depending on the requested duration following minimal values are allowed:

duration = 1 day, minimum allowed value is 15 minutes;
duration = 7 days, minimum allowed value is 1 hour;
duration = 30 days, minimum allowed value is 1 day;
duration = 365 days, minimum allowed value is 1 day.
GROUP_BY_PERIOD_UNSPECIFIED: Undefined value.
GROUP_BY_PERIOD_15_MINUTES: 15 minutes.
GROUP_BY_PERIOD_1_HOUR: 1 hour.
GROUP_BY_PERIOD_1_DAY: 1 day.

Response

{
  "dataPoints": [
    {
      "timestamp": "2022-05-03T00:00:00Z",
      "count": "2"
    },
    {
      "timestamp": "2022-05-03T00:00:00Z",
      "count": "5"
    }
  ]
}
                                        

Contract sales count / volume

GET /analytics/{chainID}/sales-volume-by-contract/{contractAddress}/{duration}/{groupByPeriod}/

Get the count and total volume of sales for a contract address.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
chainID string Path Parameter Required The chainID of the blockchain you want to query. 1 for Ethereum, 137 for Polygon.
contractAddress string Path Parameter Required The Contract address which will be queried.
duration string Path Parameter Required Possible values
DURATION_UNSPECIFIED: Unspecified value.
DURATION_1_DAY: 1 day.
DURATION_7_DAYS: 7 days.
DURATION_30_DAYS: 30 days.
DURATION_365_DAYS: 365 days
groupByPeriod string Path Parameter Required Aggregation period for the analysis.
Depending on the requested duration following minimal values are allowed:

duration = 1 day, minimum allowed value is 15 minutes;
duration = 7 days, minimum allowed value is 1 hour;
duration = 30 days, minimum allowed value is 1 day;
duration = 365 days, minimum allowed value is 1 day.
GROUP_BY_PERIOD_UNSPECIFIED: Undefined value.
GROUP_BY_PERIOD_15_MINUTES: 15 minutes.
GROUP_BY_PERIOD_1_HOUR: 1 hour.
GROUP_BY_PERIOD_1_DAY: 1 day.

Response

{
  "dataPoints": [
    {
      "timestamp": "2022-05-03T00:00:00Z",
      "count": "2",
      "volume": "562.123"
    },
    {
      "timestamp": "2022-05-04T00:00:00Z",
      "count": "12",
      "volume": "2321.123"
    }
  ]
}

                                        

Contract Prices

GET /analytics/{chainID}/prices-by-contract/{contractAddress}/{duration}/{groupByPeriod}/

Get min/average/max price for a contract address.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
chainID string Path Parameter Required The chainID of the blockchain you want to query. 1 for Ethereum, 137 for Polygon.
contractAddress string Path Parameter Required The Contract address which will be queried.
duration string Path Parameter Required Possible values
DURATION_UNSPECIFIED: Unspecified value.
DURATION_1_DAY: 1 day.
DURATION_7_DAYS: 7 days.
DURATION_30_DAYS: 30 days.
DURATION_365_DAYS: 365 days
groupByPeriod string Path Parameter Required Aggregation period for the analysis.
Depending on the requested duration following minimal values are allowed:

duration = 1 day, minimum allowed value is 15 minutes;
duration = 7 days, minimum allowed value is 1 hour;
duration = 30 days, minimum allowed value is 1 day;
duration = 365 days, minimum allowed value is 1 day.
GROUP_BY_PERIOD_UNSPECIFIED: Undefined value.
GROUP_BY_PERIOD_15_MINUTES: 15 minutes.
GROUP_BY_PERIOD_1_HOUR: 1 hour.
GROUP_BY_PERIOD_1_DAY: 1 day.

Response

{
  "dataPoints": [
    {
      "timestamp": "2022-05-03T00:00:00Z",
      "min": "25.12",
      "max": "111.123",
      "avg": "49.123"
    },
    {
      "timestamp": "2022-05-04T00:00:00Z",
      "min": "24.12",
      "max": "110.123",
      "avg": "48.123"
    }
  ]
}
                                        

NFTs By Owner

GET /analytics/{chainID}/nfts-by-owner-address/{ownerAddress}/

Get the list of NFTs owned by a given address.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
chainID string Path Parameter Required The chainID of the blockchain you want to query. 1 for Ethereum, 137 for Polygon.
ownerAddress string Path Parameter Required The Owner Address For Which We Filter/Get It's NTFs.

Response

{
  "tokens": [
    {
      "contractAddress": "0x1ef8f94ad97dc4d7e64dd6b60b67d9944312508b",
      "tokenId": "1",
      "type": "TOKEN_TYPE_ERC721",
      "metadata": {
        "metadataUri": {
          "uri": "ipfs://QmSeRtXqthCBnTMKF9sW4jLeYmrWWuZUZESM7z4Qf9wYi3/1.json",
          "mimeType": ""
        },
        "name": "",
        "description": "",
        "image": null
      },
      "quantity": "1"
    },
    {
      "contractAddress": "0x1ef8f94ad97dc4d7e64dd6b60b67d9944312508b",
      "tokenId": "2",
      "type": "TOKEN_TYPE_ERC721",
      "metadata": {
        "metadataUri": {
          "uri": "ipfs://QmSeRtXqthCBnTMKF9sW4jLeYmrWWuZUZESM7z4Qf9wYi3/2.json",
          "mimeType": "application/json"
        },
        "name": "Niki Tis Samothrakis",
        "description": "Image From Louvre Museum",
        "image": {
          "uri": "https://polygon.cdn-proxy.mnemonichq.com/0x1ef8f94ad97dc4d7e64dd6b60b67d9944312508b/2",
          "uriOriginal": "ipfs://QmSLiToCEQWCNT5nmFkNtkTmF21zc5fPYv9vWRGGkZac1A/IMG_3178.jpg",
          "mimeType": "image/jpeg"
        }
      },
      "quantity": "1"
    },
    {
      "contractAddress": "0xabd0a793b75a49342d57173ce1c1b75bffb428b4",
      "tokenId": "2",
      "type": "TOKEN_TYPE_ERC721",
      "metadata": {
        "metadataUri": {
          "uri": "ipfs://QmeWahpdZfzD13gVJaTDwsoZqCFozub3EhdiKXtvHwRsnw/2.json",
          "mimeType": ""
        },
        "name": "",
        "description": "",
        "image": null
      },
      "quantity": "1"
    }
  ]
}
                                        

NFTs by the Minter

GET /analytics/{chainID}/nfts-by-minter-address/{minterAddress}/

Get the list of NFTs minted by a given address.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
chainID string Path Parameter Required The chainID of the blockchain you want to query. 1 for Ethereum, 137 for Polygon.
minterAddress string Path Parameter Required The Minter's Address Of Which The NFT's We Get.

Response

{
  "tokens": [
    {
      "contractAddress": "0x1ef8f94ad97dc4d7e64dd6b60b67d9944312508b",
      "tokenId": "1",
      "type": "TOKEN_TYPE_ERC721",
      "metadata": {
        "metadataUri": {
          "uri": "ipfs://QmSeRtXqthCBnTMKF9sW4jLeYmrWWuZUZESM7z4Qf9wYi3/1.json",
          "mimeType": ""
        },
        "name": "",
        "description": "",
        "image": null
      },
      "mintEvent": {
        "txHash": "0xe4b0ab3fdc3cf70725e4e2159424ce9ea9b02902eb9c4a85d0a82d93cab23fd8",
        "logIndex": "103",
        "blockTimestamp": "2022-11-30T09:16:03Z"
      }
    },
    {
      "contractAddress": "0x1ef8f94ad97dc4d7e64dd6b60b67d9944312508b",
      "tokenId": "2",
      "type": "TOKEN_TYPE_ERC721",
      "metadata": {
        "metadataUri": {
          "uri": "ipfs://QmSeRtXqthCBnTMKF9sW4jLeYmrWWuZUZESM7z4Qf9wYi3/2.json",
          "mimeType": "application/json"
        },
        "name": "Niki Tis Samothrakis",
        "description": "Image From Louvre Museum",
        "image": {
          "uri": "https://polygon.cdn-proxy.mnemonichq.com/0x1ef8f94ad97dc4d7e64dd6b60b67d9944312508b/2",
          "uriOriginal": "ipfs://QmSLiToCEQWCNT5nmFkNtkTmF21zc5fPYv9vWRGGkZac1A/IMG_3178.jpg",
          "mimeType": "image/jpeg"
        }
      },
      "mintEvent": {
        "txHash": "0xe4b0ab3fdc3cf70725e4e2159424ce9ea9b02902eb9c4a85d0a82d93cab23fd8",
        "logIndex": "104",
        "blockTimestamp": "2022-11-30T09:16:03Z"
      }
    },
    {
      "contractAddress": "0xabd0a793b75a49342d57173ce1c1b75bffb428b4",
      "tokenId": "1",
      "type": "TOKEN_TYPE_ERC721",
      "metadata": {
        "metadataUri": {
          "uri": "ipfs://QmeWahpdZfzD13gVJaTDwsoZqCFozub3EhdiKXtvHwRsnw/1.json",
          "mimeType": ""
        },
        "name": "",
        "description": "",
        "image": null
      },
      "mintEvent": {
        "txHash": "0xc2e025ad04cf0593a1eb2151657cd427eb824d269621e87dce9ac8d75fc74ca5",
        "logIndex": "98",
        "blockTimestamp": "2022-11-30T09:44:05Z"
      }
    },
    {
      "contractAddress": "0xabd0a793b75a49342d57173ce1c1b75bffb428b4",
      "tokenId": "2",
      "type": "TOKEN_TYPE_ERC721",
      "metadata": {
        "metadataUri": {
          "uri": "ipfs://QmeWahpdZfzD13gVJaTDwsoZqCFozub3EhdiKXtvHwRsnw/2.json",
          "mimeType": ""
        },
        "name": "",
        "description": "",
        "image": null
      },
      "mintEvent": {
        "txHash": "0xd51b7e1fb0c1b021f86b2e61c75f82fd9159a64ce50f3e131422e5facbd43d72",
        "logIndex": "359",
        "blockTimestamp": "2022-11-30T10:04:13Z"
      }
    }
  ]
}
                                        

NFTs by Wallet

GET /analytics/{chainID}/nfts-by-wallet-address/{walletAddress}/

Get list of the NFTs owned by the specified wallet.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
chainID string Path Parameter Required The chainID of the blockchain you want to query. 1 for Ethereum, 137 for Polygon.
walletAddress string Path Parameter Required Filter by wallet address (or ENS name).

Response

{
  "tokens": [
    {
      "contractAddress": "0x1ef8f94ad97dc4d7e64dd6b60b67d9944312508b",
      "tokenId": "1",
      "metadata": {
        "metadataUri": {
          "uri": "ipfs://QmSeRtXqthCBnTMKF9sW4jLeYmrWWuZUZESM7z4Qf9wYi3/1.json",
          "mimeType": ""
        },
        "name": "",
        "description": "",
        "image": null
      },
      "quantity": "1",
      "spam": false
    },
    {
      "contractAddress": "0x1ef8f94ad97dc4d7e64dd6b60b67d9944312508b",
      "tokenId": "2",
      "metadata": {
        "metadataUri": {
          "uri": "ipfs://QmSeRtXqthCBnTMKF9sW4jLeYmrWWuZUZESM7z4Qf9wYi3/2.json",
          "mimeType": "application/json"
        },
        "name": "Niki Tis Samothrakis",
        "description": "Image From Louvre Museum",
        "image": {
          "uri": "https://polygon.cdn-proxy.mnemonichq.com/0x1ef8f94ad97dc4d7e64dd6b60b67d9944312508b/2",
          "uriOriginal": "ipfs://QmSLiToCEQWCNT5nmFkNtkTmF21zc5fPYv9vWRGGkZac1A/IMG_3178.jpg",
          "mimeType": "image/jpeg"
        }
      },
      "quantity": "1",
      "spam": false
    },
    {
      "contractAddress": "0xabd0a793b75a49342d57173ce1c1b75bffb428b4",
      "tokenId": "2",
      "metadata": {
        "metadataUri": {
          "uri": "ipfs://QmeWahpdZfzD13gVJaTDwsoZqCFozub3EhdiKXtvHwRsnw/2.json",
          "mimeType": ""
        },
        "name": "",
        "description": "",
        "image": null
      },
      "quantity": "1",
      "spam": false
    }
  ]
}
                                        

NFT Transfers

GET /analytics/{chainID}/nft-tranfers/{contractAddress}/{tokenId}/

Get list of the NFT transfers by various criteria.

Request

Parameter Type Position # Description
Authorization string Header Required Should be of the form: 'Token YOUR_API_KEY'.
chainID string Path Parameter Required The chainID of the blockchain you want to query. 1 for Ethereum, 137 for Polygon.
contractAddress string Path Parameter Required Filter by NFT contract address.
tokenId string Path Parameter Required Filter by NFT Token ID.

Response

{
  "nftTransfers": [
    {
      "blockchainEvent": {
        "txHash": "0xc2e025ad04cf0593a1eb2151657cd427eb824d269621e87dce9ac8d75fc74ca5",
        "logIndex": "98",
        "seqIndex": "0",
        "blockNumber": "36248220",
        "blockTimestamp": "2022-11-30T09:44:05Z"
      },
      "contractAddress": "0xabd0a793b75a49342d57173ce1c1b75bffb428b4",
      "tokenId": "1",
      "tokenType": "TOKEN_TYPE_ERC721",
      "transferType": "TRANSFER_TYPE_MINT",
      "quantity": "1",
      "sender": {
        "address": "0x0000000000000000000000000000000000000000",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalMatic": "0",
        "totalUsd": "0",
        "maticTransfersTotal": "0",
        "erc20TransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_NO_PAYMENTS",
        "erc20Totals": []
      },
      "recipient": {
        "address": "0xc4b4d434d4b610a93cf1a3a228b6c3a25ff250ec",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalMatic": "0",
        "totalUsd": "0",
        "maticTransfersTotal": "0",
        "erc20TransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_RECIPIENT_NO_PAYMENT",
        "erc20Totals": []
      },
      "labels": [
        "LABEL_MINT"
      ]
    },
    {
      "blockchainEvent": {
        "txHash": "0x4cace21da0041dac05c7dc2d1a11afb7064c9ee9b340c57a5ae0dc5d6dc4cf75",
        "logIndex": "226",
        "seqIndex": "0",
        "blockNumber": "36248660",
        "blockTimestamp": "2022-11-30T09:59:13Z"
      },
      "contractAddress": "0xabd0a793b75a49342d57173ce1c1b75bffb428b4",
      "tokenId": "1",
      "tokenType": "TOKEN_TYPE_ERC721",
      "transferType": "TRANSFER_TYPE_REGULAR",
      "quantity": "1",
      "sender": {
        "address": "0xc4b4d434d4b610a93cf1a3a228b6c3a25ff250ec",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalMatic": "0.0875",
        "totalUsd": "0.0761382449821196525",
        "maticTransfersTotal": "0.0875",
        "erc20TransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
        "erc20Totals": []
      },
      "recipient": {
        "address": "0xf0cd764ac9d6648c33a44be69cc23137bdfa6115",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalMatic": "0.1",
        "totalUsd": "0.08701513712242246",
        "maticTransfersTotal": "0.1",
        "erc20TransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
        "erc20Totals": []
      },
      "labels": [
        "LABEL_SALE",
        "LABEL_MARKETPLACE_OPENSEA"
      ]
    }
  ]
}