Back to top

API Documentation

From Global Ledger team

Welcome

Welcome, developers, to the API documentation for Global Ledger API. This documentation serves as an authoritative guide for harnessing the power of our universal endpoints across multiple blockchains. Within this documentation, you will find well-detailed information regarding each of our endpoints. We provide a transaction or address scoring in both native coins and tokens, as well as balance retrievals in the same denominations. We also furnish instructions for webhook integration, inclusive of steps on creating webhooks, adding an address to it, and managing it efficiently (namely updating and deletion operations). To aid understanding, we have provided examples reflecting both successful responses across multiple chains and negative responses alike for reference. We welcome your feedback and encourage you to reach out through our support channels if you have questions or suggestions about this documentation or our API services.

Happy coding!

Supported Blockchains

  • Bitcoin (BTC)

  • Litecoin (LTC)

  • Bitcoin Satoshi Vision (BSV)

  • Ethereum (ETH)

  • Tron (TRX)

  • Binance Smart Chain (BNB)

  • Avalanche (AVAX)

The blockchain is indicated in the subdomain as a ticker https://{ticker}.glprotocol.com/api/{endpoint}/{param}

Ticker

Ticker is a subdomain of the corresponding API.

  • blockchain tickers: btc|ltc|bsv|eth|tron|bnb|avax

  • system ticker: access.common|common

Response wrapper

Each request to API is encased within a standardized wrapper, as per the documentation guidelines.

  • Wrapper
    • success: (boolean) - true if request was successfully processed
    • data: {any} (any) - response payload
    • response.errors: {any} (any) - Error message. Only when success: false

Authorization

Use the x-api-key header with the value {API_KEY} for authentication.

You can obtain your {API_KEY} by visiting https://vision.glprotocol.com/profile.

Authentication Endpoint

Authentication Endpoint
POST/api-users/users/login

Authenticate users and obtain an access token for accessing other protected endpoints.

  • ticker: access.common - The subdomain to system services

Example URI

POST https://{ticker}.glprotocol.com/api-users/users/login
Request
HideShow
Headers
Content-Type: application/json
Body
{
  "email": "user@example.com",
  "password": "your_password"
}
Response  201
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "{User_ID}",
  "token": "{JWT_Bearer_Token}",
  "lang": "en",
  "refreshToken": "{JWT_Bearer_Refresh_Token}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The user's ID"
    },
    "token": {
      "type": "string",
      "description": "The bearer token."
    },
    "lang": {
      "type": "string",
      "description": "The language preference of the user."
    },
    "refreshToken": {
      "type": "string",
      "description": "The refresh token."
    }
  }
}
Response  201
HideShow
Headers
Content-Type: application/json
Body
{
  "messageType": "BadRequestException",
  "message": "Invalid username or password!",
  "stack": "BadRequestException: INVALID_USERNAME\\n    at {STACK_TRACE}",
  "response": {
    "statusCode": 400,
    "message": "INVALID_USERNAME",
    "error": "Bad Request"
  },
  "status": 400,
  "name": "BadRequestException"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string",
      "description": "Error Message Type"
    },
    "message": {
      "type": "string",
      "description": "Error Message"
    },
    "stack": {
      "type": "string",
      "description": "Error Stack Trace"
    },
    "response": {
      "type": "object",
      "properties": {
        "statusCode": {
          "type": "number"
        },
        "message": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "status": {
      "type": "number"
    },
    "name": {
      "type": "string"
    }
  }
}
Response  400
HideShow
Headers
Content-Type: application/json
Body
{
  "statusCode": 400,
  "message": "INCORRECT_INPUT_DATA"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number",
      "description": "HTTP status code"
    },
    "message": {
      "type": "string",
      "description": "Error message for incorrect input data"
    }
  }
}

Reset Token Endpoint

Reset Token Endpoint
GET/api-users/users/reset-token/{refreshToken}

Some Text

This endpoint is used to reset the user’s token using a refresh token.

  • ticker: access.common - The subdomain to system services

Example URI

GET https://{ticker}.glprotocol.com/api-users/users/reset-token/{JWT_Bearer_Refresh_Token}
URI Parameters
HideShow
refreshToken
string (required) Example: {JWT_Bearer_Refresh_Token}

The refresh token

Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": "{User_ID}",
  "token": "{JWT_Bearer_Token}",
  "lang": "en",
  "refreshToken": "{JWT_Bearer_Refresh_Token}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The user's ID"
    },
    "token": {
      "type": "string",
      "description": "The new bearer token."
    },
    "lang": {
      "type": "string",
      "description": "The language preference of the user."
    },
    "refreshToken": {
      "type": "string",
      "description": "The new refresh token."
    }
  }
}
Response  200
HideShow

Invalid refresh token specified

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "message": "user.error:1C80006B:Provider routines::wrong final block length",
  "stack": "Error: error:1C80006B:Provider routines::wrong final block length\\n    at {STACK_TRACE}",
  "library": "Provider routines",
  "reason": "wrong final block length",
  "code": "ERR_OSSL_WRONG_FINAL_BLOCK_LENGTH"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "stack": {
      "type": "string"
    },
    "library": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    },
    "code": {
      "type": "string"
    }
  }
}
Response  400
HideShow

Refresh token is missing

Headers
Content-Type: application/json
Body
{
  "statusCode": 400,
  "message": "INCORRECT_INPUT_DATA"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number"
    },
    "message": {
      "type": "string"
    }
  }
}

Entities

Display entities within the cryptocurrency ecosystem. It contains data points and details about exchanges, wallet providers, DeFi platforms, and other related entities. To view an entity, you need to know its ID. Therefore, you should first search for the ID by name, and then request information on the specific entity.

By Name

By Name
GET/api-labeling/entity?name={name}&$project[name]=1&$project[type]=1&$project[id]=1

Retrieve list of entities filtered by name

  • ticker: common - The subdomain to system services

Example URI

GET https://{ticker}.glprotocol.com/api-labeling/entity?name=.*bybit.*&%24project%5Bname%5D=1&%24project%5Btype%5D=1&%24project%5Bid%5D=1
URI Parameters
HideShow
name
string (required) Example: .*bybit.*

Regex filter for entity name

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "items": [
    {
      "type": {
        "_id": "651d8a44e246cbd062b1f00e",
        "name": "Exchange",
        "score": 50
      },
      "id": "65ab88e58bc257cd15267c86",
      "name": "Bybit",
      "owner": "Bybit"
    },
    {
      "type": {
        "_id": "651d8a44e246cbd062b1f00e",
        "name": "Exchange",
        "score": 50
      },
      "id": "66f829885c9afc2c9a8760b3",
      "name": "Bybit Cold Wallet",
      "owner": "Bybit Cold Wallet"
    },
    {
      "type": {
        "_id": "652672e6b8ac18aaf5c52dc8",
        "name": "Cybercrime / Hack",
        "score": 100
      },
      "id": "67ba69e006c7efc512c20b9d",
      "name": "Bybit Hack Feb 2025",
      "owner": "Bybit Hack Feb 2025"
    }
  ],
  "count": 23
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "code": 401,
  "success": false,
  "path": "/api-labeling/entity?&$project[name]=1&$project[type]=1&$project[id]=1&name=.%2Abybit.%2A",
  "method": "GET",
  "timestamp": "4/6/2026, 10:55:21 PM",
  "data": {
    "messageType": "error",
    "message": "User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

By ID

By ID
GET/api-labeling/entity?ids[]={id}

Retrieve list of entities filtered by id

  • ticker: common - The subdomain to system services

Example URI

GET https://{ticker}.glprotocol.com/api-labeling/entity?ids[]=65a8e2c98bc257cd15e58c41
URI Parameters
HideShow
id
string (required) Example: 65a8e2c98bc257cd15e58c41

entity ID

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "items": [
    {
      "type": {
        "_id": "61766e49820e13d2b95ded4e",
        "name": "Low-risk exchange",
        "score": 30
      },
      "tags": [],
      "data": {
        "legalName": "",
        "isActive": true,
        "KYCStatus": "required",
        "isFiatCurrencyTrading": true,
        "isPrivacyCoinsSupported": true,
        "website": [
          "https://www.binance.com"
        ],
        "parentCompany": "",
        "domicileCountry": null,
        "status": "active",
        "description": "<p>Binance is the world's largest crypto exchange...</p>",
        "officeAddress": "",
        "screenshots": [
          {
            "name": "65a8e2c98bc257cd15e58c41_GL_screen_1769117493288.png",
            "image": "https://common.glprotocol.com/api-files/files/open/-65a8e2c98bc257cd15e58c41-GL-screen-1769117493288-5fb10795-f5f8-4e06-a797-c1112b564b2d.png"
          }
        ],
        "providedServices": [
          "67ae16d806c7efc5129a1d9e"
        ],
        "primaryOperationalRegions": [
          "AR",
          "UA",
          "IN",
          "TR"
        ],
        "restrictedJurisdictions": [
          "CA",
          "MY",
          "NL",
          "US"
        ],
        "languages": [
          "English",
          "Arabic"
        ],
        "socialNetworkLinks": [
          "https://twitter.com/binance"
        ],
        "regulatoryCompliance": [
          {
            "country": "FR",
            "localAuthority": "Autorité des Marchés Financiers (AMF)",
            "licenseNumber": "E2022-037",
            "licenseLink": "https://protectepargne.amf-france.org/acteurs-listes-blanches/psan/binance-france-sas",
            "registeredName": "BINANCE France SAS",
            "dates": {
              "from": 1651536000000
            },
            "status": null,
            "licenseType": "Crypto-Asset Service Provider",
            "address": "10 Avenue Franklin D. Roosevelt, 75008 Paris, France "
          }
        ],
        "banks": [],
        "paymentSystems": [],
        "contacts": [
          {
            "contactName": "Changpeng Zhao",
            "position": "Co-Founder & Former Chief Executive Officer (CEO)",
            "emailAddress": "",
            "contactLinks": [
              "https://www.linkedin.com/in/cpzhao/"
            ]
          }
        ],
        "contactsDepartments": [
          {
            "departmentName": "Customer Support",
            "departmentLinks": [
              "https://www.binance.com/en/support"
            ]
          }
        ],
        "countries": [
          "France",
          "Italy"
        ]
      },
      "alias": [
        {
          "value": "binance"
        }
      ],
      "logo": "https://common.glprotocol.com/api-files/files/open/250x250_Binance_20Pool.png",
      "updatedAt": "2026-03-31T06:11:45.817Z",
      "creatorId": "6446322993556887abd82feb",
      "id": "65a8e2c98bc257cd15e58c41",
      "name": "Binance",
      "owner": "Binance"
    }
  ],
  "count": 1
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "code": 401,
  "success": false,
  "path": "/api-labeling/entity?ids[]=65a8e2c98bc257cd15e58c41",
  "method": "GET",
  "timestamp": "4/6/2026, 10:55:10 PM",
  "data": {
    "messageType": "error",
    "message": "User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

Get Transaction Risk Score

By Native Coin

By Native Coin
GET/api/report/tx_hash/{tx_hash}

Calculate and retrieve the risk score of a specific transaction by native coin (btc, eth, ltc, trx, bsv and etc.)

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/report/tx_hash/76a914db4d...88ac
URI Parameters
HideShow
tx_hash
string (required) Example: 76a914db4d...88ac

The transaction hash

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalAmount": 251000000000000000,
  "progress": 100,
  "depth": 3,
  "directTxCount": 10,
  "totalFunds": 75,
  "sources": [
    {
      "directTx": "0xbd54a...750bbec0407dc7dc04",
      "tx_hash": "0x0fd34...dc61b8abc95021d17b",
      "address": "0xca258d51a825c82d16ce54dc61b8abc95021d17b",
      "depth": 3,
      "funds": {
        "name": "{TAG_NAME}",
        "score": 50,
        "default": true
      },
      "amount": 31643005583457000,
      "share": 10,
      "owner": "OWNER_NAME",
      "listType": "Known sources",
      "directStamp": 1697553611,
      "timestamp": 1697525855
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalAmount": {
      "type": "number",
      "description": "Amount of incoming transaction funds for calculation"
    },
    "progress": {
      "type": "number",
      "description": "Internal additional field"
    },
    "depth": {
      "type": "number",
      "description": "Maximum value of the depth of the found source"
    },
    "directTxCount": {
      "type": "number",
      "description": "Direct transaction count"
    },
    "totalFunds": {
      "type": "number",
      "description": "Calculated RISK SCORE value using the user’s selected formula (default or sensitive)"
    },
    "sources": {
      "type": "array",
      "description": "Array with found sources"
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Transaction Not Found. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "meta": {
    "spamAmount": 0,
    "spamCount": 0,
    "cashbackCount": 0
  },
  "status": 404,
  "code": 404,
  "success": false,
  "path": "/api/report/tx_hash/0000",
  "method": "GET",
  "timestamp": "1/12/2026, 12:58:21 PM",
  "data": {
    "messageType": "error",
    "message": "ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "spamAmount": {
          "type": "number"
        },
        "spamCount": {
          "type": "number"
        },
        "cashbackCount": {
          "type": "number"
        }
      }
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

By Token

By Token
GET/api/report/tx_hash/{tx_hash}?token={token}

Calculate and retrieve the risk score of a specific transaction by specific token of the smart contract.

  • ticker: eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/report/tx_hash/76a914db4d...88ac?token=0xdac17f958d2ee523a2206206994597c13d831ec7
URI Parameters
HideShow
tx_hash
string (required) Example: 76a914db4d...88ac

The transaction hash

token
string (optional) Example: 0xdac17f958d2ee523a2206206994597c13d831ec7

The blockchain token contract address. supported - unified search of all supported tokens, - search by native coin, {token_contract_address} - search by specific token.

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalAmount": 251000000000000000,
  "progress": 100,
  "depth": 3,
  "directTxCount": 10,
  "totalFunds": 75,
  "sources": [
    {
      "directTx": "0xbd54a...750bbec0407dc7dc04",
      "tx_hash": "0x0fd34...dc61b8abc95021d17b",
      "address": "0xca258d51a825c82d16ce54dc61b8abc95021d17b",
      "depth": 3,
      "funds": {
        "name": "{TAG_NAME}",
        "score": 50,
        "default": true
      },
      "amount": 31643005583457000,
      "share": 10,
      "owner": "OWNER_NAME",
      "listType": "Known sources",
      "directStamp": 1697553611,
      "timestamp": 1697525855,
      "issuer": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "currency": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalAmount": {
      "type": "number",
      "description": "Amount of incoming transaction funds for calculation"
    },
    "progress": {
      "type": "number",
      "description": "Internal additional field"
    },
    "depth": {
      "type": "number",
      "description": "Maximum value of the depth of the found source"
    },
    "directTxCount": {
      "type": "number",
      "description": "Direct transaction count"
    },
    "totalFunds": {
      "type": "number",
      "description": "Calculated RISK SCORE value using the user’s selected formula (default or sensitive)"
    },
    "sources": {
      "type": "array",
      "description": "Array with found sources"
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Transaction Not Found. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "meta": {
    "spamAmount": 0,
    "spamCount": 0,
    "cashbackCount": 0
  },
  "status": 404,
  "code": 404,
  "success": false,
  "path": "/api/report/tx_hash/0000?token=0xdac17f958d2ee523a2206206994597c13d831ec7",
  "method": "GET",
  "timestamp": "1/12/2026, 1:08:11 PM",
  "data": {
    "messageType": "error",
    "message": "ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "spamAmount": {
          "type": "number"
        },
        "spamCount": {
          "type": "number"
        },
        "cashbackCount": {
          "type": "number"
        }
      }
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

By direction Source of Funds

By direction Source of Funds
GET/api/report/tx_hash/{tx_hash}?direction={direction}

Calculate and retrieve the risk score by Source of Funds of a specific transaction.

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/report/tx_hash/76a914db4d...88ac?direction=0
URI Parameters
HideShow
tx_hash
string (required) Example: 76a914db4d...88ac

The transaction hash

direction
number (optional) Example: 0

The transaction search direction. 0 - is the Source of Funds, 1 - is the Use of Funds, 2 - common, Source of Funds + Use of Funds (default value if not specified).

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalAmount": 251000000000000000,
  "progress": 100,
  "depth": 3,
  "directTxCount": 10,
  "totalFunds": 75,
  "sources": [
    {
      "directTx": "0xbd54a...750bbec0407dc7dc04",
      "tx_hash": "0x0fd34...dc61b8abc95021d17b",
      "address": "0xca258d51a825c82d16ce54dc61b8abc95021d17b",
      "depth": 3,
      "funds": {
        "name": "{TAG_NAME}",
        "score": 50,
        "default": true
      },
      "amount": 31643005583457000,
      "share": 10,
      "owner": "OWNER_NAME",
      "listType": "Known sources",
      "directStamp": 1697553611,
      "timestamp": 1697525855,
      "issuer": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "currency": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalAmount": {
      "type": "number",
      "description": "Amount of incoming transaction funds for calculation"
    },
    "progress": {
      "type": "number",
      "description": "Internal additional field"
    },
    "depth": {
      "type": "number",
      "description": "Maximum value of the depth of the found source"
    },
    "directTxCount": {
      "type": "number",
      "description": "Direct transaction count"
    },
    "totalFunds": {
      "type": "number",
      "description": "Calculated RISK SCORE value using the user’s selected formula (default or sensitive)"
    },
    "sources": {
      "type": "array",
      "description": "Array with found sources"
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Transaction Not Found. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "meta": {
    "spamAmount": 0,
    "spamCount": 0,
    "cashbackCount": 0
  },
  "status": 404,
  "code": 404,
  "success": false,
  "path": "/api/report/tx_hash/0000?direction=1",
  "method": "GET",
  "timestamp": "1/12/2026, 1:13:25 PM",
  "data": {
    "messageType": "error",
    "message": "ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "spamAmount": {
          "type": "number"
        },
        "spamCount": {
          "type": "number"
        },
        "cashbackCount": {
          "type": "number"
        }
      }
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

Only Risk Score

Only Risk Score
GET/api/report/tx_hash/{tx_hash}?$project[totalFunds]={project_totalFunds}

Calculate and retrieve only the risk score of a specific transaction.

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/report/tx_hash/76a914db4d...88ac?%24project%5BtotalFunds%5D=1
URI Parameters
HideShow
tx_hash
string (required) Example: 76a914db4d...88ac

The transaction hash

project_totalFunds
number (required) Example: 1

A query parameter used to pick totalFunds field (representing the risk score) from the response.

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalFunds": 75
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalFunds": {
      "type": "number",
      "description": "Calculated RISK SCORE value using the user’s selected formula (default or sensitive)"
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Transaction Not Found. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "meta": {
    "spamAmount": 0,
    "spamCount": 0,
    "cashbackCount": 0
  },
  "status": 404,
  "code": 404,
  "success": false,
  "path": "/api/report/tx_hash/0000?$project[totalFunds]=1",
  "method": "GET",
  "timestamp": "1/12/2026, 1:14:44 PM",
  "data": {
    "messageType": "error",
    "message": "ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "spamAmount": {
          "type": "number"
        },
        "spamCount": {
          "type": "number"
        },
        "cashbackCount": {
          "type": "number"
        }
      }
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  400
HideShow

Parameter $project[totalFunds]= must be equal to one of the allowed values 0|1. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "statusCode": 400,
    "message": "must be equal to one of the allowed values",
    "schema": [
      "[0",
      "1]"
    ]
  },
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "statusCode": {
          "type": "number"
        },
        "message": {
          "type": "string"
        },
        "schema": {
          "type": "array"
        }
      }
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

With Enabled Alerts

With Enabled Alerts
GET/api/report/tx_hash/{tx_hash}?alertEnable=true

Calculate and retrieve the risk score of a specific transaction with enabled alerts (btc, eth, ltc, trx, bsv and etc.)

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/report/tx_hash/76a914db4d...88ac?alertEnable=true
URI Parameters
HideShow
tx_hash
string (required) Example: 76a914db4d...88ac

The transaction hash

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalAmount": 251000000000000000,
  "progress": 100,
  "depth": 3,
  "directTxCount": 10,
  "totalFunds": 75,
  "sources": [
    {
      "directTx": "0xbd54a...750bbec0407dc7dc04",
      "tx_hash": "0x0fd34...dc61b8abc95021d17b",
      "address": "0xca258d51a825c82d16ce54dc61b8abc95021d17b",
      "depth": 3,
      "funds": {
        "name": "{TAG_NAME}",
        "score": 50,
        "default": true
      },
      "amount": 31643005583457000,
      "share": 10,
      "owner": "OWNER_NAME",
      "listType": "Known sources",
      "directStamp": 1697553611,
      "timestamp": 1697525855
    }
  ],
  "alerts": [
    {
      "address": "``",
      "userId": "65bc4bc3a2...fa614dbd3a",
      "read": false,
      "archive": false,
      "amount": 14021.175131,
      "triggeredAmount": 7027.097484,
      "depth": 1,
      "priority": 50,
      "score": 72,
      "fiat": "USD",
      "weight": 0.401347,
      "labels": [
        "ransomware"
      ],
      "updatedAt": "1970-01-19T14:33:38.923Z",
      "alertId": "6913bbc3d3cce32b43ddae35",
      "coin": "btc",
      "directTx": "e71839ca539f6f86...eeb8e332a7e3dc4d3c371d1d04",
      "data": [
        {
          "share": 1,
          "directStamp": 1607618923,
          "amountCur": 7027.097484,
          "depth": 1,
          "label": "Ransomware",
          "entity": "66f83b9e5c9afc2c9a87a988",
          "owner": "File-Locker",
          "address": "1BoatSLRHtKNngkdXEeobR76b53LETtpyT",
          "tx_hash": "e71839ca539f6f8652e36...eb8e332a7e3dc4d3c371d1d04"
        }
      ],
      "results": [
        true
      ],
      "title": "name",
      "logical": "$anyOf",
      "riskReport": true,
      "addressesCount": [],
      "addresses": []
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalAmount": {
      "type": "number",
      "description": "Amount of incoming transaction funds for calculation"
    },
    "progress": {
      "type": "number",
      "description": "Internal additional field"
    },
    "depth": {
      "type": "number",
      "description": "Maximum value of the depth of the found source"
    },
    "directTxCount": {
      "type": "number",
      "description": "Direct transaction count"
    },
    "totalFunds": {
      "type": "number",
      "description": "Calculated RISK SCORE value using the user’s selected formula (default or sensitive)"
    },
    "sources": {
      "type": "array",
      "description": "Array with found sources"
    },
    "alerts": {
      "type": "array"
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Transaction Not Found. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "meta": {
    "spamAmount": 0,
    "spamCount": 0,
    "cashbackCount": 0
  },
  "status": 404,
  "code": 404,
  "success": false,
  "path": "/api/report/tx_hash/0000?alertEnable=true",
  "method": "GET",
  "timestamp": "1/12/2026, 1:15:33 PM",
  "data": {
    "messageType": "error",
    "message": "ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "spamAmount": {
          "type": "number"
        },
        "spamCount": {
          "type": "number"
        },
        "cashbackCount": {
          "type": "number"
        }
      }
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

Get Address Risk Score

By Native Coin

By Native Coin
GET/api/report/address/{address}

Calculate and retrieve the risk score of a blockchain address based on historical transactions by native coin (btc, eth, ltc, trx, bsv and etc.)

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/report/address/1BoatSLRHtKNngkdXEeobR76b53LETtpyT
URI Parameters
HideShow
address
string (required) Example: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT

The blockchain address

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalAmount": 251000000000000000,
  "progress": 100,
  "depth": 3,
  "directTxCount": 10,
  "totalFunds": 75,
  "sources": [
    {
      "directTx": "0xbd54a...750bbec0407dc7dc04",
      "tx_hash": "0x0fd34...dc61b8abc95021d17b",
      "address": "0xca258d51a825c82d16ce54dc61b8abc95021d17b",
      "depth": 3,
      "funds": {
        "name": "{TAG_NAME}",
        "score": 50,
        "default": true
      },
      "amount": 31643005583457000,
      "share": 10,
      "owner": "OWNER_NAME",
      "listType": "Known sources",
      "directStamp": 1697553611,
      "timestamp": 1697525855
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalAmount": {
      "type": "number",
      "description": "Amount of incoming transaction funds for calculation"
    },
    "progress": {
      "type": "number",
      "description": "Internal additional field"
    },
    "depth": {
      "type": "number",
      "description": "Maximum value of the depth of the found source"
    },
    "directTxCount": {
      "type": "number",
      "description": "Direct transaction count"
    },
    "totalFunds": {
      "type": "number",
      "description": "Calculated RISK SCORE value using the user’s selected formula (default or sensitive)"
    },
    "sources": {
      "type": "array",
      "description": "Array with found sources"
    }
  }
}
Response  400
HideShow

Address is Not Valid. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "errors": [
      {
        "instancePath": "/address",
        "schemaPath": "#/properties/address/$ts",
        "keyword": "required",
        "params": {},
        "message": "must pass \\\"$ts\\\" keyword validation",
        "schema": "AddressId",
        "data": "SomeInvalidAddress"
      }
    ],
    "status": 400
  },
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.Http Exception"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "errors": {
          "type": "array"
        },
        "status": {
          "type": "number"
        }
      }
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Address Not Found. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "meta": {
    "spamAmount": 0,
    "spamCount": 0,
    "cashbackCount": 0,
    "totalFunds": 31
  },
  "totalFunds": 31,
  "status": 404,
  "code": 404,
  "success": false,
  "path": "/api/report/address/bc1qy7gxhxkkdw800000g8j4fnr3qz6v28d36y6xpt",
  "method": "GET",
  "timestamp": "1/12/2026, 1:18:53 PM",
  "data": {
    "messageType": "error",
    "message": "ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "spamAmount": {
          "type": "number"
        },
        "spamCount": {
          "type": "number"
        },
        "cashbackCount": {
          "type": "number"
        },
        "totalFunds": {
          "type": "number"
        }
      }
    },
    "totalFunds": {
      "type": "number"
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

By Tokens

By Tokens
GET/api/report/address/{address}?token={token}

Calculate and retrieve the risk score of a blockchain address by specific token of the smart contract based on historical transactions.

  • ticker: eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/report/address/0xca258d51a825c82d16ce54dc61b8abc95021d17b?token=0xdac17f958d2ee523a2206206994597c13d831ec7
URI Parameters
HideShow
address
string (required) Example: 0xca258d51a825c82d16ce54dc61b8abc95021d17b

The blockchain address

token
string (optional) Example: 0xdac17f958d2ee523a2206206994597c13d831ec7

The blockchain token contract address. supported - unified search of all supported tokens, - search by native coin, {token_contract_address} - search by specific token.

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalAmount": 251000000000000000,
  "progress": 100,
  "depth": 3,
  "directTxCount": 10,
  "totalFunds": 75,
  "sources": [
    {
      "directTx": "0xbd54a...750bbec0407dc7dc04",
      "tx_hash": "0x0fd34...dc61b8abc95021d17b",
      "address": "0xca258d51a825c82d16ce54dc61b8abc95021d17b",
      "depth": 3,
      "funds": {
        "name": "{TAG_NAME}",
        "score": 50,
        "default": true
      },
      "amount": 31643005583457000,
      "share": 10,
      "owner": "OWNER_NAME",
      "listType": "Known sources",
      "directStamp": 1697553611,
      "timestamp": 1697525855,
      "issuer": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "currency": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalAmount": {
      "type": "number",
      "description": "Amount of incoming transaction funds for calculation"
    },
    "progress": {
      "type": "number",
      "description": "Internal additional field"
    },
    "depth": {
      "type": "number",
      "description": "Maximum value of the depth of the found source"
    },
    "directTxCount": {
      "type": "number",
      "description": "Direct transaction count"
    },
    "totalFunds": {
      "type": "number",
      "description": "Calculated RISK SCORE value using the user’s selected formula (default or sensitive)"
    },
    "sources": {
      "type": "array",
      "description": "Array with found sources"
    }
  }
}
Response  400
HideShow

Address is Not Valid. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "errors": [
      {
        "instancePath": "/address",
        "schemaPath": "#/properties/address/$ts",
        "keyword": "required",
        "params": {},
        "message": "must pass \\\"$ts\\\" keyword validation",
        "schema": "AddressId",
        "data": "SomeInvalidAddress"
      }
    ],
    "status": 400
  },
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.Http Exception"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "errors": {
          "type": "array"
        },
        "status": {
          "type": "number"
        }
      }
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  400
HideShow

Contract Address is Not Allowed For Risk Report. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "statusCode": 400,
    "message": "CONTRACTS_NOT_ALLOWED_FOR_RISK_REPORT",
    "error": "Bad Request"
  },
  "success": false,
  "data": {
    "messageType": "error",
    "message": "Risk Report for contracts is not supported. Please enter an externally-owned account address."
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "statusCode": {
          "type": "number"
        },
        "message": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Address Not Found. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "meta": {
    "spamAmount": 0,
    "spamCount": 0,
    "cashbackCount": 0,
    "totalFunds": 31
  },
  "totalFunds": 31,
  "status": 404,
  "code": 404,
  "success": false,
  "path": "/api/report/address/0xca000001a825c82d16ce54dc61b8abc95021d17b?token=0xdac17f958d2ee523a2206206994597c13d831ec7",
  "method": "GET",
  "timestamp": "1/12/2026, 1:20:45 PM",
  "data": {
    "messageType": "error",
    "message": "ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "spamAmount": {
          "type": "number"
        },
        "spamCount": {
          "type": "number"
        },
        "cashbackCount": {
          "type": "number"
        },
        "totalFunds": {
          "type": "number"
        }
      }
    },
    "totalFunds": {
      "type": "number"
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

By direction Use of Funds

By direction Use of Funds
GET/api/report/address/{address}?direction={direction}

Calculate and retrieve the risk score only by Use of funds of a blockchain address based on historical transactions.

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/report/address/1BoatSLRHtKNngkdXEeobR76b53LETtpyT?direction=2
URI Parameters
HideShow
address
string (required) Example: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT

The blockchain address

direction
number (optional) Example: 2

The transaction search direction. 0 - is the Source of Funds, 1 - is the Use of Funds, 2 - common, Source of Funds + Use of Funds (default value if not specified).

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalAmount": 251000000000000000,
  "progress": 100,
  "depth": 3,
  "directTxCount": 10,
  "totalFunds": 75,
  "sources": [
    {
      "directTx": "0xbd54a...750bbec0407dc7dc04",
      "tx_hash": "0x0fd34...dc61b8abc95021d17b",
      "address": "0xca258d51a825c82d16ce54dc61b8abc95021d17b",
      "depth": 3,
      "funds": {
        "name": "{TAG_NAME}",
        "score": 50,
        "default": true
      },
      "amount": 31643005583457000,
      "share": 10,
      "owner": "OWNER_NAME",
      "listType": "Known sources",
      "directStamp": 1697553611,
      "timestamp": 1697525855
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalAmount": {
      "type": "number",
      "description": "Amount of incoming transaction funds for calculation"
    },
    "progress": {
      "type": "number",
      "description": "Internal additional field"
    },
    "depth": {
      "type": "number",
      "description": "Maximum value of the depth of the found source"
    },
    "directTxCount": {
      "type": "number",
      "description": "Direct transaction count"
    },
    "totalFunds": {
      "type": "number",
      "description": "Calculated RISK SCORE value using the user’s selected formula (default or sensitive)"
    },
    "sources": {
      "type": "array",
      "description": "Array with found sources"
    }
  }
}
Response  400
HideShow

Address is Not Valid. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "errors": [
      {
        "instancePath": "/address",
        "schemaPath": "#/properties/address/$ts",
        "keyword": "required",
        "params": {},
        "message": "must pass \\\"$ts\\\" keyword validation",
        "schema": "AddressId",
        "data": "SomeInvalidAddress"
      }
    ],
    "status": 400
  },
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.Http Exception"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "errors": {
          "type": "array"
        },
        "status": {
          "type": "number"
        }
      }
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Address Not Found. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "meta": {
    "spamAmount": 0,
    "spamCount": 0,
    "cashbackCount": 0,
    "totalFunds": 31
  },
  "totalFunds": 31,
  "status": 404,
  "code": 404,
  "success": false,
  "path": "/api/report/address/0xca000001a825c82d16ce54dc61b8abc95021d17b?direction=1",
  "method": "GET",
  "timestamp": "1/12/2026, 1:24:02 PM",
  "data": {
    "messageType": "error",
    "message": "ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "spamAmount": {
          "type": "number"
        },
        "spamCount": {
          "type": "number"
        },
        "cashbackCount": {
          "type": "number"
        },
        "totalFunds": {
          "type": "number"
        }
      }
    },
    "totalFunds": {
      "type": "number"
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

Only Risk Score

Only Risk Score
GET/api/report/address/{address}?$project[totalFunds]={project_totalFunds}

Calculate and retrieve only the risk score of a blockchain address based on historical transactions.

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/report/address/0xca258d51a825c82d16ce54dc61b8abc95021d17b?%24project%5BtotalFunds%5D=1
URI Parameters
HideShow
address
string (required) Example: 0xca258d51a825c82d16ce54dc61b8abc95021d17b

The blockchain address

project_totalFunds
number (required) Example: 1

A query parameter used to pick totalFunds field (representing the risk score) from the response.

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalFunds": 75
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalFunds": {
      "type": "number",
      "description": "Calculated RISK SCORE value using the user’s selected formula (default or sensitive)"
    }
  }
}
Response  400
HideShow

Address is Not Valid. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "errors": [
      {
        "instancePath": "/address",
        "schemaPath": "#/properties/address/$ts",
        "keyword": "required",
        "params": {},
        "message": "must pass \\\"$ts\\\" keyword validation",
        "schema": "AddressId",
        "data": "SomeInvalidAddress"
      }
    ],
    "status": 400
  },
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.Http Exception"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "errors": {
          "type": "array"
        },
        "status": {
          "type": "number"
        }
      }
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  400
HideShow

Contract Address is Not Allowed For Risk Report. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "statusCode": 400,
    "message": "CONTRACTS_NOT_ALLOWED_FOR_RISK_REPORT",
    "error": "Bad Request"
  },
  "success": false,
  "data": {
    "messageType": "error",
    "message": "Risk Report for contracts is not supported. Please enter an externally-owned account address."
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "statusCode": {
          "type": "number"
        },
        "message": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Address Not Found. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "meta": {
    "spamAmount": 0,
    "spamCount": 0,
    "cashbackCount": 0,
    "totalFunds": 31
  },
  "totalFunds": 31,
  "status": 404,
  "code": 404,
  "success": false,
  "path": "/api/report/address/0xca000001a825c82d16ce54dc61b8abc95021d17b?$project[totalFunds]=1",
  "method": "GET",
  "timestamp": "1/12/2026, 1:24:50 PM",
  "data": {
    "messageType": "error",
    "message": "ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "spamAmount": {
          "type": "number"
        },
        "spamCount": {
          "type": "number"
        },
        "cashbackCount": {
          "type": "number"
        },
        "totalFunds": {
          "type": "number"
        }
      }
    },
    "totalFunds": {
      "type": "number"
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  400
HideShow

Parameter $project[totalFunds]= must be equal to one of the allowed values 0|1. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "statusCode": 400,
    "message": "must be equal to one of the allowed values",
    "schema": [
      "[0",
      "1]"
    ]
  },
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "statusCode": {
          "type": "number"
        },
        "message": {
          "type": "string"
        },
        "schema": {
          "type": "array"
        }
      }
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

With Enabled Alerts

With Enabled Alerts
GET/api/report/address/{address}?alertEnable=true

Calculate and retrieve the risk score of a blockchain address based on historical transactions with enabled alerts (btc, eth, ltc, trx, bsv and etc.)

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/report/address/1BoatSLRHtKNngkdXEeobR76b53LETtpyT?alertEnable=true
URI Parameters
HideShow
address
string (required) Example: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT

The blockchain address

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalAmount": 251000000000000000,
  "progress": 100,
  "depth": 3,
  "directTxCount": 10,
  "totalFunds": 75,
  "sources": [
    {
      "directTx": "0xbd54a...750bbec0407dc7dc04",
      "tx_hash": "0x0fd34...dc61b8abc95021d17b",
      "address": "0xca258d51a825c82d16ce54dc61b8abc95021d17b",
      "depth": 3,
      "funds": {
        "name": "{TAG_NAME}",
        "score": 50,
        "default": true
      },
      "amount": 31643005583457000,
      "share": 10,
      "owner": "OWNER_NAME",
      "listType": "Known sources",
      "directStamp": 1697553611,
      "timestamp": 1697525855
    }
  ],
  "alerts": [
    {
      "address": "1BoatSLRHtKNngkdXEeobR76b53LETtpyT",
      "userId": "65bc4bc3a297dcfa614dbd3a",
      "read": false,
      "archive": false,
      "amount": 15.483272,
      "triggeredAmount": 15.483272,
      "depth": 1,
      "priority": 50,
      "score": 30,
      "fiat": "USD",
      "weight": 0.12002,
      "labels": [
        "low-risk exchange"
      ],
      "updatedAt": "1970-01-20T13:38:25.571Z",
      "alertId": "6913bbc3d3cce32b43ddae35",
      "coin": "btc",
      "directTx": "70eb3736c0bde98877f480a652b22b5dca8494c8b2fb95f8af62bf5d7f28f8fd",
      "data": [
        {
          "share": 1,
          "directStamp": 1690705571,
          "amountCur": 15.483272,
          "depth": 1,
          "label": "Low-risk exchange",
          "owner": "Coinbase",
          "address": "3EoNsoh8FcpFTywJ1DZiYFUJjqQM4ffopp",
          "tx_hash": "70eb3736c0bde98877f480a652b22b5dca8494c8b2fb95f8af62bf5d7f28f8fd"
        }
      ],
      "results": [
        true
      ],
      "title": "name",
      "logical": "$anyOf",
      "riskReport": true,
      "addressesCount": [],
      "addresses": []
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalAmount": {
      "type": "number",
      "description": "Amount of incoming transaction funds for calculation"
    },
    "progress": {
      "type": "number",
      "description": "Internal additional field"
    },
    "depth": {
      "type": "number",
      "description": "Maximum value of the depth of the found source"
    },
    "directTxCount": {
      "type": "number",
      "description": "Direct transaction count"
    },
    "totalFunds": {
      "type": "number",
      "description": "Calculated RISK SCORE value using the user’s selected formula (default or sensitive)"
    },
    "sources": {
      "type": "array",
      "description": "Array with found sources"
    },
    "alerts": {
      "type": "array",
      "description": "Array with found alerts. If alerts are enabled, the response will contain this array."
    }
  }
}
Response  400
HideShow

Address is Not Valid. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "errors": [
      {
        "instancePath": "/address",
        "schemaPath": "#/properties/address/$ts",
        "keyword": "required",
        "params": {},
        "message": "must pass \\\"$ts\\\" keyword validation",
        "schema": "AddressId",
        "data": "SomeInvalidAddress"
      }
    ],
    "status": 400
  },
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.Http Exception"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "errors": {
          "type": "array"
        },
        "status": {
          "type": "number"
        }
      }
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Address Not Found. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "meta": {
    "spamAmount": 0,
    "spamCount": 0,
    "cashbackCount": 0,
    "totalFunds": 31
  },
  "totalFunds": 31,
  "status": 404,
  "code": 404,
  "success": false,
  "path": "/api/report/address/0xca000001a825c82d16ce54dc61b8abc95021d17b?alertEnable=true",
  "method": "GET",
  "timestamp": "1/12/2026, 1:26:21 PM",
  "data": {
    "messageType": "error",
    "message": "ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "spamAmount": {
          "type": "number"
        },
        "spamCount": {
          "type": "number"
        },
        "cashbackCount": {
          "type": "number"
        },
        "totalFunds": {
          "type": "number"
        }
      }
    },
    "totalFunds": {
      "type": "number"
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

Get Address Balance

By Native Coin

By Native Coin
GET/api/explorer/getBalance/{address}

Get the native coin balance of a specific blockchain address.

  • ticker: eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/explorer/getBalance/TRBqACCXaLTYsKxWzDwbfyN1shtWs479TC
URI Parameters
HideShow
address
string (required) Example: TRBqACCXaLTYsKxWzDwbfyN1shtWs479TC

The blockchain address

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "address": "{REQUESTED_ADDRESS}",
  "contract": "``",
  "balance": {
    "amount": 376.71644,
    "symbol": "TRX",
    "price": 41.024859,
    "priceTimestamp": 1713517606492
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "address": {
      "type": "string"
    },
    "contract": {
      "type": "string"
    },
    "balance": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "symbol": {
          "type": "string",
          "enum": [
            "TRX",
            "ETH"
          ]
        },
        "price": {
          "type": "number"
        },
        "priceTimestamp": {
          "type": "number"
        }
      }
    }
  }
}
Response  400
HideShow

Address is Not Valid. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "errors": [
      {
        "instancePath": "/address",
        "schemaPath": "#/properties/address/$ts",
        "keyword": "required",
        "params": {},
        "message": "must pass \\\"$ts\\\" keyword validation",
        "schema": "AddressId",
        "data": "SomeInvalidAddress"
      }
    ],
    "status": 400
  },
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.Http Exception"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "errors": {
          "type": "array"
        },
        "status": {
          "type": "number"
        }
      }
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

By Token

By Token
GET/api/explorer/getBalance/{address}?contract={contract}

Get the token balance of a specific blockchain address.

  • ticker: eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/api/explorer/getBalance/TRBqACCXaLTYsKxWzDwbfyN1shtWs479TC?contract=contract
URI Parameters
HideShow
address
string (required) Example: TRBqACCXaLTYsKxWzDwbfyN1shtWs479TC

The blockchain address

contract
string (required) Example: contract

The blockchain token contract address

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "address": "{REQUESTED_ADDRESS}",
  "contract": "{TOKEN_CONTRACT_ADDRESS}",
  "balance": {
    "amount": 12634.43649,
    "symbol": "{TOKEN_SYMBOL}",
    "price": 12641.726313,
    "priceTimestamp": 1713517535003
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "address": {
      "type": "string"
    },
    "contract": {
      "type": "string"
    },
    "balance": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "symbol": {
          "type": "string"
        },
        "price": {
          "type": "number"
        },
        "priceTimestamp": {
          "type": "number"
        }
      }
    }
  }
}
Response  400
HideShow

Address is Not Valid. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "errors": [
      {
        "instancePath": "/address",
        "schemaPath": "#/properties/address/$ts",
        "keyword": "required",
        "params": {},
        "message": "must pass \\\"$ts\\\" keyword validation",
        "schema": "AddressId",
        "data": "SomeInvalidAddress"
      }
    ],
    "status": 400
  },
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.Http Exception"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "errors": {
          "type": "array"
        },
        "status": {
          "type": "number"
        }
      }
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "success": false,
  "data": {
    "messageType": "error",
    "message": "user.User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

Essential Support

Get information about essential blockchains

By Transaction

By Transaction
GET/essential-api-{essential_blockchain_ticker}/report/tx_hash/{tx_hash}?direction={direction}&token={token_contract_address}

Retrieve detailed information about a specific transaction for essential blockchains

  • ticker: common - subdomain for this request always common

  • essential_blockchain_ticker: polygon|glmr|arb|base|dot|sol|ton|xrp|worldcoin|optimism|xlm|tempo|cardano - The essential blockchain ticker

Example URI

GET https://{ticker}.glprotocol.com/essential-api-{essential_blockchain_ticker}/report/tx_hash/0xda852cac14840170ae6655c3f00712bfe67fd09c09f98c1aafb450945c5be5a1?direction=2&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f
URI Parameters
HideShow
essential_blockchain_ticker
string (required) Example: {essential_blockchain_ticker}

The essential blockchain to query

tx_hash
string (required) Example: 0xda852cac14840170ae6655c3f00712bfe67fd09c09f98c1aafb450945c5be5a1

The transaction hash

direction
string (required) Example: 2

0 - is the Source of Funds, 1 - is the Use of Funds, 2 - common, Source of Funds + Use of Funds (default value if not specified).

token_contract_address
string (required) Example: 0xc2132d05d31c914a87c6611c10748aeb04b58e8f

The essential blockchain token contract address. - (blank value) search by native coin, {token_contract_address} - search by specific token.

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalAmount": 18394532,
  "progress": 100,
  "depth": 2,
  "directTxCount": 2,
  "totalFunds": 50.95,
  "totalFundsDefault": 50,
  "totalFundsSensitive": 50,
  "totalFundsSeries": 50.95,
  "sources": [
    {
      "directTx": "\"0xda852cac14840170ae6655c3f00712bfe67fd09c09f98c1aafb450945c5be5a1\"",
      "directionUp": false,
      "funds": {
        "name": "\"DEX\"",
        "score": 50
      },
      "owner": "\"Uniswap\"",
      "depth": 2,
      "amount": 9197266,
      "currency": "\"0xc2132d05d31c914a87c6611c10748aeb04b58e8f\"",
      "tx_hash": "\"0x755a883e328cfb7d9994c1940e2547f8de71a0e8971ed55fabeee6bc57bab331\"",
      "address": "\"0x9b08288c3be4f62bbf8d1c20ac9c5e6f9467d8b7\"",
      "timestamp": 1685019783,
      "listType": "\"Known sources\"",
      "share": 1
    },
    {
      "directTx": "\"0xda852cac14840170ae6655c3f00712bfe67fd09c09f98c1aafb450945c5be5a1\"",
      "directionUp": true,
      "funds": {
        "name": "\"exchange\"",
        "score": 50
      },
      "owner": "\"OKX\"",
      "depth": 2,
      "amount": 9197266,
      "currency": "\"0xc2132d05d31c914a87c6611c10748aeb04b58e8f\"",
      "tx_hash": "\"0x7fa32534b3372cb9656ef5bb897e67520c561f57a76b45baf87489a729674d94\"",
      "address": "\"0x06959153b974d0d5fdfd87d561db6d8d4fa0bb0b\"",
      "timestamp": 1691726959,
      "listType": "\"Known sources\"",
      "share": 1
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalAmount": {
      "type": "number"
    },
    "progress": {
      "type": "number"
    },
    "depth": {
      "type": "number"
    },
    "directTxCount": {
      "type": "number"
    },
    "totalFunds": {
      "type": "number"
    },
    "totalFundsDefault": {
      "type": "number"
    },
    "totalFundsSensitive": {
      "type": "number"
    },
    "totalFundsSeries": {
      "type": "number"
    },
    "sources": {
      "type": "array"
    }
  }
}
Response  404
HideShow

Transaction Not Found

Headers
Content-Type: application/json
Body
{
  "messageType": "\"Error\"",
  "status": 404,
  "code": 404,
  "success": false,
  "path": "\"/essential-api-polygon/report/tx_hash/0xda852cac14840170ae6655c3f0071209c09f98c1aafb450945c5be5a1?direction=2&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f\"",
  "method": "\"GET\"",
  "timestamp": "\"3/4/2025, 1:16:58 PM\"",
  "data": {
    "messageType": "\"error\"",
    "message": "\"ENOENT\""
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Transaction Hash Not Specified. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "message": "Cannot GET /essential-api-polygon/report/tx_hash/?direction=2&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f",
    "error": "Not Found",
    "statusCode": 404
  },
  "status": 404,
  "options": {},
  "message": "Cannot GET /essential-api-polygon/report/tx_hash/?direction=2&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f",
  "name": "NotFoundException",
  "code": 404,
  "success": false,
  "path": "/essential-api-polygon/report/tx_hash/?direction=2&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f",
  "method": "GET",
  "timestamp": "1/12/2026, 1:35:47 PM",
  "data": {
    "messageType": "error",
    "message": "Cannot GET /essential-api-polygon/report/tx_hash/?direction=2&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        },
        "error": {
          "type": "string"
        },
        "statusCode": {
          "type": "number"
        }
      }
    },
    "status": {
      "type": "number"
    },
    "options": {
      "type": "object",
      "properties": {}
    },
    "message": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "status": 401,
  "message": "User not found",
  "name": "HttpException",
  "code": 401,
  "success": false,
  "path": "/essential",
  "method": "GET",
  "timestamp": "3/4/2025, 10:03:51 AM",
  "data": {
    "messageType": "error",
    "message": "User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "status": {
      "type": "number"
    },
    "message": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string",
      "description": "api-glmr/report/tx_hash/0x69033d0891348c8ac8e9456c8226ddc91099f97fc4ad0e888c736b2dd3bb5fec?direction=0&token=&tokenTicker=GLMR (string)"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

By Address

By Address
GET/essential-api-{essential_blockchain_ticker}/report/address/{address}?direction={direction}&token={token_contract_address}

Retrieve detailed information about a last transaction for provided address for essential blockchains

  • ticker: common - subdomain for this request always common

  • essential_blockchain_ticker: polygon|glmr|arb|base|dot|sol|ton|xrp|worldcoin|optimism|xlm|tempo|cardano - The essential blockchain ticker

Example URI

GET https://{ticker}.glprotocol.com/essential-api-{essential_blockchain_ticker}/report/address/0x85b4Ce35C2e36aC6405455A3D3Ae947972864f66?direction=2&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f
URI Parameters
HideShow
essential_blockchain_ticker
string (required) Example: {essential_blockchain_ticker}

The essential blockchain to query

address
string (required) Example: 0x85b4Ce35C2e36aC6405455A3D3Ae947972864f66

The address

direction
string (required) Example: 2

0 - is the Source of Funds, 1 - is the Use of Funds, 2 - common, Source of Funds + Use of Funds (default value if not specified).

token_contract_address
string (required) Example: 0xc2132d05d31c914a87c6611c10748aeb04b58e8f

The essential blockchain token contract address. - (blank value) search by native coin, {token_contract_address} - search by specific token.

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "totalAmount": 18394532,
  "progress": 100,
  "depth": 2,
  "directTxCount": 2,
  "totalFunds": 50.95,
  "totalFundsDefault": 50,
  "totalFundsSensitive": 50,
  "totalFundsSeries": 50.95,
  "sources": [
    {
      "directTx": "\"0xda852cac14840170ae6655c3f00712bfe67fd09c09f98c1aafb450945c5be5a1\"",
      "directionUp": false,
      "funds": {
        "name": "\"DEX\"",
        "score": 50
      },
      "owner": "\"Uniswap\"",
      "depth": 2,
      "amount": 9197266,
      "currency": "\"0xc2132d05d31c914a87c6611c10748aeb04b58e8f\"",
      "tx_hash": "\"0x755a883e328cfb7d9994c1940e2547f8de71a0e8971ed55fabeee6bc57bab331\"",
      "address": "\"0x9b08288c3be4f62bbf8d1c20ac9c5e6f9467d8b7\"",
      "directStamp": 1740770954,
      "timestamp": 1685019783,
      "listType": "\"Known sources\"",
      "share": 1
    },
    {
      "directTx": "\"0xda852cac14840170ae6655c3f00712bfe67fd09c09f98c1aafb450945c5be5a1\"",
      "directionUp": true,
      "funds": {
        "name": "\"exchange\"",
        "score": 50
      },
      "owner": "\"OKX\"",
      "depth": 2,
      "amount": 9197266,
      "currency": "\"0xc2132d05d31c914a87c6611c10748aeb04b58e8f\"",
      "tx_hash": "\"0x7fa32534b3372cb9656ef5bb897e67520c561f57a76b45baf87489a729674d94\"",
      "address": "\"0x06959153b974d0d5fdfd87d561db6d8d4fa0bb0b\"",
      "directStamp": 1740770954,
      "timestamp": 1691726959,
      "listType": "\"Known sources\"",
      "share": 1
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "totalAmount": {
      "type": "number"
    },
    "progress": {
      "type": "number"
    },
    "depth": {
      "type": "number"
    },
    "directTxCount": {
      "type": "number"
    },
    "totalFunds": {
      "type": "number"
    },
    "totalFundsDefault": {
      "type": "number"
    },
    "totalFundsSensitive": {
      "type": "number"
    },
    "totalFundsSeries": {
      "type": "number"
    },
    "sources": {
      "type": "array"
    }
  }
}
Response  404
HideShow

Address Not Found

Headers
Content-Type: application/json
Body
{
  "messageType": "Error",
  "meta": {
    "spamAmount": 0,
    "spamCount": 0,
    "cashbackCount": 0,
    "totalFunds": 31
  },
  "status": 404,
  "code": 404,
  "success": false,
  "path": "/essential-api-polygon/report/address/0x85b4Ce35C2e36aC6405455A3D3Ae947972864f66?direction=1&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f",
  "method": "GET",
  "timestamp": "1/12/2026, 2:24:43 PM",
  "data": {
    "messageType": "error",
    "message": "ENOENT"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "messageType": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "spamAmount": {
          "type": "number"
        },
        "spamCount": {
          "type": "number"
        },
        "cashbackCount": {
          "type": "number"
        },
        "totalFunds": {
          "type": "number"
        }
      }
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Address Not Specified. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "message": "Cannot GET /essential-api-polygon/report/address?direction=1&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f",
    "error": "Not Found",
    "statusCode": 404
  },
  "status": 404,
  "options": {},
  "message": "Cannot GET /essential-api-polygon/report/address?direction=1&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f",
  "name": "NotFoundException",
  "code": 404,
  "success": false,
  "path": "/essential-api-polygon/report/address?direction=1&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f",
  "method": "GET",
  "timestamp": "1/12/2026, 2:27:14 PM",
  "data": {
    "messageType": "error",
    "message": "Cannot GET /essential-api-polygon/report/address?direction=1&token=0xc2132d05d31c914a87c6611c10748aeb04b58e8f"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        },
        "error": {
          "type": "string"
        },
        "statusCode": {
          "type": "number"
        }
      }
    },
    "status": {
      "type": "number"
    },
    "options": {
      "type": "object",
      "properties": {}
    },
    "message": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "status": 401,
  "message": "User not found",
  "name": "HttpException",
  "code": 401,
  "success": false,
  "path": "/essential",
  "method": "GET",
  "timestamp": "3/4/2025, 10:03:51 AM",
  "data": {
    "messageType": "error",
    "message": "User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "status": {
      "type": "number"
    },
    "message": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string",
      "description": "api-arb/report/address/0x85b4Ce35C2e36aC6405455A3D3Ae947972864f66123?shallow=false&direction=2&token=&tokenTicker=ETH (string)"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

Get Address Tokens

Get Address Tokens
GET/essential-api-{essential_blockchain_ticker}/explorer/getAddressTokens/{address}?supported={supported}&$limit={limit}

Retrieve token contracts for a specific address on essential blockchains. The response returns a data array of tokens. For each token, use data[i].address as token_contract_address in By Transaction and By Address requests. For the native coin, address is an empty string. When supported is omitted, the observed behavior matches supported=false.

  • ticker: common - subdomain for this request always common

  • essential_blockchain_ticker: polygon|glmr|arb|base|dot|sol|ton|xrp|worldcoin|optimism|xlm|tempo|cardano - The essential blockchain ticker

Example URI

GET https://{ticker}.glprotocol.com/essential-api-{essential_blockchain_ticker}/explorer/getAddressTokens/0xF3604FA7edF245f344acd0f4083E409BB2fEfd98?supported=true&%24limit=1000
URI Parameters
HideShow
essential_blockchain_ticker
string (required) Example: {essential_blockchain_ticker}

The essential blockchain to query

address
string (required) Example: 0xF3604FA7edF245f344acd0f4083E409BB2fEfd98

The address

supported
boolean (optional) Example: true

true returns only supported tokens, false or omitted returns all detected tokens for the address

limit
number (optional) Example: 1000

Query parameter accepted by the endpoint. In observed responses for this address, the returned item count did not change when $limit was reduced

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "success": true,
  "data": [
    {
      "name": "ETH",
      "symbol": "ETH",
      "decimals": 18,
      "icon": "",
      "address": ""
    },
    {
      "address": "0xaf88d065e77c8cc2239327c5edb3a432268e5831",
      "name": "USD Coin",
      "symbol": "USDC",
      "decimals": 6,
      "icon": ""
    },
    {
      "address": "0x25118290e6a5f4139381d072181157035864099d",
      "name": "RAIN",
      "symbol": "RAIN",
      "decimals": 18,
      "icon": ""
    },
    {
      "address": "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9",
      "name": "USD₮0",
      "symbol": "USD₮0",
      "decimals": 6,
      "icon": ""
    },
    {
      "address": "0x1cd9a56c8c2ea913c70319a44da75e99255aa46f",
      "name": "Orbiter Token",
      "symbol": "OBT",
      "decimals": 18,
      "icon": ""
    },
    {
      "address": "0x912ce59144191c1204e64559fe8253a0e49e6548",
      "name": "Arbitrum",
      "symbol": "ARB",
      "decimals": 18,
      "icon": ""
    },
    {
      "address": "0x5979d7b546e38e414f7e9822514be443a4800529",
      "name": "Wrapped liquid staked Ether 2.0",
      "symbol": "wstETH",
      "decimals": 18,
      "icon": ""
    }
  ]
}
Response  400
HideShow

Address is Not Valid. Example from live request.

Headers
Content-Type: application/json
Body
{
  "errors": [
    {
      "instancePath": "/address",
      "schemaPath": "#/properties/address/$ts",
      "keyword": "$ts",
      "params": {},
      "message": "must pass \"$ts\" keyword validation",
      "schema": "AddressId",
      "data": "not-an-address"
    }
  ],
  "status": 400,
  "code": 400,
  "success": false,
  "path": "/essential",
  "method": "GET",
  "timestamp": "4/6/2026, 10:42:30 PM",
  "data": {
    "messageType": "error",
    "message": "400 payload/address must pass \"$ts\" keyword validation"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array"
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string",
      "description": "api-arb/explorer/getAddressTokens/not-an-address?supported=true&%24limit=5 (string)"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  404
HideShow

Address Not Specified. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": {
    "message": "Cannot GET /essential-api-arb/explorer/getAddressTokens/?supported=true&%24limit=5",
    "error": "Not Found",
    "statusCode": 404
  },
  "status": 404,
  "options": {},
  "message": "Cannot GET /essential-api-arb/explorer/getAddressTokens/?supported=true&%24limit=5",
  "name": "NotFoundException",
  "code": 404,
  "success": false,
  "path": "/essential",
  "method": "GET",
  "timestamp": "4/6/2026, 10:42:59 PM",
  "data": {
    "messageType": "error",
    "message": "Cannot GET /essential-api-arb/explorer/getAddressTokens/?supported=true&%24limit=5"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        },
        "error": {
          "type": "string"
        },
        "statusCode": {
          "type": "number"
        }
      }
    },
    "status": {
      "type": "number"
    },
    "options": {
      "type": "object",
      "properties": {}
    },
    "message": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string",
      "description": "api-arb/explorer/getAddressTokens/?supported=true&%24limit=5 (string)"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request. Example with Wrapper.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "status": 401,
  "message": "User not found",
  "name": "HttpException",
  "code": 401,
  "success": false,
  "path": "/essential",
  "method": "GET",
  "timestamp": "4/6/2026, 10:39:25 PM",
  "data": {
    "messageType": "error",
    "message": "User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "status": {
      "type": "number"
    },
    "message": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string",
      "description": "api-arb/explorer/getAddressTokens/0xF3604FA7edF245f344acd0f4083E409BB2fEfd98?supported=true&%24limit=5 (string)"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

Monitoring

Monitor advanced-chain addresses.

Add Address To Monitoring

Add Address To Monitoring
POST/api/monitoring/addressToMonitor

Add a single address to monitoring.

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The advanced blockchain to query (as a subdomain)

Example URI

POST https://{ticker}.glprotocol.com/api/monitoring/addressToMonitor
Request
HideShow
Headers
x-api-key: {Api_key}
Body
{
  "address": "18VWHjMt4ixHddPPbs6righWTs3Sg2QNcn",
  "checkLastTen": false,
  "blockchain": "BTC"
}
Schema
{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "The blockchain address to add to monitoring."
    },
    "checkLastTen": {
      "type": "boolean",
      "description": "Controls whether the initial monitoring calculation should be limited to the latest ten direct transactions."
    },
    "blockchain": {
      "enum": [
        "BTC",
        "LTC",
        "BSV",
        "ETH",
        "TRX",
        "BNB",
        "AVAX"
      ],
      "description": "Blockchain code matching the selected advanced network."
    }
  },
  "required": [
    "address",
    "blockchain"
  ],
  "$schema": "http://json-schema.org/draft-04/schema#"
}
Response  201
HideShow

Successfully added to monitoring.

Headers
Content-Type: application/json
Body
{
  "success": true,
  "data": {
    "added": 1,
    "notFound": 0,
    "duplicate": 0
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean",
      "description": "Indicates that the request was processed successfully."
    },
    "data": {
      "type": "object",
      "properties": {
        "added": {
          "type": "number",
          "description": "Number of addresses added to monitoring."
        },
        "notFound": {
          "type": "number",
          "description": "Number of addresses that were not found during processing."
        },
        "duplicate": {
          "type": "number",
          "description": "Number of addresses already present in monitoring."
        }
      }
    }
  }
}
Response  201
HideShow

Address is already present in monitoring. The endpoint may still return HTTP 201 with an error payload.

Headers
Content-Type: application/json
Body
{
  "success": false,
  "data": {
    "messageType": "BadRequestException",
    "message": "Address already added to monitor",
    "stack": "BadRequestException: ADDRESS_ALREADY_ADDED_TO_MONITOR",
    "response": {
      "statusCode": 400,
      "message": "ADDRESS_ALREADY_ADDED_TO_MONITOR",
      "error": "Bad Request"
    },
    "status": 400,
    "name": "BadRequestException"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "stack": {
          "type": "string"
        },
        "response": {
          "type": "object",
          "properties": {
            "statusCode": {
              "type": "number"
            },
            "message": {
              "type": "string"
            },
            "error": {
              "type": "string"
            }
          }
        },
        "status": {
          "type": "number"
        },
        "name": {
          "type": "string"
        }
      }
    }
  }
}
Response  400
HideShow

Bad Request - address is invalid or the request body is malformed.

Headers
Content-Type: application/json
Body
{
  "errors": [
    {
      "instancePath": "/address",
      "schemaPath": "#/properties/address/$ts",
      "keyword": "$ts",
      "params": {},
      "message": "must pass \\\"$ts\\\" keyword validation",
      "schema": "AddressId",
      "data": "SomeInvalidAddress"
    },
    {
      "instancePath": "/address",
      "schemaPath": "#/properties/address/pattern",
      "keyword": "pattern",
      "params": {
        "pattern": "^(1|3)[a-km-zA-HJ-NP-Z1-9]{25,34}$|^bc1[a-zA-Z0-9]{6,}$"
      },
      "message": "must match pattern \\\"^(1|3)[a-km-zA-HJ-NP-Z1-9]{25,34}$|^bc1[a-zA-Z0-9]{6,}$\\\"",
      "schema": "^(1|3)[a-km-zA-HJ-NP-Z1-9]{25,34}$|^bc1[a-zA-Z0-9]{6,}$",
      "data": "SomeInvalidAddress"
    }
  ],
  "status": 400,
  "code": 400,
  "success": false,
  "path": "/api/monitoring/addressToMonitor",
  "method": "POST",
  "timestamp": "4/17/2026, 10:11:22 AM",
  "data": {
    "messageType": "error",
    "message": "400 payload/address must pass \\\"$ts\\\" keyword validation, payload/address must match pattern \\\"^(1|3)[a-km-zA-HJ-NP-Z1-9]{25,34}$|^bc1[a-zA-Z0-9]{6,}$\\\""
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array"
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "status": 401,
  "message": "User not found",
  "name": "HttpException",
  "code": 401,
  "success": false,
  "path": "/api/monitoring/addressToMonitor",
  "method": "POST",
  "timestamp": "4/17/2026, 10:11:07 AM",
  "data": {
    "messageType": "error",
    "message": "User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "status": {
      "type": "number"
    },
    "message": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

Remove Address From Monitoring

Remove Address From Monitoring
DELETE/api/monitoring/addressToMonitor/{address}

Remove a single address from monitoring.

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The advanced blockchain to query (as a subdomain)

Example URI

DELETE https://{ticker}.glprotocol.com/api/monitoring/addressToMonitor/18VWHjMt4ixHddPPbs6righWTs3Sg2QNcn
URI Parameters
HideShow
address
string (required) Example: 18VWHjMt4ixHddPPbs6righWTs3Sg2QNcn

The blockchain address to remove from monitoring.

Request
HideShow
Headers
x-api-key: {Api_key}
Response  200
HideShow

Successfully removed from monitoring.

Headers
Content-Type: application/json
Body
{
  "success": true
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean",
      "description": "Indicates that the request was processed successfully."
    }
  }
}
Response  400
HideShow

Bad Request - address is invalid.

Headers
Content-Type: application/json
Body
{
  "errors": [
    {
      "instancePath": "/address",
      "schemaPath": "#/properties/address/$ts",
      "keyword": "$ts",
      "params": {},
      "message": "must pass \\\"$ts\\\" keyword validation",
      "schema": "AddressId",
      "data": "SomeInvalidAddress"
    },
    {
      "instancePath": "/address",
      "schemaPath": "#/properties/address/pattern",
      "keyword": "pattern",
      "params": {
        "pattern": "^(1|3)[a-km-zA-HJ-NP-Z1-9]{25,34}$|^bc1[a-zA-Z0-9]{6,}$"
      },
      "message": "must match pattern \\\"^(1|3)[a-km-zA-HJ-NP-Z1-9]{25,34}$|^bc1[a-zA-Z0-9]{6,}$\\\"",
      "schema": "^(1|3)[a-km-zA-HJ-NP-Z1-9]{25,34}$|^bc1[a-zA-Z0-9]{6,}$",
      "data": "SomeInvalidAddress"
    }
  ],
  "status": 400,
  "code": 400,
  "success": false,
  "path": "/api/monitoring/addressToMonitor/SomeInvalidAddress",
  "method": "DELETE",
  "timestamp": "4/17/2026, 12:35:59 PM",
  "data": {
    "messageType": "error",
    "message": "400 payload/address must pass \\\"$ts\\\" keyword validation, payload/address must match pattern \\\"^(1|3)[a-km-zA-HJ-NP-Z1-9]{25,34}$|^bc1[a-zA-Z0-9]{6,}$\\\""
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array"
    },
    "status": {
      "type": "number"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
Response  401
HideShow

Unauthorized Request.

Headers
Content-Type: application/json
Body
{
  "response": "User not found",
  "status": 401,
  "message": "User not found",
  "name": "HttpException",
  "code": 401,
  "success": false,
  "path": "/api/monitoring/addressToMonitor/18VWHjMt4ixHddPPbs6righWTs3Sg2QNcn",
  "method": "DELETE",
  "timestamp": "4/17/2026, 12:35:58 PM",
  "data": {
    "messageType": "error",
    "message": "User not found"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "response": {
      "type": "string"
    },
    "status": {
      "type": "number"
    },
    "message": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "code": {
      "type": "number"
    },
    "success": {
      "type": "boolean"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "properties": {
        "messageType": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}

Webhooks

Async approach to get address score updates

X-Signature Calculation

Here is how it (hmac variable) should be calculated based on the API Key, Secret and API request body:

var input = { API_KEY } + "." + JSON.stringify( JSON.parse( request.data ) );

var HMAC = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(input,{ API_SECRET }));

Get a single Webhook

Get a single Webhook
GET/integration/webhooks/{webhookId}

Get a single webhook with the provided ID

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/integration/webhooks/w123
URI Parameters
HideShow
webhookId
string (required) Example: w123

The ID of the webhook

Request
HideShow
Headers
Authorization: {API_KEY}
Response  200
HideShow

The endpoint response represents a webhook object.

Headers
Content-Type: application/json
Body
{
  "id": "{WEBHOOK_ID}",
  "enabled": true,
  "events": [
    "score.address.deep",
    "score.address.standard"
  ],
  "url": "{Webhook_URL}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The ID of the webhook. Replace `{WEBHOOK_ID}` with the actual webhook ID."
    },
    "enabled": {
      "type": "boolean",
      "description": "Indicates whether the webhook is enabled."
    },
    "events": {
      "type": "array",
      "description": "An array of events for which the webhook is configured."
    },
    "url": {
      "type": "string",
      "description": "The URL to which data is sent by the webhook. Replace `{Webhook_URL}` with the actual URL."
    }
  },
  "required": [
    "id",
    "enabled",
    "events",
    "url"
  ]
}
Response  401
HideShow

Unauthorized Request - Authorization is not set or invalid in the request Headers

Headers
Content-Type: application/json
Body
{
  "statusCode": 401,
  "message": "Unauthorized",
  "code": "HttpException",
  "timestamp": "2024-05-02T15:33:42.734Z",
  "path": "{REQUEST_URL}",
  "method": "{REQUEST_METHOD}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number",
      "description": "The HTTP status code of the response."
    },
    "message": {
      "type": "string",
      "description": "The message explaining the status."
    },
    "code": {
      "type": "string",
      "description": "The exceptional case that has occurred."
    },
    "timestamp": {
      "type": "string",
      "description": "The date and time when the exception happened."
    },
    "path": {
      "type": "string",
      "description": "The URL path that has been attempted to access."
    },
    "method": {
      "type": "string",
      "description": "The HTTP method (like GET, POST, PUT, DELETE) used for the request."
    }
  },
  "required": [
    "statusCode",
    "message",
    "code",
    "timestamp",
    "path",
    "method"
  ]
}
Response  404
HideShow

Webhook Not Found

Headers
Content-Type: application/json
Body
{
  "statusCode": 404,
  "message": "Webhook absent",
  "code": "HttpException",
  "timestamp": "5/9/2024, 9:09:27 AM",
  "path": "{URL_PATH}",
  "method": "GET"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number"
    },
    "message": {
      "type": "string"
    },
    "code": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    }
  }
}

Get all Webhooks

Get all Webhooks
GET/integration/webhooks/

Get all the webhooks created by user

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

GET https://{ticker}.glprotocol.com/integration/webhooks/
Request
HideShow
Headers
Authorization: {API_KEY}
Response  200
HideShow

The endpoint response represents a list of webhook objects.

Headers
Content-Type: application/json
Body
[
  {
    "id": "{WEBHOOK_ID_1}",
    "enabled": true,
    "events": [
      "score.address.deep",
      "score.address.standard"
    ],
    "url": "{Webhook_URL}"
  },
  {
    "id": "{WEBHOOK_ID_2}",
    "enabled": true,
    "events": [
      "score.address.deep",
      "score.address.standard"
    ],
    "url": "{Webhook_URL}"
  }
]
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "array"
}
Response  401
HideShow

Unauthorized Request - Authorization is not set or invalid in the request Headers

Headers
Content-Type: application/json
Body
{
  "statusCode": 401,
  "message": "Unauthorized",
  "code": "HttpException",
  "timestamp": "2024-05-02T15:33:42.734Z",
  "path": "{REQUEST_URL}",
  "method": "{REQUEST_METHOD}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number",
      "description": "The HTTP status code of the response."
    },
    "message": {
      "type": "string",
      "description": "The message explaining the status."
    },
    "code": {
      "type": "string",
      "description": "The exceptional case that has occurred."
    },
    "timestamp": {
      "type": "string",
      "description": "The date and time when the exception happened."
    },
    "path": {
      "type": "string",
      "description": "The URL path that has been attempted to access."
    },
    "method": {
      "type": "string",
      "description": "The HTTP method (like GET, POST, PUT, DELETE) used for the request."
    }
  },
  "required": [
    "statusCode",
    "message",
    "code",
    "timestamp",
    "path",
    "method"
  ]
}

Create/Update Webhook

Create/Update Webhook
PUT/integration/webhooks/{webhookId}

Creates or update Webhook where the score update should be received

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

PUT https://{ticker}.glprotocol.com/integration/webhooks/w123
URI Parameters
HideShow
webhookId
string (required) Example: w123

The ID of the webhook

Request
HideShow
Headers
Authorization: {API_KEY}
X-Signature: {HMAC}
Body
{
    "id": "{Webhook_ID}",
    "enabled": true,
    "events": [
        "score.address.deep",
        "score.address.standard"
    ], // (required) An array of events for which the webhook is configured.
    "url": "{Webhook_URL}" // This is a URL where the subscription updates should come, should be provided by the client side
}
Response  200
HideShow

Successfully Updated

Body
``
Response  201
HideShow

Successfully Created

Headers
Content-Type: application/json
Body
{
  "id": "{Webhook_ID}",
  "enabled": true,
  "events": [
    "score.address.deep",
    "score.address.standard"
  ],
  "url": "{Webhook_URL}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The ID of the webhook"
    },
    "enabled": {
      "type": "boolean",
      "description": "A flag indicating if the webhook is enabled or not"
    },
    "events": {
      "type": "array"
    },
    "url": {
      "type": "string",
      "description": "The URL where the webhook will send updates. This should be provided by the client side"
    }
  },
  "required": [
    "id",
    "enabled",
    "events",
    "url"
  ]
}
Response  304
HideShow

Not Modified

Response  401
HideShow

Unauthorized Request - Authorization or/and X-Signature are not set or invalid in the request Headers

Headers
Content-Type: application/json
Body
{
  "statusCode": 401,
  "message": "Unauthorized",
  "code": "HttpException",
  "timestamp": "2024-05-02T15:33:42.734Z",
  "path": "{REQUEST_URL}",
  "method": "{REQUEST_METHOD}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number",
      "description": "The HTTP status code of the response."
    },
    "message": {
      "type": "string",
      "description": "The message explaining the status."
    },
    "code": {
      "type": "string",
      "description": "The exceptional case that has occurred."
    },
    "timestamp": {
      "type": "string",
      "description": "The date and time when the exception happened."
    },
    "path": {
      "type": "string",
      "description": "The URL path that has been attempted to access."
    },
    "method": {
      "type": "string",
      "description": "The HTTP method (like GET, POST, PUT, DELETE) used for the request."
    }
  },
  "required": [
    "statusCode",
    "message",
    "code",
    "timestamp",
    "path",
    "method"
  ]
}

Create Subscription

Create Subscription
POST/integration/score/address

Create subscription for addresses to be monitored

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

  • idempotency-key: super_secret_word - Some unique value for each request

  • webhook-id: 123 - The Webhook ID

Example URI

POST https://{ticker}.glprotocol.com/integration/score/address
Request
HideShow

Note: If subscribe is true, it keeps monitoring and webhook receives updates when addresses score changes, otherwise it receives addresses score only once.

Headers
Authorization: {API_KEY}
X-Signature: {HMAC}
idempotency-key: {API_SECRET}
webhook-id: {ID}
Body
{
    "addresses": [
     "{address}",
     "{address}"
    ],
    "subscribe": true || false // set true to receive updated score after each new address transaction
}
Response  202
HideShow

Subscription Successfully Created

Headers
Content-Type: text/html
Body
Data received
Response  202
HideShow

Success Response when a request is done with the same idempotency-key

Headers
Content-Type: application/json
Body
{
  "statusCode": 202,
  "message": "DATA_RECEIVED",
  "code": "HttpException",
  "timestamp": "2024-05-09T10:29:14.812Z",
  "path": "URL_PATH",
  "method": "POST"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number"
    },
    "message": {
      "type": "string"
    },
    "code": {
      "type": "string"
    },
    "timestamp": {
      "type": "string"
    },
    "path": {
      "type": "string"
    },
    "method": {
      "type": "string"
    }
  }
}
Response  401
HideShow

Unauthorized Request - Authorization or/and X-Signature are not set or invalid in the request Headers

Headers
Content-Type: application/json
Body
{
  "statusCode": 401,
  "message": "Unauthorized",
  "code": "HttpException",
  "timestamp": "2024-05-02T15:33:42.734Z",
  "path": "{REQUEST_URL}",
  "method": "{REQUEST_METHOD}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number",
      "description": "The HTTP status code of the response."
    },
    "message": {
      "type": "string",
      "description": "The message explaining the status."
    },
    "code": {
      "type": "string",
      "description": "The exceptional case that has occurred."
    },
    "timestamp": {
      "type": "string",
      "description": "The date and time when the exception happened."
    },
    "path": {
      "type": "string",
      "description": "The URL path that has been attempted to access."
    },
    "method": {
      "type": "string",
      "description": "The HTTP method (like GET, POST, PUT, DELETE) used for the request."
    }
  },
  "required": [
    "statusCode",
    "message",
    "code",
    "timestamp",
    "path",
    "method"
  ]
}
Response  412
HideShow

Precondition Failed - addresses in the request body are not set or invalid, idempotency-key or webhook-id are not set in the request Headers or webhook-id does not exist.

Headers
Content-Type: application/json
Body
{
  "statusCode": 412,
  "message": "{ERROR_MESSAGE}",
  "code": "HttpException",
  "timestamp": "2024-05-02T15:39:42.084Z",
  "path": "{REQUEST_URL}",
  "method": "{REQUEST_METHOD}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number",
      "description": "The HTTP status code of the response."
    },
    "message": {
      "type": "string",
      "description": "The message explaining the status."
    },
    "code": {
      "type": "string",
      "description": "The exceptional case that has occurred."
    },
    "timestamp": {
      "type": "string",
      "description": "The date and time when the exception happened."
    },
    "path": {
      "type": "string",
      "description": "The URL path that has been attempted to access."
    },
    "method": {
      "type": "string",
      "description": "The HTTP method (like GET, POST, PUT, DELETE) used for the request."
    }
  },
  "required": [
    "statusCode",
    "message",
    "code",
    "timestamp",
    "path",
    "method"
  ]
}
Response  500
HideShow

Error when a blockchain address has no transactions and subscribe is either not specified or set to false in the request body.

Body
``

Add to Monitoring

Add to Monitoring
PUT/integration/webhooks/{webhookId}/subscription/score/address

Add a list of addresses to monitoring

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

PUT https://{ticker}.glprotocol.com/integration/webhooks/w123/subscription/score/address
URI Parameters
HideShow
webhookId
string (required) Example: w123

The ID of the webhook

Request
HideShow
Headers
Authorization: {API_KEY}
X-Signature: {HMAC}
Body
{
  "op": "add",
  "addresses": [
    "{address}",
    "{address}"
  ]
}
Response  200
HideShow

Successfully added to monitoring

Headers
Content-Type: text/plain
Body
Data received
Response  401
HideShow

Unauthorized Request - Authorization or/and X-Signature are not set or invalid in the request Headers

Headers
Content-Type: application/json
Body
{
  "statusCode": 401,
  "message": "Unauthorized",
  "code": "HttpException",
  "timestamp": "2024-05-02T15:33:42.734Z",
  "path": "{REQUEST_URL}",
  "method": "{REQUEST_METHOD}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number",
      "description": "The HTTP status code of the response."
    },
    "message": {
      "type": "string",
      "description": "The message explaining the status."
    },
    "code": {
      "type": "string",
      "description": "The exceptional case that has occurred."
    },
    "timestamp": {
      "type": "string",
      "description": "The date and time when the exception happened."
    },
    "path": {
      "type": "string",
      "description": "The URL path that has been attempted to access."
    },
    "method": {
      "type": "string",
      "description": "The HTTP method (like GET, POST, PUT, DELETE) used for the request."
    }
  },
  "required": [
    "statusCode",
    "message",
    "code",
    "timestamp",
    "path",
    "method"
  ]
}
Response  412
HideShow

Precondition Failed - addresses in the request body are not set or invalid, webhookId does not exist.

Headers
Content-Type: application/json
Body
{
  "statusCode": 412,
  "message": "{ERROR_MESSAGE}",
  "code": "HttpException",
  "timestamp": "2024-05-02T15:39:42.084Z",
  "path": "{REQUEST_URL}",
  "method": "{REQUEST_METHOD}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number",
      "description": "The HTTP status code of the response."
    },
    "message": {
      "type": "string",
      "description": "The message explaining the status."
    },
    "code": {
      "type": "string",
      "description": "The exceptional case that has occurred."
    },
    "timestamp": {
      "type": "string",
      "description": "The date and time when the exception happened."
    },
    "path": {
      "type": "string",
      "description": "The URL path that has been attempted to access."
    },
    "method": {
      "type": "string",
      "description": "The HTTP method (like GET, POST, PUT, DELETE) used for the request."
    }
  },
  "required": [
    "statusCode",
    "message",
    "code",
    "timestamp",
    "path",
    "method"
  ]
}

Remove from Monitoring

Remove from Monitoring
PUT/integration/webhooks/{webhookId}/subscription/score/address

Remove a list of addresses from monitoring

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

PUT https://{ticker}.glprotocol.com/integration/webhooks/w123/subscription/score/address
URI Parameters
HideShow
webhookId
string (required) Example: w123

The ID of the webhook

Request
HideShow
Headers
Authorization: {API_KEY}
X-Signature: {HMAC}
Body
{
  "op": "remove",
  "addresses": [
    "{address}",
    "{address}"
  ]
}
Response  200
HideShow

Successfully removed from monitoring

Headers
Content-Type: text/plain
Body
Data received
Response  401
HideShow

Unauthorized Request - Authorization or/and X-Signature are not set or invalid in the request Headers

Headers
Content-Type: application/json
Body
{
  "statusCode": 401,
  "message": "Unauthorized",
  "code": "HttpException",
  "timestamp": "2024-05-02T15:33:42.734Z",
  "path": "{REQUEST_URL}",
  "method": "{REQUEST_METHOD}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number",
      "description": "The HTTP status code of the response."
    },
    "message": {
      "type": "string",
      "description": "The message explaining the status."
    },
    "code": {
      "type": "string",
      "description": "The exceptional case that has occurred."
    },
    "timestamp": {
      "type": "string",
      "description": "The date and time when the exception happened."
    },
    "path": {
      "type": "string",
      "description": "The URL path that has been attempted to access."
    },
    "method": {
      "type": "string",
      "description": "The HTTP method (like GET, POST, PUT, DELETE) used for the request."
    }
  },
  "required": [
    "statusCode",
    "message",
    "code",
    "timestamp",
    "path",
    "method"
  ]
}
Response  412
HideShow

Precondition Failed - addresses in the request body are not set or invalid, webhookId does not exist.

Headers
Content-Type: application/json
Body
{
  "statusCode": 412,
  "message": "{ERROR_MESSAGE}",
  "code": "HttpException",
  "timestamp": "2024-05-02T15:39:42.084Z",
  "path": "{REQUEST_URL}",
  "method": "{REQUEST_METHOD}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number",
      "description": "The HTTP status code of the response."
    },
    "message": {
      "type": "string",
      "description": "The message explaining the status."
    },
    "code": {
      "type": "string",
      "description": "The exceptional case that has occurred."
    },
    "timestamp": {
      "type": "string",
      "description": "The date and time when the exception happened."
    },
    "path": {
      "type": "string",
      "description": "The URL path that has been attempted to access."
    },
    "method": {
      "type": "string",
      "description": "The HTTP method (like GET, POST, PUT, DELETE) used for the request."
    }
  },
  "required": [
    "statusCode",
    "message",
    "code",
    "timestamp",
    "path",
    "method"
  ]
}

Delete a single Webhook

Delete a single Webhook
DELETE/integration/webhooks/{webhookId}

Delete a single webhook with the provided ID

  • ticker: btc|ltc|bsv|eth|tron|bnb|avax - The blockchain to query (as a subdomain)

Example URI

DELETE https://{ticker}.glprotocol.com/integration/webhooks/w123
URI Parameters
HideShow
webhookId
string (required) Example: w123

The ID of the webhook

Request
HideShow
Headers
Authorization: {API_KEY}
Response  200
HideShow

Successfully Deleted

Body
``
Response  404
HideShow

When a webhook with the given ID is not found, the following error is returned

Headers
Content-Type: application/json
Body
{
  "statusCode": 404,
  "message": "Webhook absent",
  "code": "HttpException",
  "timestamp": "2024-05-02T15:39:42.084Z",
  "path": "{REQUEST_URL}",
  "method": "{REQUEST_METHOD}"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "statusCode": {
      "type": "number",
      "description": "The HTTP status code of the response."
    },
    "message": {
      "type": "string",
      "description": "The message explaining the status."
    },
    "code": {
      "type": "string",
      "description": "The exceptional case that has occurred."
    },
    "timestamp": {
      "type": "string",
      "description": "The date and time when the exception happened."
    },
    "path": {
      "type": "string",
      "description": "The URL path that has been attempted to access."
    },
    "method": {
      "type": "string",
      "description": "The HTTP method (like GET, POST, PUT, DELETE) used for the request."
    }
  },
  "required": [
    "statusCode",
    "message",
    "code",
    "timestamp",
    "path",
    "method"
  ]
}

PDF reports

{userId} - obtained from authentication step from the top of the document

Get unified address pdf report

Get unified address pdf report
GET/report/address/{address}?currencyKey={currencyKey}&userId={userId}&tokenAddress={tokenAddress}&preferredCurrency={preferredCurrency}&timezone={timezone}&activePartBarValue={activePartBarValue}&direction={direction}

Get PDF report for address for all supported tokens

  • ticker: pdfgen.common - The ticker is always pdfgen.common. It is a subdomain within which it is deployed pdf report support

  • address: 0x8bd0b65a50ef5cef84fec420be7b89ed1470ceb9 - existing address

  • userId: 628dfd99581d3845bbd52988 - id of the user

  • currencyKey: btc|eth|ltc|trx|bsv - blockchain/network

  • tokenAddress: all|0x41e5560054824ea6b0732e656e3ad64e20e94e45|'' - ‘all’ - unified report for all supported tokens, ‘0x41e5560054824ea6b0732e656e3ad64e20e94e45’ - supported token address, ‘’ - leave blank for native coin token

  • preferredCurrency: USD|EUR - currency

  • timezone: Europe/Kiev - timezone

  • activePartBarValue: type|owner - group by

  • direction: 0|1|2 - 0 - is the Source of Funds, 1 - is the Use of Funds, 2 - common, Source of Funds + Use of Funds (default value if not specified).

Example URI

GET https://{ticker}.glprotocol.com/report/address/0x8bd0b65a50ef5cef84fec420be7b89ed1470ceb9?currencyKey=eth&userId=628dfd99581d3845bbd52988&tokenAddress=all&preferredCurrency=USD&timezone=Europe/Kiev&activePartBarValue=type&direction=2
URI Parameters
HideShow
address
string (required) Example: 0x8bd0b65a50ef5cef84fec420be7b89ed1470ceb9
userId
string (required) Example: 628dfd99581d3845bbd52988
currencyKey
string (required) Example: eth
tokenAddress
string (required) Example: all
preferredCurrency
string (required) Example: USD
timezone
string (required) Example: Europe/Kiev
activePartBarValue
string (required) Example: type
direction
string (required) Example: 2
Request
HideShow
Headers
x-api-key: Api_key
Response  200
HideShow
Body
report_{address}.pdf
Response  400
HideShow

Response for request with invalid address

Body
`400 Bad request
An error occurred while generating the PDF  document. Please try again`
Response  400
HideShow

Response for unauthorized request

Body
`400 Bad request
An error occurred while generating the PDF  document. Please try again`

Get token address pdf report

Get token address pdf report
GET/report/address/{address}?currencyKey={currencyKey}&userId={userId}&tokenAddress={tokenAddress}&preferredCurrency={preferredCurrency}&timezone={timezone}&activePartBarValue={activePartBarValue}&direction={direction}

Get PDF report for address for selected token

  • ticker: pdfgen.common - The ticker is always pdfgen.common. It is a subdomain within which it is deployed pdf report support

  • address: 0x8bd0b65a50ef5cef84fec420be7b89ed1470ceb9 - existing address

  • userId: 628dfd99581d3845bbd52988 - id of the user

  • currencyKey: btc|eth|ltc|trx|bsv - blockchain/network

  • tokenAddress: all|0x41e5560054824ea6b0732e656e3ad64e20e94e45|'' - ‘all’ - unified report for all supported tokens, ‘0x41e5560054824ea6b0732e656e3ad64e20e94e45’ - supported token address, ‘’ - leave blank for native coin token

  • preferredCurrency: USD|EUR - currency

  • timezone: Europe/Kiev - timezone

  • activePartBarValue: type - blockchain/network

  • direction: 0|1|2 - 0 - is the Source of Funds, 1 - is the Use of Funds, 2 - common, Source of Funds + Use of Funds (default value if not specified).

Example URI

GET https://{ticker}.glprotocol.com/report/address/0x8bd0b65a50ef5cef84fec420be7b89ed1470ceb9?currencyKey=eth&userId=628dfd99581d3845bbd52988&tokenAddress=0x41e5560054824ea6b0732e656e3ad64e20e94e45&preferredCurrency=USD&timezone=Europe/Kiev&activePartBarValue=type&direction=2
URI Parameters
HideShow
address
string (required) Example: 0x8bd0b65a50ef5cef84fec420be7b89ed1470ceb9
userId
string (required) Example: 628dfd99581d3845bbd52988
currencyKey
string (required) Example: eth
tokenAddress
string (required) Example: 0x41e5560054824ea6b0732e656e3ad64e20e94e45
preferredCurrency
string (required) Example: USD
timezone
string (required) Example: Europe/Kiev
activePartBarValue
string (required) Example: type
direction
string (required) Example: 2
Request
HideShow
Headers
x-api-key: Api_key
Response  200
HideShow
Body
report_{address}.pdf
Response  400
HideShow

Response for request with invalid address

Body
`400 Bad request
An error occurred while generating the PDF  document. Please try again`
Response  400
HideShow

Response for unauthorized request

Body
`400 Bad request
An error occurred while generating the PDF  document. Please try again`

Get token transaction pdf report

Get token transaction pdf report
GET/report/tx/{txHash}?currencyKey={currencyKey}&userId={userId}&tokenAddress={tokenAddress}&preferredCurrency={preferredCurrency}&timezone={timezone}&activePartBarValue={activePartBarValue}&direction={direction}

Get PDF report for transaction for selected token

  • ticker: pdfgen.common - The ticker is always pdfgen.common. It is a subdomain within which it is deployed pdf report support

  • txHash: 0x64dec2f706b17d86dbe59bf1a829f06d4c40f5d5bc5bae62f68b851049c3e58c - existing transaction

  • userId: 628dfd99581d3845bbd52988 - id of the user

  • currencyKey: btc|eth|ltc|trx|bsv - blockchain/network

  • tokenAddress: all|0x41e5560054824ea6b0732e656e3ad64e20e94e45|'' - ‘all’ - unified report for all supported tokens, ‘0x41e5560054824ea6b0732e656e3ad64e20e94e45’ - supported token address, ‘’ - leave blank for native coin token

  • preferredCurrency: USD|EUR - currency

  • timezone: Europe/Kiev - timezone

  • activePartBarValue: type - blockchain/network

  • direction: 0|1|2 - 0 - is the Source of Funds, 1 - is the Use of Funds, 2 - common, Source of Funds + Use of Funds (default value if not specified).

Example URI

GET https://{ticker}.glprotocol.com/report/tx/0x64dec2f706b17d86dbe59bf1a829f06d4c40f5d5bc5bae62f68b851049c3e58c?currencyKey=eth&userId=628dfd99581d3845bbd52988&tokenAddress=0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b&preferredCurrency=USD&timezone=Europe/Kiev&activePartBarValue=type&direction=2
URI Parameters
HideShow
txHash
string (required) Example: 0x64dec2f706b17d86dbe59bf1a829f06d4c40f5d5bc5bae62f68b851049c3e58c
userId
string (required) Example: 628dfd99581d3845bbd52988
currencyKey
string (required) Example: eth
tokenAddress
string (required) Example: 0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b
preferredCurrency
string (required) Example: USD
timezone
string (required) Example: Europe/Kiev
activePartBarValue
string (required) Example: type
direction
string (required) Example: 2
Request
HideShow
Headers
x-api-key: Api_key
Response  200
HideShow
Body
report_{trancaction}.pdf
Response  400
HideShow

Response for request with invalid address

Body
`400 Bad request
An error occurred while generating the PDF  document. Please try again`
Response  400
HideShow

Response for unauthorized request

Body
`400 Bad request
An error occurred while generating the PDF  document. Please try again`

FAQ

Frequently Asked Questions about the Global Ledger API. Below are common questions with concise answers to assist developers.

How can I download the YAML file?

You can download the .yaml files, which contains useful configurations for the API, by clicking the link below (it will open in a new tab):

Download advanced yaml
Download essential yaml


Why are there separate API requests for retrieving risk scores in Essential and Advanced support chains?

This is due to implementation-specific differences in the current version of the API. These discrepancies will be resolved in APIv2, where we plan to standardize risk score retrieval across both Essential and Advanced blockchain support tiers.


Should different endpoints be used when checking risk scores for transactions versus addresses?

Yes. Risk score checks are performed via distinct endpoints:

  • /api/report/tx_hash/ for transaction-level checks

  • /api/report/address for address-level checks

To evaluate specific tokens or all supported assets within a transaction or address report, use the token= query parameter. This parameter accepts either:

  • A smart contract address of the token (You may also specify any custom token by its contract address, including newly created tokens.)

  • The keyword "supported" to include all top-ranked assets (based on CoinMarketCap’s top 1000+ list)


When using the token query parameter, can I pass a ticker symbol like “USDT” instead of a contract address?

No. The token parameter only accepts:

  • A smart contract address

  • The keyword "supported"

Ticker symbols (e.g., "USDT") are not supported due to the possibility of multiple tokens sharing identical names or symbols across different blockchains.


Can I receive webhook notifications when the risk score of a transfer changes?

Webhook functionality is designed to monitor address-level changes, not individual transactions. When an address is registered for webhook monitoring, any updates to its risk score will trigger a callback in the following format:

{
  "_id": "68e4c595d173aac4c6a28e1c",
  "path": "testwebhook",
  "data": [
    {
      "address": "TJJxTXzJ7o9S89WcdwhsjpVUX1ozEWKHtc",
      "timestamp": 1759823252800,
      "score": 51
    }
  ]
}

Triggers include:

  • New incoming transactions

  • New outgoing transactions

  • Changes in risk attribution from sources or labels

Webhook events currently support only address-level monitoring (score.address.deep, score.address.standard). Transaction-level webhook support is not available.


Is there a customer-facing API guide for Counterparty Report and Entity Report that can be shared with prospects?

Yes, we provide a 5-step integration guide for both Counterparty and Entity Reports. Please note that the current flow is somewhat complex, but simplification is underway as part of the APIv2 roadmap.


Can I determine whether an address belongs to a specific VASP or CASP using the API?

Yes. If a label is available for the address, it can be retrieved via the Get Info by Address endpoint. This includes VASP/CASP attribution where applicable.


If a customer uses only the API (without GUI access) and accidentally triggers a large volume of wallet checks due to a bug, is there a way to prevent or mitigate this?

Currently, we do not offer built-in rate limiting or daily quota enforcement. If such an incident occurs, we recommend contacting our support team. We will investigate the issue collaboratively and, if appropriate, restore the account balance to its pre-incident state.


When querying GET “Address Risk Score”, I see 100 sources returned. Is pagination supported for this endpoint?

No. The endpoint returns a fixed set of the most recent 100 entries in each direction:

  • 100 for Source of Funds

  • 100 for Use of Funds

Pagination or offset parameters are not currently supported.


Is there an endpoint that allows batch retrieval of label or risk data for multiple addresses?

At this time, risk and label data can only be retrieved one address at a time. Batch queries are not yet supported.

Generated by aglio on 17 Jun 2026