Theft Detection

The Theft Detection API is a powerful tool that helps you safeguard your digital assets by detecting any unauthorized use or duplication of your content. With this API, you can find similar assets and cross-network NFTs that use your asset, giving you the peace of mind that your creative work is protected.

Please note that the Theft Detection API is designed to assist you in searching for the use of your assets in NFTs. Its capabilities are limited to the supported networks and file formats. It is possible that theft may occur on a network or with a file format that is not yet supported by the API. While the Theft Detection API is designed to assist you in protecting your assets, it is not a guarantee of security. The API is provided as a convenience and its performance may vary.

The API takes the Nid of the asset as input and returns the cross-network NFT records for that asset. If you are unaware of the Nid of the file, the Asset Search API can be used to find similar assets, or use the [IPFS] Get Nid endpoint to retrieve the Nid of your asset.

Capture Token is required for API authorization. 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: 1 NUM + Gas (~0.004 NUM per transaction) per API call. No Gas is required if paid with Credits.

Method: POST

This API finds similar assets and cross-network NFTs that use the specified file.

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): Either the URL of the file to be searched or the file object itself must be specified. If the fileURL is used, it should be passed as a string. If the file object is used, it should be the direct upload from the system.

Request Body (optional):
threshold (float): distance threshold applied to filter similar results (default: 0.12)
excludedAssets (list): list of Nids of assets to be excluded from the search results
excludedContracts (list): list of contract addresses to be excluded from the search results
onlyNewNFT (bool): use this to search only NFTs minted in the last 24 hours.

Example 1 (direct file upload):
curl -F "file=@/tmp/MYFILE.png" \
     -F "excludedContracts=["0x65f5e2f61d45a5f1d5313269c040fc0c910e7a44"]" \
     -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,
         "excludedAssets": ["bafybeid32me6xuuamahne2vs4ks57y3wohag4dt65iwhfzpqtpw7y6f75i"],
         "excludedContracts": ["0xb90c5b95d7c29d1448ec079dffedc5905fb77711"]

    "results": object // JSON objects for nft records and similar assets found
    "searchNid": string // Nid of the input asset
    "inputFileMimetype": string // Mimetype of the file to be searched
    "orderID": string // ID of this order

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

A detailed explanation of the Nid can be found on the Numbers ID (Nid) page. In this example, you would replace YOUR_CAPTURE_TOKEN with your actual Capture token and NID_TO_SEARCH with the Nid of the metadata you want to cat. More examples can be found below:

Read nftRecords



The ID of the NFT blockchain


The contract address of the NFT token


The ID of the NFT token


A list of assets associated with this token


The primary marketplace of this token


The current_owner of this NFT token


The spec of the NFT metadata


The minter of the NFT token


The earliest of initial minting time of the NFT or the initial commit time of the digital media file in the Numbers Protocol


The metadata of this NFT token


The animationURL associatedwith this token


The original URL of the image field of the NFT token


The token URI of the NFT token

Support Status

Please visit the Support Status of Verify Engine to check the currently supported file formats and blockchain networks.

Sample search results

  "results": {
    "bafybeiccqdbzpxlfmi4kwn7idehdfjayfwqrvbaehq7ilgyf5gelwdh6ru": [
        "chain_id": 4,
        "contract": "0xa6b9ff1a999f06cca06e548d5bd702d6f62841ab",
        "asset_cids": [],
        "primary_marketplace": null,
        "current_owner": "0xc262c18061226fc7286e8cdab297ae0a92a2267c",
        "nft_spec": "erc721",
        "creator": "0xc262c18061226Fc7286e8cdab297aE0A92a2267c",
        "created_at": "2022-06-23T04:08:31",
        "metadata": {
          "name": "",
          "description": "",
          "image": "",
          "asset_file": "",
          "supporting_file": "",
          "parent_token": null,
          "asset_id": "bafybeiccqdbzpxlfmi4kwn7idehdfjayfwqrvbaehq7ilgyf5gelwdh6ru",
          "creator": "0xc262c18061226Fc7286e8cdab297aE0A92a2267c",
          "marketplace": "",
          "animation_url": ""
  "orderID": "b3b246a7-6266-4bd7-b8c4-c241b47cc6e5"

Last updated