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 fileURL
or 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: https://eoo9pxiv5yxg0za.m.pipedream.net
Cost: 0.2 NUM + Gas (~0.004 NUM per transaction) per API call. No Gas is required if paid with Credits.
Method: POST
Description:
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
Authentication:
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"
Header:
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" \
"https://eoo9pxiv5yxg0za.m.pipedream.net"
Example 2 (upload via URL)
curl -X POST "https://eoo9pxiv5yxg0za.m.pipedream.net" \
-H "Content-Type: application/json" \
-H "Authorization: token YOUR_CAPTURE_TOKEN" \
-d '{
"fileURL": YOUR_FILE_URL,
"threshold": 0.12
}'
Response:
{
"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:
{% tabs %} {% tab title="Python" %}
import requests
url = "https://eoo9pxiv5yxg0za.m.pipedream.net"
headers = {
"Content-Type": "application/json",
"Authorization": "token YOUR_CAPTURE_TOKEN"
}
data = {
"fileURL": FILE_URL,
"sampleCount": 30
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
response_json = response.json()
print(response_json)
else:
print("Request failed with status code:", response.status_code)
{% tab title="Javascript" %}
const request = require("request");
const url = "https://eoo9pxiv5yxg0za.m.pipedream.net";
const headers = {
"Content-Type": "application/json",
"Authorization": "token YOUR_CAPTURE_TOKEN"
};
const data = {
"fileURL": FILE_URL
};
request.post(
{
url,
headers,
json: data
},
function(error, response, body) {
console.log(body);
}
);