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 whensuccess: false
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 NameGET/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
- name
string(required) Example: .*bybit.*Regex filter for entity name
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 IDGET/api-labeling/entity?ids[]={id}
Retrieve list of entities filtered by id
- ticker:
common- The subdomain to system services
Example URI
- id
string(required) Example: 65a8e2c98bc257cd15e58c41entity ID
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 CoinGET/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
- tx_hash
string(required) Example: 76a914db4d...88acThe transaction hash
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Transaction Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 TokenGET/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
- tx_hash
string(required) Example: 76a914db4d...88acThe transaction hash
- token
string(optional) Example: 0xdac17f958d2ee523a2206206994597c13d831ec7The blockchain token contract address.
supported- unified search of all supported tokens,- search by native coin,{token_contract_address}- search by specific token.
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Transaction Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 Unified search ¶
By Unified searchGET/api/report/tx_hash/{tx_hash}?token={token}
Calculate and retrieve the risk score of a specific transaction by all supported tokens.
- ticker:
eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
- tx_hash
string(required) Example: 76a914db4d...88acThe transaction hash
- token
string(optional) Example: 0xdac17f958d2ee523a2206206994597c13d831ec7The blockchain token contract address.
supported- unified search of all supported tokens,- search by native coin,{token_contract_address}- search by specific token.
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Transaction Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"messageType": "Error",
"meta": {
"spamAmount": 0,
"spamCount": 0,
"cashbackCount": 0
},
"status": 404,
"code": 404,
"success": false,
"path": "/api/report/tx_hash/0000?token=supported",
"method": "GET",
"timestamp": "1/12/2026, 1:05:56 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 FundsGET/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
- tx_hash
string(required) Example: 76a914db4d...88acThe transaction hash
- direction
number(optional) Example: 0The 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).
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Transaction Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 ScoreGET/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
- tx_hash
string(required) Example: 76a914db4d...88acThe transaction hash
- project_totalFunds
number(required) Example: 1A query parameter used to pick
totalFundsfield (representing the risk score) from the response.
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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)"
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Transaction Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}400Parameter $project[totalFunds]= must be equal to one of the allowed values 0|1. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 AlertsGET/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
- tx_hash
string(required) Example: 76a914db4d...88acThe transaction hash
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Transaction Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 CoinGET/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
- address
string(required) Example: 1BoatSLRHtKNngkdXEeobR76b53LETtpyTThe blockchain address
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}400Address is Not Valid. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Address Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 TokensGET/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
- address
string(required) Example: 0xca258d51a825c82d16ce54dc61b8abc95021d17bThe blockchain address
- token
string(optional) Example: 0xdac17f958d2ee523a2206206994597c13d831ec7The blockchain token contract address.
supported- unified search of all supported tokens,- search by native coin,{token_contract_address}- search by specific token.
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}400Address is Not Valid. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}400Contract Address is Not Allowed For Risk Report. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Address Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 Unified search ¶
By Unified searchGET/api/report/address/{address}?token={token}
Calculate and retrieve the risk score of a blockchain address based on historical transactions by all supported coins.
- ticker:
eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
- address
string(required) Example: 0x8bd0b65a50ef5cef84fec420be7b89ed1470ceb9The blockchain address
- token
string(optional) Example: 0xdac17f958d2ee523a2206206994597c13d831ec7The blockchain token contract address.
supported- unified search of all supported tokens,- search by native coin,{token_contract_address}- search by specific token.
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}400Address is Not Valid. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Address Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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=supported",
"method": "GET",
"timestamp": "1/12/2026, 1:22: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"
}
}
}
}
}By direction Use of Funds ¶
By direction Use of FundsGET/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
- address
string(required) Example: 1BoatSLRHtKNngkdXEeobR76b53LETtpyTThe blockchain address
- direction
number(optional) Example: 2The 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).
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}400Address is Not Valid. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Address Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 ScoreGET/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
- address
string(required) Example: 0xca258d51a825c82d16ce54dc61b8abc95021d17bThe blockchain address
- project_totalFunds
number(required) Example: 1A query parameter used to pick
totalFundsfield (representing the risk score) from the response.
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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)"
}
}
}400Address is Not Valid. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}400Contract Address is Not Allowed For Risk Report. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Address Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}400Parameter $project[totalFunds]= must be equal to one of the allowed values 0|1. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 AlertsGET/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
- address
string(required) Example: 1BoatSLRHtKNngkdXEeobR76b53LETtpyTThe blockchain address
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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."
}
}
}400Address is Not Valid. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Address Not Found. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 CoinGET/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
- address
string(required) Example: TRBqACCXaLTYsKxWzDwbfyN1shtWs479TCThe blockchain address
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}400Address is Not Valid. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 TokenGET/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
- address
string(required) Example: TRBqACCXaLTYsKxWzDwbfyN1shtWs479TCThe blockchain address
- contract
string(required) Example: contractThe blockchain token contract address
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}400Address is Not Valid. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 TransactionGET/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
- essential_blockchain_ticker
string(required) Example: {essential_blockchain_ticker}The essential blockchain to query
- tx_hash
string(required) Example: 0xda852cac14840170ae6655c3f00712bfe67fd09c09f98c1aafb450945c5be5a1The transaction hash
- direction
string(required) Example: 20- 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: 0xc2132d05d31c914a87c6611c10748aeb04b58e8fThe essential blockchain token contract address.
- (blank value) search by native coin,{token_contract_address}- search by specific token.
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}404Transaction Not Found
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Transaction Hash Not Specified. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 AddressGET/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
- essential_blockchain_ticker
string(required) Example: {essential_blockchain_ticker}The essential blockchain to query
- address
string(required) Example: 0x85b4Ce35C2e36aC6405455A3D3Ae947972864f66The address
- direction
string(required) Example: 20- 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: 0xc2132d05d31c914a87c6611c10748aeb04b58e8fThe essential blockchain token contract address.
- (blank value) search by native coin,{token_contract_address}- search by specific token.
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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"
}
}
}404Address Not Found
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Address Not Specified. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 TokensGET/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
- essential_blockchain_ticker
string(required) Example: {essential_blockchain_ticker}The essential blockchain to query
- address
string(required) Example: 0xF3604FA7edF245f344acd0f4083E409BB2fEfd98The address
- supported
boolean(optional) Example: truetruereturns only supported tokens,falseor omitted returns all detected tokens for the address- limit
number(optional) Example: 1000Query parameter accepted by the endpoint. In observed responses for this address, the returned item count did not change when
$limitwas reduced
Headers
x-api-key: {Api_key}200Headers
Content-Type: application/jsonBody
{
"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": ""
}
]
}400Address is Not Valid. Example from live request.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}404Address Not Specified. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request. Example with Wrapper.
Headers
Content-Type: application/jsonBody
{
"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 MonitoringPOST/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
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#"
}201Successfully added to monitoring.
Headers
Content-Type: application/jsonBody
{
"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."
}
}
}
}
}201Address is already present in monitoring. The endpoint may still return HTTP 201 with an error payload.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}400Bad Request - address is invalid or the request body is malformed.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request.
Headers
Content-Type: application/jsonBody
{
"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 MonitoringDELETE/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
- address
string(required) Example: 18VWHjMt4ixHddPPbs6righWTs3Sg2QNcnThe blockchain address to remove from monitoring.
Headers
x-api-key: {Api_key}200Successfully removed from monitoring.
Headers
Content-Type: application/jsonBody
{
"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."
}
}
}400Bad Request - address is invalid.
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}
}
}401Unauthorized Request.
Headers
Content-Type: application/jsonBody
{
"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 ¶
Receive Global Ledger events — address score updates and alerts — on your own HTTPS endpoint.
Webhook delivery uses two building blocks:
-
A webhook endpoint is a callback destination: a URL plus an enabled state, identified by a
webhookIdyou choose. -
A webhook binding selects which events are delivered to that destination. A binding is an event route: a
type, an optionalsubType, and an optionalcoin.
One endpoint may have any number of bindings. Create the endpoint once, then attach one binding per event route you want to receive. Bindings are persistent by default; a one-shot binding (isOneShot: true) is removed after its first successful delivery and is meant only for temporary callbacks.
Quick start:
-
Create a webhook endpoint (
PUT /integration/webhooks/{webhookId}). -
Attach a binding for the event route you need (
POST /integration/webhooks/{webhookId}/bindings). -
For
monitoring.score, make sure the address is monitored for your account — creating a binding does not add addresses to monitoring. Foralert, configure the alert in your Global Ledger account. -
Receive and verify callbacks on your URL (see Receiving Callbacks).
Event Routes
type |
subType |
coin |
Delivered when |
|---|---|---|---|
monitoring.score |
none (must be omitted) | optional | The score of a monitored address is updated |
alert |
monitoring |
optional | A configured alert produces a new alert event |
alert |
risk-report |
optional | A configured risk-report alert produces a new alert event |
alert |
behavior-alert |
optional | A behavior alert produces a new alert event |
Only the values above are accepted. monitoring.score takes no subType. Omit subType or coin when not needed — never send null, "null", or an empty string. On a blockchain-specific subdomain, an explicit coin must match that blockchain.
A standalone client walkthrough is available here: v1 Webhooks — Client Integration Guide.
Authorization
Authenticate every webhook operation with your API key passed as the Authorization header value, without a Bearer prefix. This is the recommended authorization method for all webhook operations, and every example in this section uses it.
X-Signature Calculation
POST and PUT requests must additionally carry an X-Signature header; GET and DELETE requests need only Authorization. The signature (hmac variable) is calculated from the API key, the API secret, and the exact JSON request body:
var input = { API_KEY } + "." + JSON.stringify( JSON.parse( request.data ) );
var HMAC = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(input,{ API_SECRET }));
Receiving Callbacks
Every delivery is an HTTPS POST to the endpoint URL with these headers:
Authorization: {API_KEY}
X-SIGNATURE: {HMAC}
X-GL-WEBHOOK-ID: {WEBHOOK_ID}
X-GL-WEBHOOK-TYPE: monitoring.score
X-GL-WEBHOOK-COIN: btc
X-GL-WEBHOOK-SUBTYPE is present when the event route has a subtype; X-GL-WEBHOOK-COIN is present when the event has a coin. Use these route headers to dispatch events.
To verify a callback, recompute the HMAC with the X-Signature Calculation formula — input {API_KEY}. plus the compact JSON body exactly as delivered — and compare it with the X-SIGNATURE header.
A monitoring.score callback body is an array of score updates:
[
{
"address": "{ADDRESS}",
"score": 42.7,
"timestamp": "2026-07-21T12:34:56.000Z",
"coin": "btc"
}
]
An alert callback body contains the new alert events:
{
"subjects": [
{
"subjectId": "664f73107e88eb9ebaafb5d4",
"alertId": "664f73107e88eb9ebaafb5d5",
"title": "High risk exposure",
"priority": 2,
"address": "{ADDRESS}",
"directTx": ""
}
]
}
Additional fields may be present in either body.
The three operations at the end of this section (Create Subscription, Add to Monitoring, Remove from Monitoring) predate webhook bindings. They are deprecated and planned for removal in a future release and remain only for existing integrations.
Create/Update Webhook ¶
Create/Update WebhookPUT/integration/webhooks/{webhookId}
Creates or updates a webhook endpoint. The endpoint owns the callback URL and enabled state; event routing is configured through webhook bindings.
The legacy events field is stored and returned for compatibility only — it is ignored for routing, so omit it and configure routing with bindings instead.
- ticker:
btc|ltc|bsv|eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
- webhookId
string(required) Example: w123The ID of the webhook
Headers
Authorization: {API_KEY}
X-Signature: {HMAC}Body
{
"enabled": true,
"url": "{CALLBACK_URL}"
}200Successfully Updated
Body
``201Successfully Created
Headers
Content-Type: application/jsonBody
{
"id": "{WEBHOOK_ID}",
"enabled": true,
"events": [],
"url": "{CALLBACK_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 endpoint can receive callbacks"
},
"events": {
"description": "Legacy metadata retained for compatibility; ignored for event routing"
},
"url": {
"type": "string",
"description": "The URL where callbacks are delivered"
}
},
"required": [
"id",
"enabled",
"url"
]
}304Not Modified
401Unauthorized Request - Authorization or/and X-Signature are not set or invalid in the request Headers
Headers
Content-Type: application/jsonBody
{
"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"
]
}Get a single Webhook ¶
Get a single WebhookGET/integration/webhooks/{webhookId}
Get a single webhook endpoint with the provided ID
- ticker:
btc|ltc|bsv|eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
- webhookId
string(required) Example: w123The ID of the webhook
Headers
Authorization: {API_KEY}200The endpoint response represents a webhook object.
Headers
Content-Type: application/jsonBody
{
"id": "{WEBHOOK_ID}",
"enabled": true,
"events": [],
"url": "{CALLBACK_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 endpoint can receive callbacks."
},
"events": {
"description": "Legacy metadata retained for compatibility; ignored for event routing."
},
"url": {
"type": "string",
"description": "The URL to which callbacks are delivered."
}
},
"required": [
"id",
"enabled",
"url"
]
}401Unauthorized Request - Authorization is not set or invalid in the request Headers
Headers
Content-Type: application/jsonBody
{
"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"
]
}404Webhook Not Found
Headers
Content-Type: application/jsonBody
{
"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 WebhooksGET/integration/webhooks/
Get all the webhook endpoints created by user
- ticker:
btc|ltc|bsv|eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
Headers
Authorization: {API_KEY}200The endpoint response represents a list of webhook objects.
Headers
Content-Type: application/jsonBody
[
{
"id": "{WEBHOOK_ID_1}",
"enabled": true,
"events": [],
"url": "{CALLBACK_URL}"
},
{
"id": "{WEBHOOK_ID_2}",
"enabled": true,
"events": [],
"url": "{CALLBACK_URL}"
}
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array"
}401Unauthorized Request - Authorization is not set or invalid in the request Headers
Headers
Content-Type: application/jsonBody
{
"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"
]
}Delete a single Webhook ¶
Delete a single WebhookDELETE/integration/webhooks/{webhookId}
Delete a single webhook endpoint with the provided ID. Deleting an endpoint also removes its bindings.
- ticker:
btc|ltc|bsv|eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
- webhookId
string(required) Example: w123The ID of the webhook
Headers
Authorization: {API_KEY}200Successfully Deleted
Body
``404When a webhook with the given ID is not found, the following error is returned
Headers
Content-Type: application/jsonBody
{
"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"
]
}Create Webhook Binding ¶
Create Webhook BindingPOST/integration/webhooks/{webhookId}/bindings
Attaches an event route to an existing webhook endpoint. The binding, not the webhook endpoint, owns type, subType, coin, and isOneShot.
Bindings are persistent by default. Set isOneShot: true only when a single temporary delivery is required — a one-shot binding is consumed after its first successful delivery.
For alert routes, add one supported subType, for example {"type": "alert", "subType": "risk-report", "coin": "btc"}.
- ticker:
btc|ltc|bsv|eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
- webhookId
string(required) Example: w123The ID of the webhook
Headers
Authorization: {API_KEY}
X-Signature: {HMAC}Body
{
"type": "monitoring.score",
"coin": "btc"
}201Webhook binding created
Headers
Content-Type: application/jsonBody
{
"id": "{BINDING_ID}",
"webhookId": "{WEBHOOK_ID}",
"type": "monitoring.score",
"coin": "btc",
"isOneShot": false,
"createdAt": "2026-07-21T12:00:00.000Z"
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the created binding. Use it to delete the binding later."
},
"webhookId": {
"type": "string",
"description": "The ID of the webhook endpoint the binding is attached to."
},
"type": {
"type": "string",
"description": "The event type routed by this binding."
},
"coin": {
"type": "string",
"description": "The blockchain scope of the route. Omitted when the binding is not coin-scoped."
},
"isOneShot": {
"type": "boolean",
"description": "Whether the binding is removed after its first successful delivery."
},
"createdAt": {
"type": "string",
"description": "The date and time when the binding was created."
}
},
"required": [
"id",
"webhookId",
"type",
"isOneShot",
"createdAt"
]
}401Unauthorized Request - Authorization or/and X-Signature are not set or invalid in the request Headers
Headers
Content-Type: application/jsonBody
{
"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"
]
}404Webhook Not Found
Headers
Content-Type: application/jsonBody
{
"statusCode": 404,
"message": "Webhook absent",
"code": "HttpException",
"timestamp": "2024-05-02T15:39:42.084Z",
"path": "{REQUEST_URL}",
"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"
}
}
}412Precondition Failed - the event route is not registered (unknown type or subType), subType is sent with monitoring.score, an optional field is sent as a null-like value, or coin does not match the blockchain subdomain.
Headers
Content-Type: application/jsonBody
{
"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"
]
}List Webhook Bindings ¶
List Webhook BindingsGET/integration/webhooks/{webhookId}/bindings{?type,subType,coin,isOneShot}
Lists event bindings attached to one webhook endpoint. Omitted subType and coin filters mean the default route dimension; do not send null-like values.
- ticker:
btc|ltc|bsv|eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
- webhookId
string(required) Example: w123The ID of the webhook
- type
string(optional) Example: monitoring.scoreFilter by event type (
monitoring.scoreoralert)- subType
string(optional) Example: risk-reportFilter by event subtype (
monitoring,risk-report, orbehavior-alert)- coin
string(optional) Example: btcFilter by blockchain scope
- isOneShot
string(optional) Example: falseFilter by one-shot flag (
trueorfalse)
Headers
Authorization: {API_KEY}200Webhook bindings list
Headers
Content-Type: application/jsonBody
[
{
"id": "{BINDING_ID}",
"webhookId": "{WEBHOOK_ID}",
"type": "monitoring.score",
"coin": "btc",
"isOneShot": false,
"createdAt": "2026-07-21T12:00:00.000Z"
}
]401Unauthorized Request - Authorization is not set or invalid in the request Headers
Headers
Content-Type: application/jsonBody
{
"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"
]
}404Webhook Not Found
Headers
Content-Type: application/jsonBody
{
"statusCode": 404,
"message": "Webhook absent",
"code": "HttpException",
"timestamp": "2024-05-02T15:39:42.084Z",
"path": "{REQUEST_URL}",
"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"
}
}
}List all Webhook Bindings ¶
List all Webhook BindingsGET/integration/webhook-bindings{?type,subType,coin,isOneShot}
Lists bindings across all webhook endpoints of the current user. Accepts the same filters as the per-endpoint list.
- ticker:
btc|ltc|bsv|eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
- type
string(optional) Example: alertFilter by event type (
monitoring.scoreoralert)- subType
string(optional) Example: risk-reportFilter by event subtype (
monitoring,risk-report, orbehavior-alert)- coin
string(optional) Example: btcFilter by blockchain scope
- isOneShot
string(optional) Example: falseFilter by one-shot flag (
trueorfalse)
Headers
Authorization: {API_KEY}200Webhook bindings list
Headers
Content-Type: application/jsonBody
[
{
"id": "{BINDING_ID}",
"webhookId": "{WEBHOOK_ID}",
"type": "alert",
"subType": "risk-report",
"coin": "btc",
"isOneShot": false,
"createdAt": "2026-07-21T12:00:00.000Z"
}
]401Unauthorized Request - Authorization is not set or invalid in the request Headers
Headers
Content-Type: application/jsonBody
{
"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"
]
}Delete Webhook Binding ¶
Delete Webhook BindingDELETE/integration/webhooks/{webhookId}/bindings/{bindingId}
Deletes one binding by its ID — the recommended way to remove an event route.
For bulk cleanup there are also selector-based deletions: POST /integration/webhooks/{webhookId}/bindings/delete-by-selector (one endpoint) and POST /integration/webhook-bindings/delete-by-selector (all endpoints of the current user). Both are signed POST requests taking {"type", "subType", "coin"} selectors that match exactly by default — an omitted subType or coin matches only bindings without that field; deleting across those dimensions requires explicit includeSubTypes/includeCoins flags plus confirm: true. They respond with {"deletedCount": <number>}. Prefer deletion by binding ID unless you really need bulk cleanup.
- ticker:
btc|ltc|bsv|eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
- webhookId
string(required) Example: w123The ID of the webhook
- bindingId
string(required) Example: {BINDING_ID}The ID of the binding to delete
Headers
Authorization: {API_KEY}200Successfully Deleted
Body
``401Unauthorized Request - Authorization is not set or invalid in the request Headers
Headers
Content-Type: application/jsonBody
{
"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"
]
}404Webhook Not Found
Headers
Content-Type: application/jsonBody
{
"statusCode": 404,
"message": "Webhook absent",
"code": "HttpException",
"timestamp": "2024-05-02T15:39:42.084Z",
"path": "{REQUEST_URL}",
"method": "DELETE"
}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"
}
}
}Create Subscription - Deprecated ¶
Create Subscription - DeprecatedPOST/integration/score/address
Deprecated and planned for removal in a future release. Prefer a persistent monitoring.score binding plus the monitoring lifecycle; use a one-shot binding when a temporary score callback is required.
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
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: {UNIQUE_REQUEST_ID}
webhook-id: {WEBHOOK_ID}Body
{
"addresses": [
"{ADDRESS}",
"{ADDRESS}"
],
"subscribe": true || false // set true to receive updated score after each new address transaction
}202Subscription Successfully Created
Headers
Content-Type: text/htmlBody
Data received202Success Response when a request is done with the same idempotency-key
Headers
Content-Type: application/jsonBody
{
"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"
}
}
}401Unauthorized Request - Authorization or/and X-Signature are not set or invalid in the request Headers
Headers
Content-Type: application/jsonBody
{
"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"
]
}412Precondition 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/jsonBody
{
"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"
]
}500Error 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 - Deprecated ¶
Add to Monitoring - DeprecatedPUT/integration/webhooks/{webhookId}/subscription/score/address
Deprecated and planned for removal in a future release. Prefer a persistent monitoring.score binding plus the monitoring lifecycle for score delivery.
Add a list of addresses to monitoring
- ticker:
btc|ltc|bsv|eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
- webhookId
string(required) Example: w123The ID of the webhook
Headers
Authorization: {API_KEY}
X-Signature: {HMAC}Body
{
"op": "add",
"addresses": [
"{ADDRESS}",
"{ADDRESS}"
]
}200Successfully added to monitoring
Headers
Content-Type: text/plainBody
Data received401Unauthorized Request - Authorization or/and X-Signature are not set or invalid in the request Headers
Headers
Content-Type: application/jsonBody
{
"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"
]
}412Precondition Failed - addresses in the request body are not set or invalid, webhookId does not exist.
Headers
Content-Type: application/jsonBody
{
"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 - Deprecated ¶
Remove from Monitoring - DeprecatedPUT/integration/webhooks/{webhookId}/subscription/score/address
Deprecated and planned for removal in a future release. Removal stays paired with the deprecated add operation; new integrations should manage score delivery through bindings and the monitoring lifecycle.
Remove a list of addresses from monitoring
- ticker:
btc|ltc|bsv|eth|tron|bnb|avax- The blockchain to query (as a subdomain)
Example URI
- webhookId
string(required) Example: w123The ID of the webhook
Headers
Authorization: {API_KEY}
X-Signature: {HMAC}Body
{
"op": "remove",
"addresses": [
"{ADDRESS}",
"{ADDRESS}"
]
}200Successfully removed from monitoring
Headers
Content-Type: text/plainBody
Data received401Unauthorized Request - Authorization or/and X-Signature are not set or invalid in the request Headers
Headers
Content-Type: application/jsonBody
{
"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"
]
}412Precondition Failed - addresses in the request body are not set or invalid, webhookId does not exist.
Headers
Content-Type: application/jsonBody
{
"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"
]
}PDF reports ¶
{userId} - obtained from authentication step from the top of the document
Get unified address pdf report (Advanced Support Only) ¶
Get unified address pdf report (Advanced Support Only)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 alwayspdfgen.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|bnb|avax- 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
- 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
Headers
x-api-key: Api_key200Body
report_{address}.pdf400Response for request with invalid address
Body
`400 Bad request
An error occurred while generating the PDF document. Please try again`400Response for unauthorized request
Body
`400 Bad request
An error occurred while generating the PDF document. Please try again`Get token address pdf report (Advanced Support Only) ¶
Get token address pdf report (Advanced Support Only)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 alwayspdfgen.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|bnb|avax- 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
- 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
Headers
x-api-key: Api_key200Body
report_{address}.pdf400Response for request with invalid address
Body
`400 Bad request
An error occurred while generating the PDF document. Please try again`400Response for unauthorized request
Body
`400 Bad request
An error occurred while generating the PDF document. Please try again`Get token transaction pdf report (Advanced Support Only) ¶
Get token transaction pdf report (Advanced Support Only)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 alwayspdfgen.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|bnb|avax- 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
- 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
Headers
x-api-key: Api_key200Body
report_{trancaction}.pdf400Response for request with invalid address
Body
`400 Bad request
An error occurred while generating the PDF document. Please try again`400Response 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/addressfor 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.