Asset Search

This API offers a seamless solution for discovering and retrieving digital assets that have been registered within the Web3 ecosystem. Upon uploading a file or fileURLor using input nid the API will return the exact Nid of the requested asset if it has been previously minted as an NFT or registered on the Numbers network. Additionally, a list of similar assets will be provided for further exploration. Authorization to access the API requires a valid Capture Token. If you do not already have a Capture Token yet, please follow the instruction provided to create one.

The Numbers API is a pay-as-you-go system, which means you only pay for the API calls you make. This is a cost-effective way to use the API and it allows you to control your expenses. Make sure to top up and ensure sufficient funds in your wallet in the form of Credits or NUM to cover the cost. Payment for services is processed using NUM; if you want to know how much it costs in USD, you can check CoinGecko or CoinMarketCap.

API Endpoint:

Cost: 0.2 NUM + Gas (~0.004 NUM per transaction) per API call. No Gas is required if paid with Credits.

Method: POST

This API finds digital assets registered on the Web3 network, by returning the exact Nid along with a list of similar assets if the requested file has been previously minted as NFT or registered on the Numbers network

This API requires a valid token for Authorization. The token should be passed in the headers of the request using the following format: "Authorization: token YOUR_CAPTURE_TOKEN"

Authorization: token $YOUR_CAPTURE_TOKEN (required)
Content-Type: application/json

Request Body (required):
fileURL (string) or 
file (object) or
nid (string)
One of the three above must be provided

Request Body (optional):
threshold (float): distance threshold applied to filter similar results. The smaller the threshold, the tighter the restriction is. (No threshold is applied by default.)
sampleCount (int): how many similar results to be returned (default: 10) 
isAssetTree (boolen): set this to true if the input is an AssetTree file. The API will look for the assetCid in the AssetTree for you.

Example 1 (direct file upload):
curl -F "file=@/tmp/MYFILE.png" \
     -H "Authorization: token YOUR_CAPTURE_TOKEN" \

Example 2 (upload via URL)
curl -X POST "" \
     -H "Content-Type: application/json" \
     -H "Authorization: token YOUR_CAPTURE_TOKEN" \
     -d '{
         "fileURL": YOUR_FILE_URL,
         "threshold": 0.12

    "preciseSearch": nid, // Nid of the precise search result if found
    "inputFileMimetypr": mimetype, // Minetype of the input file
    "similarSearch": {
        "nids": list_of_similar_asset_nids, 
        "distance": list_of_asset_distanct
    "orderID": string // ID of this order

200: File has been pinned successfully
400: Bad request
401: Unauthorized
403: Forbidden
500: Internal Server Error

In this example, you would replace YOUR_CAPTURE_TOKEN with your actual Capture token and /tmp/MYFILE.png with the actual file on your filesystem.

If the preciseSearch shows empty, meaning the asset has not yet been registered before. In general, a distance less than 0.12 means that AI model identified the images are really similar. If the distance between the result nid and your original asset is less than 0.12, it is very likely they are the same assets but one being modified slightly.

More examples can be found below:

import requests

url = ""
headers = {
    "Content-Type": "application/json",
    "Authorization": "token YOUR_CAPTURE_TOKEN"
data = {
  "fileURL": FILE_URL,
  "sampleCount": 30

response =, headers=headers, json=data)

if response.status_code == 200:
    response_json = response.json()
    print("Request failed with status code:", response.status_code)

Last updated