Introduction
Welcome to the Remanent! You can leverage this documentation to access our Identity and Risk Management API.
Remanent is the data infrastructure for blockchain-agnostic, cross-chain, identity & risk assessment; tailored for crypto exchanges and marketplaces to identify bad actors on their platforms.
Authentication
Remanent uses API keys to allow access to the API. You can request a new Remanent API key by contacting our team.
Remanent expects for the API key to be included in all API requests to the server in a header that looks like the following:
Authorization: EXAMPLEAPIKEYVALUE
Wallet Address Screening
Register a wallet address
import requests
import json
url = "https://api.sandbox.remanent.gg/wallet/register"
payload = json.dumps({
"wallet_address": "SAMPLEWALLETADDRESS"
})
headers = {
'Authorization': 'EXAMPLEAPIKEYVALUE',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST 'https://api.sandbox.remanent.gg/wallet/register' \
--header 'Authorization: EXAMPLEAPIKEYVALUE' \
--header 'Content-Type: application/json' \
--data-raw '{
"wallet_address": "SAMPLEWALLETADDRESS"
}'
var axios = require('axios');
var data = JSON.stringify({
wallet_address: 'SAMPLEWALLETADDRESS'
});
var config = {
method: 'post',
url: 'https://api.sandbox.remanent.gg/wallet/register',
headers: {
Authorization: 'EXAMPLEAPIKEYVALUE',
'Content-Type': 'application/json'
},
data: data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
The above command returns JSON structured like this:
{
"status": "ACCEPTED"
}
This endpoint registers a wallet address for processing.
HTTP Request
POST https://api.sandbox.remanent.gg/wallet/register
Request Parameters
Parameter | Type | Description |
---|---|---|
wallet_address | Mandatory | The wallet address you wish to screen. Can be of any chain. |
Response Parameters
Parameter | Description |
---|---|
status | If the wallet address is of the correct format "ACCEPTED" will be returned, else "NOT_ACCEPTED" will be sent back. |
Retrieve a wallet address
import requests
import json
url = "https://api.sandbox.remanent.gg/wallet/retrieve"
payload = json.dumps({
"wallet_address": "SAMPLEWALLETADDRESS"
})
headers = {
'Authorization': 'EXAMPLEAPIKEYVALUE',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
curl --location --request POST 'https://api.sandbox.remanent.gg/wallet/retrieve' \
--header 'Authorization: EXAMPLEAPIKEYVALUE' \
--header 'Content-Type: application/json' \
--data-raw '{
"wallet_address": "SAMPLEWALLETADDRESS"
}'
var axios = require('axios');
var data = JSON.stringify({
wallet_address: 'SAMPLEWALLETADDRESS'
});
var config = {
method: 'post',
url: 'https://api.sandbox.remanent.gg/wallet/retrieve',
headers: {
Authorization: 'EXAMPLEAPIKEYVALUE',
'Content-Type': 'application/json'
},
data: data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
The above command returns JSON structured like this:
{
"status": "COMPLETED",
"created_at": "2023-02-10T07:58:00.710156+00:00",
"updated_at": "2023-02-10T07:58:07.086979+00:00",
"state": "ALL_RULES_COMPLETED",
"wallet_address": "SAMPLEWALLETADDRESS",
"risk": {
"is_sanctioned": true,
"identifications": [
{
"category": "sanctions",
"name": "SANCTIONS: OFAC SDN John Doe 2023-02-01 SAMPLEWALLETADDRESS",
"description": "This specific address SAMPLEWALLETADDRESS within the cluster has been identified as belonging to OFAC SDN",
"url": "https://home.treasury.gov/policy-issues/financial-sanctions/recent-actions/sample"
}
],
"particulars": {
"mixer": false,
"fake_kyc": false,
"cybercrime": false,
"data_source": "MistBox",
"is_contract": false,
"blacklist_doubt": false,
"financial_crime": false,
"stealing_attack": false,
"money_laundering": false,
"phishing_activities": false,
"blackmail_activities": true,
"darkweb_transactions": false,
"honeypot_related_address": false,
"malicious_contracts_created": 0,
"malicious_mining_activities": true
}
},
"meta": {
"first_seen_at": "2021-03-03T15:26:44+00:00",
"last_seen_at": "2022-02-07T11:15:06+00:00"
},
"portfolio": {
"total": {
"positions": 5.17221992
},
"particulars": {
"locked": 0,
"staked": 0,
"wallet": 5.17221992,
"borrowed": 0,
"deposited": 0
},
"distribution": {
"xdai": 0,
"aurora": 0,
"fantom": 0,
"solana": 0,
"polygon": 5.17221992,
"arbitrum": 0,
"ethereum": 0,
"loopring": 0,
"optimism": 0,
"avalanche": 0,
"binance-smart-chain": 0
}
}
}
This endpoint retrieves the data related to the wallet address you registered.
HTTP Request
POST https://api.sandbox.remanent.gg/wallet/retrieve
Request Parameters
Parameter | Type | Description |
---|---|---|
wallet_address | Mandatory | The wallet address you wish to get the details about. Should be one you registered. |
Response Parameters
status | The state of processing of the wallet address, if "NEW" it means analysis is yet to begin, "PROCESSING" means data is being populated, "COMPLETED" means data has finished getting updated |
---|---|
created_at | Timestamp of when the wallet_address was registered |
updated_at | Timestamp of when the wallet_address was last updated |
state | At what state of "PROCESSING" the wallet_address is at. |
wallet_address | The wallet_address against which data is collated |
risk.is_sanctioned | If the wallet address is part of any government sanction list |
risk.identifications | Array of sources where the walllet address was identified |
risk.identifications.category | Type of risk |
risk.identifications.name | Name of the risk |
risk.identifications.description | Description of the risk |
risk.identifications.url | Source of the risk |
risk.particulars | Particulars of the risk |
risk.particulars.mixer | Whether user was involved with a mixer |
risk.particulars.fake_kyc | Whether user was involved with providing fake kyc |
risk.particulars.cybercrime | Whether user was involved with any cyber crime |
risk.particulars.data_source | Data source of the particulars information |
risk.particulars.is_contract | Whether address is a smart contract |
risk.particulars.blacklist_doubt | Whether user was blacklisted anywhere |
risk.particulars.financial_crime | Whether user was involved with financial crime |
risk.particulars.stealing_attack | Whether user was involved with defrauding someone |
risk.particulars.money_laundering | Whether user was involved with money laundering |
risk.particulars.phishing_activities | Whether user was involved with phising activities |
risk.particulars.blackmail_activities | Whether user was involved with blackmailing someone |
risk.particulars.darkweb_transactions | Whether user was involved with darkweb transactions |
risk.particulars.honeypot_related_address | Whether address is a honeypot address |
risk.particulars.malicious_contracts_created | # of malicious contracts created |
risk.particulars.malicious_mining_activities | Whether user was involved illigeal crypto mining |
meta.first_seen_at | Timestamp of when the wallet_address was first seen on any platform |
meta.last_seen_at | Timestamp of when the wallet_address was last seen on any platform |
portfolio.total | Aggregate of the wallet address details (in USD) |
portfolio.total.positions | Current net worth of the wallet_address |
portfolio.particulars | Breakdown of the wallet address networth based on state (in USD) |
portfolio.particulars.locked | Total value of locked assets |
portfolio.particulars.staked | Total value of staked asset |
portfolio.particulars.borrowed | Total value of borrowed assets |
portfolio.particulars.wallet | Total value of asset in the wallet |
portfolio.particulars.deposited | Total value of deposited assets |
portfolio.distribution | Breakdown of the wallet address networth based on EVM compatible chain (in USD) |
portfolio.distribution.xdai | Total value of assets on xdai chain |
portfolio.distribution.aurora | Total value of assets on aurora chain |
portfolio.distribution.fantom | Total value of assets on fantom chain |
portfolio.distribution.solana | Total value of assets on solana chain |
portfolio.distribution.polygon | Total value of assets on polygon chain |
portfolio.distribution.arbitrum | Total value of assets on arbitrum chain |
portfolio.distribution.ethereum | Total value of assets on ethereum chain |
portfolio.distribution.loopring | Total value of assets on loopring chain |
portfolio.distribution.optimism | Total value of assets on optimism chain |
portfolio.distribution.avalanche | Total value of assets on avalanche chain |
portfolio.distribution.binance-smart-chain | Total value of assets on BSC |
Errors
Remanent IRM API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- The wallet address requested is hidden for administrators only. |
404 | Not Found -- The specified wallet address could not be found. |
405 | Method Not Allowed -- You tried to access a wallet address with an invalid method. |
406 | Not Acceptable -- You requested a format that isn't json. |
410 | Gone -- The wallet address requested has been removed from our servers. |
418 | I'm a teapot. |
429 | Too Many Requests -- You're requesting too many wallet address! Slow down! |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |