NAV
shell python javascript

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.