Introduction
Welcome to Safeheron’s Developer Documents.Here, users can explore our range of APIs, designed to provide you with complete control over managing team and streamlining transaction processes. Alongside our powerful APIs, we also offer webhook push notification, enabling users to receive real-time event notifications related to their team.
Through Safeheron's API, you can:
- Initiate transactions and receive real-time status updates.
- Utilize Safeheron's API Co-Signer to set up automatic transaction signing.
- Manage your wallet accounts.
- Verify wallet addresses.
- ......
All transactions are recorded in Safeheron's Web Console, history, and webhook.
Getting Started
Overview
To configure webhook and create API accounts, a member with 'Manage API' permission can log into Safeheron Web Console, and navigates to Settings -> API
. After creating an API account, users can access the Safeheron API using the corresponding API key.
API Authentication
Safeheron utilizes a secure hybrid encryption approach for its API interfaces, leveraging both symmetric and asymmetric encryption techniques during requests and utilizing asymmetric private keys to sign request parameters. The symmetric encryption algorithm of choice is AES-256, while the asymmetric encryption and signature algorithm is RSA-4096. The exact processes are outlined below:
- Serialize the business response parameters into a JSON string and randomly generate a 32-byte AES key and a 16-byte initialization vector (IV).
- Use the AES key and IV to encrypt the JSON string(Algorithm: AES/GCM/NoPadding), and encode the encrypted result using base64. This encoded result should be used as the
bizContent
field in the request parameters. - Use Safeheron API RSA public key to encrypt the 48-byte AES key + IV. Encode the encrypted result using base64 and use it as
key
field in the request parameters(Algorithm: RSA/ECB/OAEPWithSHA-256AndMGF1Padding). - According to dictionary key ascending order, serialize all request parameters (excluding rsaType and aesType) into the format as
apiKey=...&bizContent=...&key=...×tamp=...
. - Sign the serialized request string via your API RSA private key(Algorithm: SHA256WithRSA). Encode the resulting signature in base64 and use it as the
sig
field in request parameters.
Safeheron will encrypt and sign the response parameters using the same procedure. You can decrypt the parameters and verify the signature using the following steps:
- According to dictionary key ascending order, serialize all response data (excluding rsaType and aesType) into the format as
bizContent=...&code=...&key=...&message=...×tamp=...
. - Use your Safeheron API RSA public key, serialized response string and the
sig
field in the response to verify(Algorithm: SHA256WithRSA) the signature. If the verification is successful, proceed with decrypting the response data. - Decrypt
key
field in response data via your API RSA private key and obtain the random AES key and IV(Algorithm: RSA/ECB/OAEPWithSHA-256AndMGF1Padding). - Decrypt
bizContent
field in response data via the AES key and IV and obtain the plaintext of response data(Algorithm: AES/GCM/NoPadding).
Generate the RSA private key via OpenSSL (api_private.pem
is your API RSA private key):
openssl genpkey -out api_private.pem -algorithm RSA -pkeyopt rsa_keygen_bits:4096
Generate corresponding public key to your RSA private key via OpenSSL (api_public.pem
is your API RSA public key):
openssl rsa -in api_private.pem -out api_public.pem -pubout
Note:
- You only need to set up your API RSA public key in Safeheron Console. Please keep your API RSA private key safely to avoid security risks caused by leakage.
IP Whitelisting
When calling the Safeheron API, requests can only be initiated from IP addresses that have been added to your whitelist. You must specify the IP address from which the API Key will be used when creating it.
Example Request
Request Base URL
https://api.safeheron.vip
Request Parameters Before Encryption
Example Request Parameters Before Encryption
{
"apiKey": "341916e58af445f8aadeb95170218e37",
"timestamp": "1623038312088",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"page": 1,
"pageSize": 1
}
}
For a specific format, please refer to request parameter of each interface. Please check the right side for the example.
Request Parameters After Encryption
Example Request Parameters After Encryption
{
"apiKey": "341916e58af445f8aadeb95170218e37",
"timestamp": "1628652100447",
"bizContent": "qjFMZXs2n+CxnrNGoaZmGrKQzPosy6QbWEumCMkGOEw=",
"key": "gYZvuXdJADuaLYMU3z8q5vOtld62PSaPxrrhhr4UGwWbZm7Pw3/VImzHrd3oNy1XT8R55V7pbpQOBVdbmTev/rESnuaXlGofkB04JWAaRCIPytEKMHUNXZXEU9GLVppYst7bgiekMDIDScS4AkD75eDG8zru5Gr+gTxU4AYyHSzB0deQnxmNRemwZn+jaNgNs7WeBcuQWR1Cq2+1At8FlAqF5XzEaeQ3x1Q0N3iaLzSiXHQRYqP1Q6V6/aiIXchin/X9bBRYL618utjm4k0qoXU8Rw2JeEKzn7m2ShyyQQ31zX/rQ1xf0ar5PDtJPU/qYp9Kr4oVtcN6yHdG802nLqpGYlHlMvxy9vpnGFXb9oxh4xYnp0qRUfKLyJIylc3qhq6spHyWnuC5XV1S4lH+rIPNF1icV08ex7pjps2jvTICBzIIPExBamh1n00RcxZbkGqxYfRZ7SLTUCH06EaV5lP8yXNe3fNWjHk4mppaVDj0QFagqTzBM9AwMfHs1dOeDmcwkTacKQsvNRu3l5uZFQYkaUeVB9m3AhKw3lyl2oJIfJgYeBLJEHMGFVZXP92z8+J5KrZEVfkL8F80XkB3sXRP0BiIv/9Mm4VrjopYoDWyXttCysY0lJ9XImRyE7GkSy2sjmW0BCsrECoVHWh73s9o7Kw0uIegFaitch24GsM=",
"sig": "ZPQcL1aIxMrA6HTq7RWWS8FZS08zSOkS69WohcBw1bDr4Qv2Wkrp2t+PNHMh3TmDUnOmUOiv7mBs/sOw08rhgPHqAU/qtvc1lzJFFOnPp5MBmDgffD1auwm7icGzm3myhEz3hKePxyRgZWB1DpPmMYaRuWt1RYcVmcqRa/Bfd0jR37a35neuOSlaip4jsQE1pHQzQ6itdQhBtZZABl1Plz5u8OaMIDTVj63485zi/n6iuuav+GL+JX2JL6pnWz3CT/9DNqa/McyYbxGswGMBAPgHCptseELVmOQ3ZKNHgMu6EtXEKLzmLeZ5REwnw2MTvpzuy5B1zIuxiafuAhh6Tg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING"
}
Public Parameters
Parameter | Type | Description |
---|---|---|
apiKey | string | Unique API key identifier assigned by platform |
timestamp | string | Request timestamp, UNIX millisecond-format string |
key | string | Encrypted data of random AES key by Safeheron API RSA public key |
sig | string | Signature data after signing request parameters by your API RSA private key |
bizContent | object | AES-encrypted data of request parameters |
rsaType | string | RSA Algorithm |
aesType | string | AES Algorithm |
Example Response
Example Response Encrypted Data
Example Response Encrypted Data
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1628652101098",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "gYZvuXdJADuaLYMU3z8q5vOtld62PSaPxrrhhr4UGwWbZm7Pw3/VImzHrd3oNy1XT8R55V7pbpQOBVdbmTev/rESnuaXlGofkB04JWAaRCIPytEKMHUNXZXEU9GLVppYst7bgiekMDIDScS4AkD75eDG8zru5Gr+gTxU4AYyHSzB0deQnxmNRemwZn+jaNgNs7WeBcuQWR1Cq2+1At8FlAqF5XzEaeQ3x1Q0N3iaLzSiXHQRYqP1Q6V6/aiIXchin/X9bBRYL618utjm4k0qoXU8Rw2JeEKzn7m2ShyyQQ31zX/rQ1xf0ar5PDtJPU/qYp9Kr4oVtcN6yHdG802nLqpGYlHlMvxy9vpnGFXb9oxh4xYnp0qRUfKLyJIylc3qhq6spHyWnuC5XV1S4lH+rIPNF1icV08ex7pjps2jvTICBzIIPExBamh1n00RcxZbkGqxYfRZ7SLTUCH06EaV5lP8yXNe3fNWjHk4mppaVDj0QFagqTzBM9AwMfHs1dOeDmcwkTacKQsvNRu3l5uZFQYkaUeVB9m3AhKw3lyl2oJIfJgYeBLJEHMGFVZXP92z8+J5KrZEVfkL8F80XkB3sXRP0BiIv/9Mm4VrjopYoDWyXttCysY0lJ9XImRyE7GkSy2sjmW0BCsrECoVHWh73s9o7Kw0uIegFaitch24GsM=",
"bizContent": "fVwpf1ektFjHOAGK5D1Da+uza9AMknD8kmidt4aHL82JrsmxUpBMGq/bC2wX52sIRYgMJ5O/8fQhtvTXqWEmHVLxismG5ffYkkYVYRTAuV2sUMlU7nhmC6nDZzds+SOs81brzoS6INlHMp9pI59y9+FBYty8NR5a57UBo3XIsll1fWCHwt9T3OBoWpWmGFENpNGPPSADt/mDzXQRmDgL5KVGNOu8LkAVZmJCjunmX+41RCuhwdUQSWciv578ZI90cI9rRI5RxcxkVyI5XWZsEhCMoASvOQ3PJ0AkB64UigP+Jjj7oD9BnX+xO+9Tw1kGwdkVikG1aWnAd3/XrdeaRL9ZA/0HYZCHZ2VupoQ7GuEYDQ30iWklI4v6Uoofg+hGY872GVmsyTZNe9GMSYV4go69nd8cDiA39mGTSDZWvQ9VYvpeZiuzZpdS/O2UNv82qfujn0OmKup4RscQ5baXVSOgeS8UQVRmo4d7KWdxi2S5WvriM/MKemKM4myoMVi1jN8k2Bd8S/u5yX16d9KLZM8EBhTLxuo3/lMZn505SFqt9RnvF1qCRVDaDboq6r8V91ZOpciDmJyWrYGKleleBBObFRZ+Ro1UoY3IUiwfr98oTXVgDYE3YtcZjkPBi7IXcZIBz8m/of97aBitUn//og==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING"
}
Please refer to the right side.
Response Parameters
Parameter | Type | Description |
---|---|---|
code | int | Response result code |
message | string | Response result description |
timestamp | string | Response timestamp, UNIX millisecond-format string |
sig | string | Signature data after signing response parameters by Safeheron API RSA private key |
key | string | Encrypted data of random AES key by your API RSA public key |
bizContent | object | AES-encrypted data of response parameters |
rsaType | string | RSA Algorithm |
aesType | string | AES Algorithm |
Example Decrypted Data of Response Encrypted Data
[
{
"addressBookKey": "8be8c8de4bf749b3b08137ccxefa0b16",
"addressBookName": "name",
"whiteLists": [
{
"whiteListKey": "fdac862c74734d4fa81d62884f2ce4x0",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"coinFullName": "Ethereum(Sepolia)",
"symbol": "ETH",
"address": "0xCa104eA8CB4722e33a3E68eD4D12x3569594FBC5",
"urlAddress": "https://sepolia.etherscan.io/address/0xCa104eA8CB4722e33a3E68eD4D12d3569594xBC5",
"amount": 0,
"usdAmount": 0,
"whiteListStatus": "VERIFY_PASS",
"passNum": 1,
"signNum": 1,
"refuseUserName": ""
}
]
}
]
Example Decrypted bizContent
For a specific format, please refer to response data of each interface.
API List
Wallet Account
Wallet account-related interfaces allows users to create their own wallet and perform wallet-related operations.
List Wallet Accounts
Filter the list of wallet accounts under the team based on various combinations of conditions.
HTTP Request
POST /v1/account/list
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"customerRefId": "customerRefIdExample",
"namePrefix": "namePrefixExample",
"nameSuffix": "nameSuffixExample",
"pageSize": 10,
"pageNumber": 1,
"hiddenOnUI": true,
"archived": false
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
pageNumber | int32 | No | Page number, start from 1 (Default) |
pageSize | int32 | No | The number of items per page, the default is 10, max is 100 |
hiddenOnUI | boolean | No | Filter the wallet accounts based on hiddenOnUI: Default: Retrieve all wallet accounts True: Retrieve the wallet accounts with hiddenOnUI set to true False: Retrieve the wallet accounts with hiddenOnUI set to false |
archived | boolean | No | Filter wallets based on archived: Default: Retrieve all wallets True: retrieve archived wallets in the Web Console False: Retrieve unarchived wallets in the Web Console Archived: Wallets can be set to "archived" in the Web Console. Archived wallets will be invisible in the wallet lists of the App and Web Console. You can view archived wallets in the "Archived Wallets"of the Web Console |
customerRefId | string | No | Merchant unique business ID (100 characters max) |
namePrefix | string | No | Filter the response based on the prefix of the account name |
nameSuffix | string | No | Filter the response based on the suffix of the account name |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"pageNumber": 1,
"pageSize": 10,
"totalElements": 100,
"content": [
{
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
"customerRefId": "customerRefIdExample",
"accountName": "default",
"accountIndex": 0,
"accountType": "VAULT_ACCOUNT",
"accountTag": "NONE",
"hiddenOnUI": false,
"archived": false,
"usdBalance": "0",
"pubKeys": [
{
"signAlg": "secp256k1",
"pubKey": "03ba5cfed3f88a811f0208570c64d1627af2e8f3363f65aad22be7490469dadd2a"
},
{
"signAlg": "ed25519",
"pubKey": "07df2ddef5d7c624d5452e10aaeb823cbf3e3d8b3d32e04af14cba374ac82d27"
}
]
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
pageNumber | int32 | Page number |
pageSize | int32 | The number of bars per page |
totalElements | int64 | Total number of records |
content | array | Data lists per page |
└─accountKey | string | Account Key, the only account identifier |
└─customerRefId | string | Merchant unique business ID |
└─accountName | string | Account name |
└─accountIndex | int32 | Account index |
└─accountType | string | Account type |
└─accountTag | string | Account tag |
└─hiddenOnUI | boolean | Wallet's visibility status in Safeheron App and Web Console True: Invisible False: Visible |
└─archived | boolean | Wallet's archive status in Safeheron App and Web Console True: Archived False: Unarchived |
└─usdBalance | string | Account balance, in USD when retrieve |
└─pubKeys | array | Account public key information |
└─signAlg | string | Signature algorithm |
└─pubKey | string | Account compressed public key |
Retrieve a Single Wallet Account
Retrieve a single wallet account in the team by providing accountKey.
HTTP Request
POST /v1/account/one
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
"customerRefId": "customerRefIdExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountKey | string | No | Account key |
customerRefId | string | No | Merchant unique business ID (100 characters max) |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
"customerRefId": "customerRefIdExample",
"accountName": "default",
"accountIndex": 0,
"accountType": "VAULT_ACCOUNT",
"accountTag": "NONE",
"hiddenOnUI": false,
"archived": false,
"usdBalance": "0",
"pubKeys": [
{
"signAlg": "secp256k1",
"pubKey": "03ba5cfed3f88a811f0208570c64d1627af2e8f3363f65aad22be7490469dadd2a"
},
{
"signAlg": "ed25519",
"pubKey": "07df2ddef5d7c624d5452e10aaeb823cbf3e3d8b3d32e04af14cba374ac82d27"
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
accountKey | string | Account Key, the only account identifier |
customerRefId | string | Merchant unique business ID |
accountName | string | Account Name |
accountIndex | int32 | Account index |
accountType | string | Account type |
accountTag | string | Account tag |
hiddenOnUI | boolean | Wallet's visibility status in Safeheron App and Web Console True: Invisible False: Visible |
archived | boolean | Wallet's archive status in Web Console True: Archived False: Unarchived |
usdBalance | string | Account balance, convert it into USD when query |
pubKeys | array | Account public key info |
└─signAlg | string | Signature algorithm |
└─pubKey | string | Account compressed public key |
Create a Wallet Account
Create a new wallet account that allows adding multiple cryptocurrencies simultaneously to this wallet account.
HTTP Request
POST /v1/account/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"customerRefId": "customerRefIdExample",
"accountName": "accountNameExample",
"hiddenOnUI": true,
"accountTag": "NONE",
"coinKeyList": ["ETH(SEPOLIA)_ETHEREUM_SEPOLIA"]
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
customerRefId | string | No | Merchant unique business ID (100 characters max) The customerRefId uniquely represents a wallet. In the case of duplicate customerRefId values (for example, when resubmitting due to request timeouts or other errors), the data returned by the interface will remain consistent |
accountName | string | No | Account name, 50 characters max |
hiddenOnUI | boolean | No | Visibility status in Safeheron App and Web Console False: Visible by default True: Invisible; the invisible whitelist can only be managed and used through the API, such as querying, modifying, and using the whitelist as the source or destination address when initiating transactions |
accountTag | string | No | Account tag |
coinKeyList | array | No | Coin key list, 20 array elements max |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"accountKey": "account4b8d2c00520646c8862b68420aa1bc55",
"pubKeys": [
{
"signAlg": "secp256k1",
"pubKey": "03ba5cfed3f88a811f0208570c64d1627af2e8f3363f65aad22be7490469dadd2a"
},
{
"signAlg": "ed25519",
"pubKey": "07df2ddef5d7c624d5452e10aaeb823cbf3e3d8b3d32e04af14cba374ac82d27"
}
],
"coinAddressList": [
{
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"addressGroupName": "addressGroupNameExample",
"addressList": [
{
"address": "0x8c26DCdcED3627547b5662C7cc63472b44ed0c83",
"addressType": "DEFAULT",
"derivePath": "m/44/666/0/0/0"
}
]
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
accountKey | string | Wallet account key |
pubKeys | array | Account public key information |
└─signAlg | string | Signature algorithm |
└─pubKey | string | Account compressed public key |
coinAddressList | array | Coin address list |
└─coinKey | string | Coin key |
└─addressGroupKey | string | The unique identifier of the address group |
└─addressGroupName | string | Address group name |
└─addressList | array | Address list |
└─address | string | Coin receiving address |
└─addressType | string | Address type |
└─derivePath | string | BIP44 derivation path |
Batch Create Wallet Accounts V1
Generate a batch of wallet accounts based on a specified quantity. By default, the wallet accounts created in bulk will not be displayed in the Safeheron App. For optimal results, we recommend using the V2 version.
HTTP Request
POST /v1/account/batch/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"accountName": "accountNameExample",
"count": 10,
"accountTag": "NONE",
"hiddenOnUI": true
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountName | string | No | The prefix of wallet account name, 50 characters max |
hiddenOnUI | boolean | No | Visibility status in Safeheron App and Web Console False: Visible True: Invisible by default; the invisible whitelist can only be managed and used through the API, such as querying, modifying, and using the whitelist as the source or destination address when initiating transactions |
count | int32 | Yes | Number of wallets to be created, greater than 0, less than 100 |
accountTag | string | No | Account tag |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"accountKeyList": [
"account4b8d2c00520646c8862b68420aa1bc55"
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
accountKeyList | array | Wallet account key |
Batch Create Wallet Accounts V2
Generate a batch of wallet accounts based on a specified quantity. By default, the wallet accounts created in bulk will not be displayed in the Safeheron App.
HTTP Request
POST /v2/account/batch/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"accountName": "accountNameExample",
"count": 10,
"accountTag": "NONE",
"hiddenOnUI": true
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountName | string | No | The prefix of wallet account name, 50 characters max |
hiddenOnUI | boolean | No | Visibility status in Safeheron App and Web Console False: Visible True: Invisible by default; the invisible whitelist can only be managed and used through the API, such as querying, modifying, and using the whitelist as the source or destination address when initiating transactions |
count | int32 | Yes | Number of wallets to be created, greater than 0, less than 100 |
accountTag | string | No | Account tag |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"accountKey": "account4b8d2c00520646c8862b68420aa1bc55",
"pubKeys": [
{
"signAlg": "secp256k1",
"pubKey": "03ba5cfed3f88a811f0208570c64d1627af2e8f3363f65aad22be7490469dadd2a"
},
{
"signAlg": "ed25519",
"pubKey": "07df2ddef5d7c624d5452e10aaeb823cbf3e3d8b3d32e04af14cba374ac82d27"
}
]
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
accountKey | string | Wallet account key |
pubKeys | array | Account public key information |
└─signAlg | string | Signature algorithm |
└─pubKey | string | Account compressed public key |
Change Display of Wallet Account in App
Change wallet account status in Safeheron App.
HTTP Request
POST /v1/account/update/show/state
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"accountKey": "account08a2369f59214b1e9099dc6346f694ca",
"hiddenOnUI": true
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountKey | string | Yes | Wallet account key |
hiddenOnUI | boolean | Yes | Visibility status in Safeheron App and Web Console False: Visible by default True: Invisible; the invisible whitelist can only be managed and used through the API, such as querying, modifying, and using the whitelist as the source or destination address when initiating transactions |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"result": true
}
}
Response Data
Parameter | Type | Description |
---|---|---|
result | boolean | Execution result True: Success False: Fail |
Batch Label Wallet Accounts
Relabel a batch of wallet accounts.
Please note that it only supports to label wallets which are created by API. And, the wallets have been used to sweep the target account cannot be relabelled.
HTTP Request
POST /v1/account/batch/update/tag
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"accountKeyList": ["account08a2369f59214b1e9099dc6346f694ca"],
"accountTag": "DEPOSIT"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountKeyList | array | Yes | Wallet account key |
accountTag | string | Yes | Account tag |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"result": true
}
}
Response Data
Parameter | Type | Description |
---|---|---|
result | boolean | Execution result True: Success False: Fail |
Add Coins to a Wallet Account V1
Add a new coin to your wallet account, and it will generate address information for the added coin. If the added currency already exists within the account, it will promptly return the existing address information for that coin.
In a wallet account, UTXO-based cryptocurrencies can have multiple address groups, while other types of cryptocurrencies usually have only one. To check whether a particular cryptocurrency supports the addition of multiple address groups, simply check the 'isMultipleAddress' parameter through the Coin List.
HTTP Request
POST /v1/account/coin/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"accountKey": "account08a2369f59214b1e9099dc6346f694ca"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKey | string | Yes | Coin key |
accountKey | string | Yes | Account key |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT",
"derivePath": "m/44/666/0/0/0"
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
address | string | Coin receiving address |
addressType | string | Address type |
derivePath | string | BIP44 derivation path |
Add Coins to a Wallet Account V2
Add a new coin to your wallet account, and it will generate address information for the added coin. If the added currency already exists within the account, it will promptly return the existing address information for that coin.
HTTP Request
POST /v2/account/coin/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"coinKeyList": ["ETH(SEPOLIA)_ETHEREUM_SEPOLIA"],
"accountKey": "account08a2369f59214b1e9099dc6346f694ca"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKeyList | array | Yes | Coin key list, 20 array elements max |
accountKey | string | Yes | Account key |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"accountKey": "account08a2369f59214b1e9099dc6346f694ca",
"coinAddressList": [{
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"addressGroupName": "addressGroupNameExample",
"addressList":[
{
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT",
"derivePath": "m/44/666/0/0/0"
}
]
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
accountKey | string | Account key |
coinAddressList | array | Coin address list |
└─coinKey | string | Coin key |
└─addressGroupKey | string | The unique identifier of the address group |
└─addressGroupName | string | Address group name |
└─addressList | array | Address list |
└─address | string | Coin receiving address |
└─addressType | string | Address type |
└─derivePath | string | BIP44 derivation path |
Batch Add Coins to Wallet Accounts
Bulk addition of a specified coin to designated wallet accounts. And, it generates address information for the coin. If a wallet account already contains the added coin, it will return the address information for that coin.
HTTP Request
POST /v1/account/batch/coin/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"accountKeyList": [
"accountdc0ec5415e924983b25dc4c7befdf163",
"accounte49ede0c6c2b45d5bc31bcf6cad3a423",
"account763de64717524b73b524cf19cb47f9b7"
],
"addressGroupName": "addressGroupNameExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKey | string | Yes | Coin key |
accountKeyList | array | Yes | Account key, max is 100 |
addressGroupName | string | No | Address group name, 30 characters max |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"addressList": [
{
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT",
"derivePath": "m/44/666/0/0/0"
}
],
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"addressGroupName": "addressGroupNameExample"
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
addressList | array | Address list |
└─address | string | Coin receiving address |
└─addressType | string | Address type |
└─derivePath | string | BIP44 derivation path |
accountKey | string | Account key |
addressGroupKey | string | The unique identifier of the address group |
addressGroupName | string | Address group name |
List Coins Within a Wallet Account
Retrieve a complete list of all coins associated with a wallet account.
HTTP Request
POST /v1/account/coin/list
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"accountKey": "account08a2369f59214b1e9099dc6346f694ca"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountKey | string | Yes | Account key |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"coinFullName": "Ethereum(Sepolia)",
"coinName": "ETH(Sepolia)",
"coinDecimal": 18,
"txRefUrl": "https://sepolia.etherscan.io/tx/{txHash}",
"addressRefUrl": "https://sepolia.etherscan.io/address/{address}",
"logoUrl": "https://resource.safeheron.vip/resource/img/logo/1626851355990.png",
"symbol": "ETH",
"isMultipleAddress": "NO",
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"feeUnit": "Gwei",
"feeDecimal": 9,
"showCoinDecimal": 8,
"balance": "0",
"usdBalance": "0",
"addressList": [
{
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT",
"derivePath": "m/44/666/0/0/0",
"addressBalance": "0"
}
]
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
coinKey | string | Coin key |
coinFullName | string | Coin full name |
coinName | string | Coin symbol |
coinDecimal | int32 | Coin decimal |
txRefUrl | string | Transaction URL on explorer |
addressRefUrl | string | Block explorer URL |
logoUrl | string | Coin logo URL |
symbol | string | Coin unit |
isMultipleAddress | string | Ability to create multiple address groups YES: Yes NO: No |
feeCoinKey | string | Coin key that is used to pay for the transaction fee when conducting a transfer, such as when transferring ERC-20 tokens, transaction fees are paid in ETH |
feeUnit | string | Transaction fee unit name (Gwei, satoshis) |
feeDecimal | int32 | Fee decimal on Safeheron Console |
showCoinDecimal | int32 | Displayed coin decimal on Safeheron Console |
balance | string | Account balance |
usdBalance | string | Account balance, convert it into USD when query |
addressList | array | Coin address list |
└─address | string | Coin receiving address |
└─addressType | string | Address type |
└─derivePath | string | BIP44 derivation path |
└─addressBalance | string | The balance of this coin address |
List Coin Address Group of a Wallet Account
Retrieve all address groups for a coin within the wallet account.
HTTP Request
POST /v1/account/coin/address/list
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"pageNumber": 1,
"pageSize": 10,
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"accountKey": "account08a2369f59214b1e9099dc6346f694ca",
"customerRefId": "customerRefIdExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
pageNumber | int32 | No | Page number, start from 1 (Default) |
pageSize | int32 | No | The number of bars per page, the default is 10, max is 100 |
coinKey | string | Yes | Coin key |
accountKey | string | Yes | Account key |
customerRefId | string | No | Merchant unique business ID (100 characters max) when adding an address group |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"pageNumber": 1,
"pageSize": 10,
"totalElements": 100,
"content": [
{
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"customerRefId": "customerRefIdExample",
"addressGroupName": "AddressName",
"addressList": [
{
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT",
"derivePath": "m/44/666/0/0/0",
"addressBalance": "0"
}
]
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
pageNumber | int32 | Page number |
pageSize | int32 | The number of items per page |
totalElements | int64 | Total number of records |
content | array | Data lists per page |
└─addressGroupKey | string | Address group key |
└─customerRefId | string | Merchant unique business ID when adding an address group |
└─addressGroupName | string | Address group name |
└─addressList | array | Address list |
└─address | string | Coin receiving address |
└─addressType | string | Address type |
└─derivePath | string | BIP44 derivation path |
└─addressBalance | string | The balance of this coin address |
Retrieve The Balance of an Address
Retrieve the balance of a specific coin address.
HTTP Request
POST /v1/account/coin/address/info
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"address": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKey | string | Yes | Coin key |
address | string | Yes | Coin receiving address |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT",
"derivePath": "m/44/666/0/0/0",
"addressBalance": "0",
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
address | string | Coin receiving address |
addressType | string | Address type |
derivePath | string | BIP44 derivation path |
addressBalance | string | The balance of the coin address |
accountKey | string | Account key |
Rename Coin Address Group of a Wallet Account
Rename a coin address group of a wallet account.
HTTP Request
POST /v1/account/coin/address/name
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"addressGroupKey": "addressGroupKeyExample",
"addressGroupName": "addressGroupNameExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
addressGroupKey | string | Yes | Address group key |
addressGroupName | string | Yes | Address group name, 30 characters max |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"result": true
}
}
Response Data
Parameter | Type | Description |
---|---|---|
result | boolean | Execution result True: Success False: Fail |
Add Address Group for UTXOs V1
Add a new address group for UTXO-based cryptocurrencies under a wallet account.If the coin has not been added to the wallet, it will be added automatically.
HTTP Request
POST /v1/account/coin/address/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"coinKey": "BTC_TESTNET",
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
"addressGroupName": "addressGroupNameExample",
"customerRefId": "customerRefIdExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKey | string | Yes | Coin key (only supported for UTXOs) |
accountKey | string | Yes | Account key |
addressGroupName | string | Yes | Address group name, 30 characters max |
customerRefId | string | No | Merchant unique business ID (100 characters max) The customerRefId uniquely represents an address group. In the case of duplicate customerRefId values (for example, when resubmitting due to request timeouts or other errors), the data returned by the interface will remain consistent |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"address": "mpfZasvHLqfUE1YjZC2vmbPijPxZ2AgqZm",
"addressType": "P2PKH",
"derivePath": "m/44/666/0/0/10"
},
{
"address": "tb1qv3v7k8wau5r0egycz0fu9p4zdmdchtn69jpvm7",
"addressType": "P2WPKH",
"derivePath": "m/44/666/0/0/10"
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
address | string | Coin receiving address |
addressType | string | Address type |
derivePath | string | BIP44 derivation path |
Add Address Group for UTXOs V2
Add a new address group for UTXO-based cryptocurrencies under a wallet account.If the coin has not been added to the wallet, it will be added automatically.
HTTP Request
POST /v2/account/coin/address/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"coinKey": "BTC_TESTNET",
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
"addressGroupName": "addressGroupNameExample",
"customerRefId": "customerRefIdExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKey | string | Yes | Coin key(only support for UTXOs) |
accountKey | string | Yes | Account key |
addressGroupName | string | Yes | Address group name, 30 characters max |
customerRefId | string | No | Merchant unique business ID (100 characters max) The customerRefId uniquely represents an address group. In the case of duplicate customerRefId values (for example, when resubmitting due to request timeouts or other errors), the data returned by the interface will remain consistent |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"addressGroupName": "addressGroupNameExample",
"addressList":[
{
"address": "mpfZasvHLqfUE1YjZC2vmbPijPxZ2AgqZm",
"addressType": "P2PKH",
"derivePath": "m/44/666/0/0/10"
},
{
"address": "tb1qv3v7k8wau5r0egycz0fu9p4zdmdchtn69jpvm7",
"addressType": "P2WPKH",
"derivePath": "m/44/666/0/0/10"
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
addressGroupKey | string | The unique identifier of the address group |
addressGroupName | string | The name of the address group |
addressList | array | Address list |
└─address | string | Coin receiving address |
└─addressType | string | Address type |
└─derivePath | string | BIP44 derivation path |
Batch Add Address Groups for UTXOs
For UTXO-based coins in a wallet account, it is possible to add multiple address groups to the account in bulk by specifying the wallet account and the desired number of address groups. The function will return the details of the added address groups. If the specified coin does not exist in the account, it will be added first, followed by the addition of the corresponding number of address groups.
HTTP Request
POST /v1/account/coin/utxo/batch/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
"count": 10,
"addressGroupName": "addressGroupNameExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKey | string | Yes | Coin key (only supported for UTXOs) |
accountKey | string | Yes | Account key |
count | int32 | Yes | The number, max is 100 |
addressGroupName | string | No | Address group name prefix, 30 characters max |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"addressList": [
{
"address": "mpfZasvHLqfUE1YjZC2vmbPijPxZ2AgqZm",
"addressType": "P2PKH",
"derivePath": "m/44/666/0/0/10"
},
{
"address": "tb1qv3v7k8wau5r0egycz0fu9p4zdmdchtn69jpvm7",
"addressType": "P2WPKH",
"derivePath": "m/44/666/0/0/10"
}
],
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"addressGroupName": "addressGroupNameExample"
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
addressList | array | Address list |
└─address | string | Coin receiving address |
└─addressType | string | Address type |
└─derivePath | string | BIP44 derivation path |
accountKey | string | Account key |
addressGroupKey | string | The unique identifier of the address group |
addressGroupName | string | Address group name |
Whitelist
A whitelist is a receiving address pre-approved or permitted by the team. When creating a transaction, you can choose to transfer funds to this address. Click here to learn more about whitelists.
Create a Whitelist
Add a new whitelisted address. The newly added address needs to be approved in the Safeheron App before it becomes effective. The approval details are as follows:
- Admin approval: If a custom whitelist approval process is not set, it will become effective after being approved by the team admins according to the team's decision-making process.
- Custom whitelist approval: If a whitelist approval process is set, it will become effective after being approved according to the process.
HTTP Request
POST /v1/whitelist/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"whitelistName": "whitelistNameExample",
"chainType": "EVM",
"address": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7",
"hiddenOnUI":false,
"memo": "memoExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
whitelistName | string | Yes | Whitelist unique name, 30 characters max |
chainType | string | Yes | The supported public blockchains for whitelist addresses are: |
address | string | Yes | Public blockchain address and the address format needs to meet the requirements of the chain |
memo | string | No | The memo (up to 20 characters) for the public blockchain address, also known as a comment or tag. This parameter is only valid for the following public blockchain types (chainType): |
hiddenOnUI | boolean | No | Visibility status in Safeheron App and Web Console False: Visible by default True: Invisible; the invisible whitelist can only be managed and used through the API, such as querying, modifying, and using the whitelist as the destination address when initiating transactions |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"whitelistKey": "whitelistKeyExample"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
whitelistKey | string | Whitelist unique identifier |
Create a Whitelist Based on a Transaction
Whitelist the transaction's destination address when the transaction meets the following conditions:
- A transfer transaction from an asset wallet; Web3 wallet transactions or MPC Sign transactions are not supported.
- The transaction is in a completed state as COMPLETED.
- The transaction's destination address is a one-time address.
HTTP Request
POST /v1/whitelist/createFromTransaction
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"whitelistName": "whitelistNameExample",
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"destinationAddress": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7",
"memo": "memoExample",
"hiddenOnUI":false
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
whitelistName | string | Yes | Whitelist unique name, 30 characters max |
txKey | string | Yes | Transaction key |
destinationAddress | string | Yes | The destination address in the transaction record; case-sensitive |
memo | string | No | The memo (up to 20 characters) for the destination address, also known as a comment or tag. For the following networks, if a destination address memo was set initially, a memo matching the one in the transaction record must be provided |
hiddenOnUI | boolean | No | Visibility status in Safeheron App and Web Console False: Visible by default True: Invisible; the invisible whitelist can only be managed and used through the API, such as querying, modifying, and using the whitelist as the destination address when initiating transactions |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"whitelistKey": "whitelistKeyExample"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
whitelistKey | string | Whitelist unique identifier |
Modify a Whitelist
Modify a whitelist based on its unique identifier. The whitelist only supports modifying its name and address; whitelists pending for approval cannot be modified. After modifying the whitelist, it needs to be reviewed and approved in the Safeheron App before it becomes effective. The approval details are as follows:
- Admin approval: If a custom whitelist approval process is not set, it will become effective after being approved by the team admins according to the team's decision-making process.
- Custom whitelist approval: If a whitelist approval process is set, it will become effective after being approved according to the process.
HTTP Request
POST /v1/whitelist/edit
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"whitelistKey": "whitelistKeyExample",
"whitelistName": "whitelistNameExample",
"address": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7",
"memo": "memoExample",
"force": false
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
whitelistKey | string | Yes | Whitelist unique identifier |
whitelistName | string | Yes | Whitelist unique name, 30 characters max |
address | string | Yes | Public blockchain address and the address format needs to meet the requirements of the chain |
memo | string | No | The memo (up to 20 characters) for the public blockchain address, also known as a comment or tag. This parameter is only valid for the following public blockchain types (chainType): |
force | bool | No | When the whitelist is involved in a transaction approval policy, modifications will result in the new whitelist being directly applied to the approval policy. False by default, meaning that when involved in a transaction approval policy, it will not be modified. |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"result": true
}
}
Response Data
Parameter | Type | Description |
---|---|---|
result | boolean | Execution result True: Success False: Fail |
Retrieve a Single Whitelist
Retrieve the data of a whitelist.
HTTP Request
POST /v1/whitelist/one
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"whitelistKey": "whitelistKeyExample",
"address": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
whitelistKey | string | No | Whitelist unique identifier. It is required if address is not provided. If both are provided, the whitelistKey takes precedence |
address | string | No | Whitelist address. It is required if whitelistKey is not provided and please make sure the provided address is correct |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"whitelistKey": "whitelistKeyExample",
"chainType": "EVM",
"whitelistName": "whitelistNameExample",
"address": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7",
"memo": "memoExample",
"whitelistStatus": "AUDIT",
"hiddenOnUI":false,
"createTime": 1635170400000,
"lastUpdateTime": 1635199200000
}
}
Response Data
Parameter | Type | Description |
---|---|---|
whitelistKey | string | Whitelist unique identifier |
chainType | string | The supported public blockchains for whitelist addresses are: |
whitelistName | string | Whitelist name |
address | string | Whitelisted address |
memo | string | Memo of the address when creating a whitelist |
whitelistStatus | string | Whitelist status |
hiddenOnUI | boolean | Visibility status in Safeheron App and Web Console True: Invisible False: Visible |
createTime | int64 | Whitelist creation time in UNIX timestamp (ms) |
lastUpdateTime | int64 | Last update time of the whitelist in UNIX timestamp (ms) |
List Whitelist Data
Paginate the whitelist data based on the query criteria.
HTTP Request
POST /v1/whitelist/list
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"direct": "NEXT",
"limit": 100,
"fromId": "xxxxx",
"chainType": "EVM",
"whitelistStatus": "AUDIT",
"hiddenOnUI":false,
"createTimeMin": 1635170400000,
"createTimeMax": 1635199200000
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
direct | string | No | Query page direction, NEXT by default |
limit | int32 | No | The number of items to retrieve at a time, default max value is 500 |
fromId | string | No | whitelistKey of the first record. If the first page has no value, provide the whitelistKey of the last record from the previous result |
chainType | string | Yes | The supported public blockchains for whitelist addresses are: |
whitelistStatus | string | No | Whitelist status |
hiddenOnUI | boolean | No | Filter the whitelists based on hiddenOnUI: Default: Retrieve all whitelists True: Retrieve the whitelists with hiddenOnUI set to true False: Retrieve the whitelists with hiddenOnUI set to false |
createTimeMin | int64 | No | Start time for creating a whitelist in UNIX timestamp (ms) (If no value is provided, the default value is createTimeMax minus 24 hours) |
createTimeMax | int64 | No | End time for creating a whitelist in UNIX timestamp (ms) (If no value is provided, the default value is the current UTC time) |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"whitelistKey": "whitelistKeyExample",
"chainType": "EVM",
"whitelistName": "whitelistNameExample",
"address": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7",
"memo": "memoExample",
"whitelistStatus": "AUDIT",
"hiddenOnUI":false,
"createTime": 1635170400000,
"lastUpdateTime": 1635199200000
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
whitelistKey | string | Whitelist unique identifier |
chainType | string | The supported public blockchains for whitelist addresses are: |
whitelistName | string | Whitelist name |
address | string | Whitelisted address |
memo | string | Memo of the address when creating a whitelist |
whitelistStatus | string | Whitelist status |
hiddenOnUI | boolean | Whitelist's visibility status in Safeheron App and Web Console True: Invisible False: Visible |
createTime | int64 | Whitelist creation time in UNIX timestamp (ms) |
lastUpdateTime | int64 | Last update time of the whitelist in UNIX timestamp (ms) |
Delete a Whitelist
To delete a whitelisted address, note that no approval is required for deletion. If a whitelisted address that is under approval is deleted, the approval task will also be automatically cancelled.
HTTP Request
POST /v1/whitelist/delete
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"whitelistKey": "whitelistKeyExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
whitelistKey | string | Yes | Whitelist unique identifier |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"result": true
}
}
Response Data
Parameter | Type | Description |
---|---|---|
result | boolean | Execution result True: Success False: Fail |
Coins
The coin-related interface allows users to easily access information such as the list of cryptocurrencies supported by Safeheron, maintenance details for each coin, perform coin address validation, and more.
Coin List
Retrieve the list of coins supported by Safeheron.
HTTP Request
POST /v1/coin/list
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw="
}
Request Parameters
None
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"coinFullName": "Ethereum(Sepolia)",
"coinName": "ETH(Sepolia)",
"coinDecimal": 18,
"txRefUrl": "https://sepolia.etherscan.io/tx/{txHash}",
"addressRefUrl": "https://sepolia.etherscan.io/address/{address}",
"logoUrl": "https://resource.safeheron.vip/resource/img/logo/1626851355990.png",
"symbol": "ETH",
"isMultipleAddress": "NO",
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"feeUnit": "Gwei",
"feeDecimal": 9,
"showCoinDecimal": 8,
"coinType": "NATIVE",
"tokenIdentifier": "NATIVE",
"minTransferAmount": "1",
"blockChain": "ethereum",
"network": "sepolia",
"gasLimit": 21000,
"isMemo": "NO",
"isUtxo": "NO",
"blockchainType": "EVM"
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
coinKey | string | Coin key |
coinFullName | string | Coin full name |
coinName | string | Coin symbol |
coinDecimal | int32 | Coin decimal |
txRefUrl | string | Transaction URL on explorer |
addressRefUrl | string | Block explorer URL |
logoUrl | string | Coin logo URL |
symbol | string | Coin unit |
isMultipleAddress | string | Ability to create multiple address groups YES: Yes NO: No |
feeCoinKey | string | Coin key that is used to pay for the transaction fee when conducting a transfer, such as when transferring ERC-20 tokens, transaction fees are paid in ETH |
feeUnit | string | Transaction fee unit name (Gwei, satoshis) |
feeDecimal | int32 | Fee decimal on Safeheron Console |
showCoinDecimal | int32 | Displayed coin decimal on Safeheron Console |
coinType | string | Coin type |
tokenIdentifier | string | Contract address, NATIVE is the native asset, non-NATIVE is the contract address |
minTransferAmount | string | Minimum transfer amount, the transfer unit is symbol |
blockChain | string | Blockchain |
network | string | Blockchain network |
gasLimit | int32 | Gas limit set by Safeheron |
isMemo | string | Pay MEMO included type YES: Yes NO: No |
isUtxo | string | UTXO-based currency YES: Yes NO: No |
blockchainType | string | Blockchain type |
Coin Maintenance List
Retrieve the information of coins under maintenance in Safeheron.
HTTP Request
POST /v1/coin/maintain/list
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw="
}
Request Parameters
None
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"maintain": true,
"title": "ETH Maintenance",
"content": "We will maintain ETH tokens during xxx-xxx",
"startTime": 1635170400000,
"endTime": 1635199200000
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
coinKey | string | Coin key |
maintain | boolean | Under maintenance or not |
title | string | Maintenance title |
content | string | Content |
startTime | int64 | Coin maintenance start time, UNIX time in milliseconds |
endTime | int64 | Coin maintenance end time, UNIX time in milliseconds |
Verify Coin Address
Verify the correctness of a cryptocurrency address based on the provided validation attributes.
HTTP Request
POST /v1/coin/address/check
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"checkContract": false,
"checkAml": false,
"checkAddressValid": true,
"checkSolanaOwnerAddress": true
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKey | string | Yes | Coin key |
address | string | Yes | Coin receiving address |
checkContract | boolean | No | Verify contract address (If no value is provided, 'false' by default) True: Verify False: Not verify |
checkAml | boolean | No | Verify AML compliance (If no value is provided or be verified, AML-compliant address by default) True: Verify False: Not verify |
checkAddressValid | boolean | No | Verify the validity of address format (If no value is provided, 'false' by dafault) True: Verify False: Not verify |
checkSolanaOwnerAddress | boolean | No | Verify if the Solana address is the Owner address (If no value is provided, 'false' by default) True: Verify False: Not verify |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"addressValid": true
}
}
Response Data
Parameter | Type | Description |
---|---|---|
addressValid | boolean | Valid address format True: Valid address False: Invalid address |
contract | boolean | Contract address True: Contract address False: Non-contract address |
amlValid | boolean | Subject to risk control limitations True: AML valid address False: AML blacklisted address |
solanaOwnerAddress | boolean | Solana owner address True: Solana owner address False: Non-solana owner address |
Snapshot the Coin Balance
Safeheron takes and stores daily snapshots of balances based on the transaction block's creation time in GMT+8. Please note that the snapshot only keeps data within 30 days.
HTTP Request
POST /v1/coin/balance/snapshot
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"gmt8Date": "2023-01-01"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
gmt8Date | string | Yes | Only supports querying data within the last 30 days, with the parameter a GMT+8 time in the format of yyyy-MM-dd provided. Note: If the provided value is the current date (not a historical date), it will return the balance up to the current time. |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"coinBalance": "0"
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
coinKey | string | Coin key |
coinBalance | string | Coin balance, displayed in the unit of the symbol specified in the coin list |
Retrieve Current Block Height for Currency
Retrieve the current block height for a specific cryptocurrency by providing its key.
HTTP Request
POST /v1/coin/block/height
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKey | string | Yes | Coin key, multiple coin keys are separated by commas |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"localBlockHeight": 0
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
coinKey | string | Coin key |
localBlockHeight | int64 | Coin's current block height |
Transaction
The transaction-related interface provides access to query transaction information, initiate transactions, accelerate transactions, cancel transactions, and more.
Transaction List V1
Filter transaction history by various conditions. For optimal results, we recommend using the V2 version.
HTTP Request
POST /v1/transactions/list
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"pageNumber": 1,
"pageSize": 100,
"sourceAccountKey": "account27ddec416e2342918e4381d4727c2905",
"sourceAccountType": "VAULT_ACCOUNT",
"transactionStatus": "COMPLETED",
"transactionSubStatus": "CONFIRMED",
"destinationAccountType": "ONE_TIME_ADDRESS",
"realDestinationAccountType": "ONE_TIME_ADDRESS",
"destinationAccountKey": "",
"destinationAddress": "0x57b2aCEf9f40aaBCC20D3aac4A37eAF2371a788E",
"hideSmallAmountUsd": "0.01",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"transactionDirection": "INTERNAL_TRANSFER"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
pageNumber | int32 | No | Page number, start from 1 (Default) |
pageSize | int32 | No | The number of items per page, the default is 10, max is 100 |
sourceAccountKey | string | No | Source account key |
sourceAccountType | string | No | Source account type |
destinationAccountKey | string | No | Destination account key |
destinationAccountType | string | No | Destination account type |
createTimeMin | int64 | No | Start time for creating a transaction, UNIX timestamp (ms) |
createTimeMax | int64 | No | End time for creating a transaction, UNIX timestamp (ms) |
txAmountMin | string | No | Min transaction amount |
txAmountMax | string | No | Max transaction amount |
coinKey | string | No | Coin key, multiple coin keys are separated by commas |
feeCoinKey | string | No | Transaction fee coin key, multiple coin keys are separated by commas |
transactionStatus | string | No | Transaction status |
transactionSubStatus | string | No | Transaction substatus |
completedTimeMin | int64 | No | Min duration for completing a transaction, UNIX timestamp (ms) |
completedTimeMax | int64 | No | Max duration for completing a transaction, UNIX timestamp (ms) |
customerRefId | string | No | Merchant unique business ID |
realDestinationAccountType | string | No | Type of actual destination account |
hideSmallAmountUsd | string | No | Filter out custom transaction amounts, excluding transaction records below a certain amount specified in USD from the query results |
transactionDirection | string | No | Filter transaction history by transaction direction: Default: Retrieve all types of transactions INFLOW: Retrieve inflows OUTFLOW: Retrieve outflows INTERNAL_TRANSFER: Retrieve internal transfers |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"pageNumber": 1,
"pageSize": 10,
"totalElements": 100,
"content": [
{
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"isSourcePhishing": false,
"sourceAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"isSourcePhishing": false,
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43"
}
],
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"isDestinationPhishing": false,
"memo": "memoExample",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"isDestinationPhishing": false,
"memo": "memoExample",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"isDestinationPhishing": false,
"memo": "memoExample",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"amount": "0.0001"
}
],
"transactionType": "NORMAL",
"transactionStatus": "COMPLETED",
"transactionSubStatus": "CONFIRMED",
"createTime": 1626075236000,
"note": "Initiate transaction",
"auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"txFee": "0.000106841386050000",
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"replaceTxHash": "0x628626531285bb90d4130d3beb3c355d2a7fe0bdfa1fa05e3431f15340aafeb6",
"customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerExt1": "1",
"customerExt2": "2",
"amlLock": "NO",
"blockHeight": 10000000,
"completedTime": 1626075236000,
"realDestinationAccountType": "VAULT_ACCOUNT",
"transactionSubStatusDesc": "Confirmed",
"txAmountToUsd": "19.9813552",
"sourceAccountName": "wallet1",
"sourceAccountTypeName": "vault",
"destinationAccountName": "API transaction group",
"destinationAccountTypeName": "Whitelisted address",
"auditUserName": "test",
"createdByUserName": "test",
"transactionDirection": "INTERNAL_TRANSFER"
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
pageNumber | int32 | Page number |
pageSize | int32 | The number of items per page |
totalElements | int64 | Total number of records |
content | array | Data lists per page |
└─txKey | string | Transaction key |
└─txHash | string | Transaction hash |
└─coinKey | string | Coin key |
└─txAmount | string | Transaction amount, the unit is the symbol returned by the coin list |
└─sourceAccountKey | string | Source account key |
└─sourceAccountType | string | Source account type |
└─sourceAddress | string | Source address (If the transaction currency is of UTXO type, please use the sourceAddressList field) |
└─isSourcePhishing | bool | Source address shows potential phishing risk. Only incoming transactions on EVM chains and TRON are valid |
└─sourceAddressList | array | Source address list |
└─address | string | Source address |
└─isSourcePhishing | bool | Source address shows potential phishing risk. Only incoming transactions on EVM chains and TRON are valid |
└─addressGroupKey | string | The unique identifier of the address group of the source address, this field is only returned when the transaction source account type is VAULT_ACCOUNT |
└─destinationAccountKey | string | Destination account key |
└─destinationAccountType | string | Destination account type |
└─destinationAddress | string | Destination address (If the transaction currency is of UTXO type, please use the destinationAddressList field) |
└─isDestinationPhishing | bool | Destination address shows potential phishing risk. Only outgoing transactions on EVM chains and TRON are valid |
└─memo | string | Memo of the destination address when creating a transaction |
└─destinationAddressList | array | Destination address list |
└─address | string | Destination address |
└─isDestinationPhishing | bool | Destination address shows potential phishing risk. Only outgoing transactions on EVM chains and TRON are valid |
└─memo | string | Memo of the destination address when creating a transaction |
└─addressGroupKey | string | The unique identifier of the address group of the destination address, this field is only returned when the destination account type is VAULT_ACCOUNT |
└─amount | string | Transaction amount |
└─transactionType | string | Transaction Subtype |
└─transactionStatus | string | Transaction status |
└─transactionSubStatus | string | Transaction substatus |
└─createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
└─note | string | Platform note of the transaction when creating a transaction |
└─auditUserKey | string | Final approver key |
└─createdByUserKey | string | Creator key |
└─txFee | string | Transaction fee |
└─feeCoinKey | string | Coin key that is used to pay for the transaction fee when conducting a transfer, such as when transferring ERC-20 tokens, transaction fees are paid in ETH |
└─replaceTxHash | string | Quoted transaction hash (Only for sped-up transactions) |
└─customerRefId | string | Merchant unique business ID |
└─customerExt1 | string | Merchant extended field |
└─customerExt2 | string | Merchant extended field |
└─amlLock | string | Whether the source address contains AML address(es) YES: Contain NO: Not contain |
└─blockHeight | int64 | Block height (Available when the transaction status is pending confirmation or success) |
└─completedTime | int64 | Transaction completion time |
└─realDestinationAccountType | string | Type of actual destination account |
└─transactionSubStatusDesc | string | Transaction substatus description |
└─txAmountToUsd | string | Amount in USD when transact |
└─sourceAccountName | string | Source account name |
└─sourceAccountTypeName | string | Source account type name |
└─destinationAccountName | string | Destination account name |
└─destinationAccountTypeName | string | Destination account type name |
└─auditUserName | string | Final approver username |
└─createdByUserName | string | Creator username |
└─transactionDirection | string | Transaction Direction |
Transaction List V2
Filter transaction history by various conditions.
HTTP Request
POST /v2/transactions/list
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"direct": "NEXT",
"limit": 100,
"fromId": "tx46461daa9b7a4612abce99e7ce598844",
"sourceAccountKey": "account27ddec416e2342918e4381d4727c2905",
"sourceAccountType": "VAULT_ACCOUNT",
"transactionStatus": "COMPLETED",
"transactionSubStatus": "CONFIRMED",
"destinationAccountType": "ONE_TIME_ADDRESS",
"realDestinationAccountType": "ONE_TIME_ADDRESS",
"destinationAccountKey": "",
"destinationAddress": "0x57b2aCEf9f40aaBCC20D3aac4A37eAF2371a788E",
"hideSmallAmountUsd": "0.01",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"transactionDirection": "INTERNAL_TRANSFER"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
direct | string | No | Query page direction, NEXT by default |
limit | int32 | No | The number of items to retrieve at a time, default max value is 500 |
fromId | string | No | txkey of the first transaction record. If the first page has no value, provide the txKey of the last transaction record from the previous result |
sourceAccountKey | string | No | Source account key |
sourceAccountType | string | No | Source account type |
destinationAccountKey | string | No | Destination account key |
destinationAccountType | string | No | Destination account type |
createTimeMin | int64 | No | Start time for creating a transaction, UNIX timestamp (ms) (If no value is provided, the default value is createTimeMax minus 24 hours) |
createTimeMax | int64 | No | End time for creating a transaction, UNIX timestamp (ms) (If no value is provided, the default value is the current UTC time) |
txAmountMin | string | No | Min transaction amount |
txAmountMax | string | No | Max transaction amount |
coinKey | string | No | Coin key, multiple coin keys are separated by commas |
feeCoinKey | string | No | Transaction fee coin key, multiple coin keys are separated by commas |
transactionStatus | string | No | Transaction status |
transactionSubStatus | string | No | Transaction substatus |
completedTimeMin | int64 | No | Min duration for completing a transaction, UNIX timestamp (ms) |
completedTimeMax | int64 | No | Max duration for completing a transaction, UNIX timestamp (ms) |
customerRefId | string | No | Merchant unique business ID |
realDestinationAccountType | string | No | Type of actual destination account |
hideSmallAmountUsd | string | No | Filter out custom transaction amounts, excluding transaction records below a certain amount specified in USD from the query results |
transactionDirection | string | No | Filter transaction history by transaction direction: Default: Retrieve all types of transactions INFLOW: Retrieve inflows OUTFLOW: Retrieve outflows INTERNAL_TRANSFER: Retrieve internal transfers |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"isSourcePhishing": false,
"sourceAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"isSourcePhishing": false,
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43"
}
],
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"isDestinationPhishing": false,
"memo": "memoExample",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"isDestinationPhishing": false,
"memo": "memoExample",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"isDestinationPhishing": false,
"memo": "memoExample",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"amount": "0.0001"
}
],
"transactionType": "NORMAL",
"transactionStatus": "COMPLETED",
"transactionSubStatus": "CONFIRMED",
"createTime": 1626075236000,
"note": "Initiate transaction",
"auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"txFee": "0.000106841386050000",
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"replaceTxHash": "0x628626531285bb90d4130d3beb3c355d2a7fe0bdfa1fa05e3431f15340aafeb6",
"customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerExt1": "1",
"customerExt2": "2",
"amlLock": "NO",
"blockHeight": 10000000,
"completedTime": 1626075236000,
"realDestinationAccountType": "VAULT_ACCOUNT",
"transactionSubStatusDesc": "Confirmed",
"txAmountToUsd": "19.9813552",
"sourceAccountName": "wallet1",
"sourceAccountTypeName": "vault",
"destinationAccountName": "API transaction group",
"destinationAccountTypeName": "Whitelisted address",
"auditUserName": "test",
"createdByUserName": "test",
"transactionDirection": "INTERNAL_TRANSFER"
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
txHash | string | Transaction hash |
coinKey | string | Coin key |
txAmount | string | Transaction amount, the unit is the symbol returned by the coin list |
sourceAccountKey | string | Source account key |
sourceAccountType | string | Source account type |
sourceAddress | string | Source address (If the transaction currency is of UTXO type, please use the sourceAddressList field) |
isSourcePhishing | bool | Source address shows potential phishing risk. Only incoming transactions on EVM chains and TRON are valid |
sourceAddressList | array | Source address list |
└─address | string | Source address |
└─isSourcePhishing | bool | Source address shows potential phishing risk. Only incoming transactions on EVM chains and TRON are valid |
└─addressGroupKey | string | The unique identifier of the address group of the source address, this field is only returned when the transaction source account type is VAULT_ACCOUNT |
destinationAccountKey | string | Destination account key |
destinationAccountType | string | Destination account type |
destinationAddress | string | Destination address (If the transaction currency is of UTXO type, please use the destinationAddressList field) |
isDestinationPhishing | bool | Destination address shows potential phishing risk. Only outgoing transactions on EVM chains and TRON are valid |
memo | string | Memo of the destination address when creating a transaction |
destinationAddressList | array | Destination address list |
└─address | string | Destination address |
└─isDestinationPhishing | bool | Destination address shows potential phishing risk. Only outgoing transactions on EVM chains and TRON are valid |
└─memo | string | Memo of the destination address when creating a transaction |
└─addressGroupKey | string | The unique identifier of the address group of the destination address, this field is only returned when the destination account type is VAULT_ACCOUNT |
└─amount | string | Transaction amount |
transactionType | string | Transaction Subtype |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
note | string | Platform note of the transaction when creating a transaction |
auditUserKey | string | Final approver key |
createdByUserKey | string | Creator key |
txFee | string | Transaction fee |
feeCoinKey | string | Coin key that is used to pay for the transaction fee when conducting a transfer, such as when transferring ERC-20 tokens, transaction fees are paid in ETH |
replaceTxHash | string | Quoted transaction hash (Only for sped-up transactions) |
customerRefId | string | Merchant unique business ID |
customerExt1 | string | Merchant extended field |
customerExt2 | string | Merchant extended field |
amlLock | string | Whether the source address contains AML address(es) YES: Contain NO: Not contain |
blockHeight | int64 | Block height (Available when the transaction status is pending confirmation or success) |
completedTime | int64 | Transaction completion time |
realDestinationAccountType | string | Type of actual destination account |
transactionSubStatusDesc | string | Transaction substatus description |
txAmountToUsd | string | Amount in USD when transact |
sourceAccountName | string | Source account name |
sourceAccountTypeName | string | Source account type name |
destinationAccountName | string | Destination account name |
destinationAccountTypeName | string | Destination account type name |
auditUserName | string | Final approver username |
createdByUserName | string | Creator username |
transactionDirection | string | Transaction Direction |
Create a Transaction - Deprecated
Create a new transaction.Please use the Create a Transaction V3 interface
HTTP Request
POST /v2/transactions/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"customerRefId": "customerRefIdExample",
"customerExt1": "customerExt1Example",
"customerExt2": "customerExt2Example",
"note": "noteExample",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txAmount": "0.00002",
"txFeeLevel": "HIGH",
"sourceAccountKey": "accounta247ca82828a4f93948282106135d109",
"sourceAccountType": "VAULT_ACCOUNT",
"destinationAccountKey": "5d1fd5c848fb441da8d2ec4f013acac5",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7",
"memo": "memoExampl",
"treatAsGrossAmount": false
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
customerRefId | string | Yes | Merchant unique business ID (100 characters max) The customerRefId uniquely represents a transaction. When a merchant submits the same transaction multiple times, in cases where the customerRefId value is duplicated (eg. resubmission due to request timeout or other errors), the interface returns error code 9001 and the same txKey as before. You can use the Retrieve a Transaction interface to inquire and confirm the transaction details. |
customerExt1 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
customerExt2 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
note | string | No | Platform note of a transaction within 180 characters (blockchain-agnostic) |
coinKey | string | Yes | Coin key |
txFeeLevel | string | No | Transaction Fee Rate Grade Choose between transaction fees. If the transaction fee rate is preset, it will take priority |
feeRateDto | object | No | Transaction fee rate, either txFeeLevel or feeRateDto |
└─feeRate | string | No | Fee rate: fee per byte for UTXO, gas price for EVM chains, free limit for TRON (optional) and gas price for SUIFor tokens support EIP-1559, please provide max priority fee and max fee instead of fee rate |
└─gasLimit | string | No | EVM gas limit |
└─maxPriorityFee | string | No | EIP-1559 max priority fee |
└─maxFee | string | No | EIP-1559 max fee |
└─gasPremium | string | No | Filecoin gas premium, similar to EIP-1559 max priority fee |
└─gasFeeCap | string | No | Filecoin gas fee cap, similar to EIP-1559 max fee |
└─gasBudget | string | No | SUI gas budget, similar to EIP-1559 max fee |
└─gasUnitPrice | string | No | The gas price the transaction sender is willing to pay, similar to EVM gasPrice |
└─maxGasAmount | string | No | The maximum number of gas units that the transaction sender is willing to spend to execute the transaction, similar to EVM gasLimit |
maxTxFeeRate | string | No | Maximum estimated transaction fee rate for a given transaction |
txAmount | string | Yes | Transaction amount |
treatAsGrossAmount | boolean | No | Deduct transaction fee from the transfer amount (only supports account model) False by default. If set to true, the transaction fee will be automatically calculated based on the parameter txFeeLevel or feeRateDto and deducted from the transfer amount. Please note this parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC.If the asset can’t be used for transaction fees, like USDC, this parameter is ignored |
sourceAccountKey | string | Yes | Source account key |
sourceAccountType | string | Yes | Account type |
destinationAccountKey | string | No | Destination account key Wallet account key if the destination is a wallet account Whitelist unique identifier if the destination is a whitelist account No value is needed if the destination is a new address |
destinationAccountType | string | Yes | Destination account type |
destinationAddress | string | No | This field is required if destinationAccountType is ONE_TIME_ADDRESS |
memo | string | No | The memo (up to 100 characters) for the destination address, also known as a comment or tag. This parameter is valid for transactions on the following networks: |
isRbf | boolean | No | Bitcoin enabled for RBF (Replace-by-fee is a protocol in the Bitcoin mempool that allows for the replacement of an unconfirmed transaction with another one) |
failOnContract | boolean | No | The default setting for the parameter is [true]. This parameter determines whether a transaction can be created when the target address is a smart contract. If set to [false], a transaction can still be created for a contract address |
nonce | int64 | No | Customizable nonce (In blockchain technology, the nonce is a transaction counter that helps to prevent double-spending and replay attacks on a blockchain network) |
sequenceNumber | int64 | No | Customizable sequence number on Aptos, similar to the nonce in the EVM. |
balanceVerifyType | string | No | Balance verification, BALANCE_CHECK by default |
utxoSelectionType | string | No | UTXO Selection, DEFAULT by default |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
Create a Transaction V3
Create a new transaction.
HTTP Request
POST /v3/transactions/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"customerRefId": "customerRefIdExample",
"customerExt1": "customerExt1Example",
"customerExt2": "customerExt2Example",
"note": "noteExample",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txAmount": "0.00002",
"txFeeLevel": "HIGH",
"sourceAccountKey": "accounta247ca82828a4f93948282106135d109",
"sourceAccountType": "VAULT_ACCOUNT",
"destinationAccountKey": "5d1fd5c848fb441da8d2ec4f013acac5",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7",
"memo": "memoExampl",
"treatAsGrossAmount": false
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
customerRefId | string | Yes | Merchant unique business ID (100 characters max) The customerRefId uniquely represents a transaction. When a merchant submits the same transaction multiple times, in cases where the customerRefId value is duplicated (eg. resubmission due to request timeout or other errors), the interface will return the same txKey as before. You can use the Retrieve a Transaction interface to inquire and confirm the transaction details. |
customerExt1 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
customerExt2 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
note | string | No | Platform note of a transaction within 180 characters (blockchain-agnostic) |
coinKey | string | Yes | Coin key |
txFeeLevel | string | No | Transaction Fee Rate Grade Choose between transaction fees. If the transaction fee rate is preset, it will take priority |
feeRateDto | object | No | Transaction fee rate, either txFeeLevel or feeRateDto |
└─feeRate | string | No | Fee rate: fee per byte for UTXO, gas price for EVM chains, free limit for TRON (optional) and gas price for SUIFor tokens support EIP-1559, please provide max priority fee and max fee instead of fee rate |
└─gasLimit | string | No | EVM gas limit |
└─maxPriorityFee | string | No | EIP-1559 max priority fee |
└─maxFee | string | No | EIP-1559 max fee |
└─gasPremium | string | No | Filecoin gas premium, similar to EIP-1559 max priority fee |
└─gasFeeCap | string | No | Filecoin gas fee cap, similar to EIP-1559 max fee |
└─gasBudget | string | No | SUI gas budget, similar to EIP-1559 max fee |
└─gasUnitPrice | string | No | The gas price the transaction sender is willing to pay, similar to EVM gasPrice |
└─maxGasAmount | string | No | The maximum number of gas units that the transaction sender is willing to spend to execute the transaction, similar to EVM gasLimit |
maxTxFeeRate | string | No | Maximum estimated transaction fee rate for a given transaction |
txAmount | string | Yes | Transaction amount |
treatAsGrossAmount | boolean | No | Deduct transaction fee from the transfer amount (only supports account model) False by default. If set to true, the transaction fee will be automatically calculated based on the parameter txFeeLevel or feeRateDto and deducted from the transfer amount. Please note this parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC.If the asset can’t be used for transaction fees, like USDC, this parameter is ignored |
sourceAccountKey | string | Yes | Source account key |
sourceAccountType | string | Yes | Account type |
destinationAccountKey | string | No | Destination account key Wallet account key if the destination is a wallet account Whitelist unique identifier if the destination is a whitelist account No value is needed if the destination is a new address |
destinationAccountType | string | Yes | Destination account type |
destinationAddress | string | No | This field is required if destinationAccountType is ONE_TIME_ADDRESS |
memo | string | No | The memo (up to 100 characters) for the destination address, also known as a comment or tag. This parameter is valid for transactions on the following networks: |
isRbf | boolean | No | Bitcoin enabled for RBF (Replace-by-fee is a protocol in the Bitcoin mempool that allows for the replacement of an unconfirmed transaction with another one) |
failOnContract | boolean | No | The default setting for the parameter is [true]. This parameter determines whether a transaction can be created when the target address is a smart contract. If set to [false], a transaction can still be created for a contract address |
nonce | int64 | No | Customizable nonce (In blockchain technology, the nonce is a transaction counter that helps to prevent double-spending and replay attacks on a blockchain network) |
sequenceNumber | int64 | No | Customizable sequence number on Aptos, similar to the nonce in the EVM. |
balanceVerifyType | string | No | Balance verification, BALANCE_CHECK by default |
utxoSelectionType | string | No | UTXO Selection, DEFAULT by default |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"customerRefId": "customerRefIdExample",
"idempotentRequest": false
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
customerRefId | string | Merchant unique business ID for transaction creation |
idempotentRequest | bool | With idempotentRequest set to true, the system enforces idempotency by returning the original txKey for duplicate customerRefIds, preventing redundant transaction creation |
UTXO Batch Transaction
For UTXOs that natively support multiple OUTPUTs, this interface allows a single transaction to transfer funds to multiple destination addresses simultaneously.(To use the Co-Signer, please use version 1.5.9 or higher)
HTTP Request
POST /v1/transactions/utxo/multidest/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"customerRefId": "customerRefIdExample",
"customerExt1": "customerExt1Example",
"customerExt2": "customerExt2Example",
"note": "noteExample",
"coinKey": "BTC_TESTNET",
"txFeeLevel": "HIGH",
"sourceAccountKey": "accounta247ca82828a4f93948282106135d109",
"sourceAccountType": "VAULT_ACCOUNT",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"amount": "0.0001"
}
]
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
customerRefId | string | Yes | Merchant unique business ID (100 characters max) |
customerExt1 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
customerExt2 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
note | string | No | Transaction note (180 characters max) |
coinKey | string | Yes | Coin Key (Only supports UTXO-based currencies, such as Bitcoin, Bitcoin Cash, Dash) |
txFeeLevel | string | No | Transaction Fee Rate Grade Choose between the transaction fee rate. If the transaction fee rate is preset, it will take priority |
feeRateDto | object | No | Transaction fee rate, either txFeeLevel or feeRateDto |
└─feeRate | string | No | Fee rate: fee per byte for UTXO |
maxTxFeeRate | string | No | Maximum estimated transaction fee rate for a given transaction |
sourceAccountKey | string | Yes | Source account key |
sourceAccountType | string | Yes | Account type |
destinationAddressList | array | Yes | Destination address list |
└─address | string | Yes | Destination address |
└─amount | string | Yes | Transaction amount |
destinationTag | string | No | Destination tag |
isRbf | boolean | No | Bitcoin enabled for RBF (Replace-by-fee is a protocol in the Bitcoin mempool that allows for the replacement of an unconfirmed transaction with another one) |
utxoSelectionType | string | No | UTXO Selection, DEFAULT by default |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
Speed Up Transactions
Speed up transactions facing delayed on-chain confirmation due to low transaction fees. The supported blockchains are as follows:
- EVM chains: such as ETH, ETC, BSC, MATIC, etc.
- UTXO-supported chains: Bitcoin (supports RBF and CPFP) and other UTXO-based chains supporting CPFP.
- FileCoin
- Aptos
HTTP Request
POST /v2/transactions/recreate
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txHash": "0x7c45560e4aed51cbb45e477214c106203df3210e50740d2dad94ea7da41af803",
"txFeeLevel": "HIGH"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
txKey | string | Yes | Transaction key |
txHash | string | Yes | Transaction hash |
coinKey | string | Yes | Coin key |
txFeeLevel | string | No | Transaction Fee Rate Grade Choose between the transaction fee rate. If the transaction fee rate is preset, it will take priority |
feeRateDto | object | No | Transaction fee rate, either txFeeLevel or feeRateDto |
└─feeRate | string | No | Fee rate: fee per byte for UTXO and gas price for EVM chains |
└─gasLimit | string | No | EVM gas limit |
└─maxPriorityFee | string | No | EIP-1559 max priority fee |
└─maxFee | string | No | EIP-1559 max fee |
└─gasPremium | string | No | Filecoin gas premium, similar to EIP-1559 max priority fee |
└─gasFeeCap | string | No | Filecoin gas fee cap, similar to EIP-1559 max fee |
└─gasUnitPrice | string | No | The gas price the transaction sender is willing to pay, similar to EVM gasPrice |
└─maxGasAmount | string | No | The maximum number of gas units that the transaction sender is willing to spend to execute the transaction, similar to EVM gasLimit |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
Retrieve a Transaction
To query a transaction, either customerRefId
or txKey
are required. If both values are provided, the retrieval will be based on the txKey
.
HTTP Request
POST /v1/transactions/one
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"customerRefId": "customerRefIdExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
txKey | string | No | Transaction key |
customerRefId | string | No | Merchant unique business ID (100 characters max) |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"isSourcePhishing": false,
"sourceAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"isSourcePhishing": false,
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43"
}
],
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"isDestinationPhishing": false,
"memo": "memoExample",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"isDestinationPhishing": false,
"memo": "memoExample",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"isDestinationPhishing": false,
"memo": "memoExample",
"amount": "0.0001"
}
],
"transactionStatus": "COMPLETED",
"transactionSubStatus": "CONFIRMED",
"createTime": 1626075236000,
"note": "Initiate transaction",
"auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"txFee": "0.000106841386050000",
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"replaceTxHash": "",
"customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerExt1": "1",
"customerExt2": "2",
"blockHeight": 10000000,
"completedTime": 1626075236000,
"realDestinationAccountType": "VAULT_ACCOUNT",
"transactionSubStatusDesc": "Confirmed",
"txAmountToUsd": "19.9813552",
"sourceAccountName": "wallet1",
"sourceAccountTypeName": "vault",
"destinationAccountName": "API transaction group",
"destinationAccountTypeName": "Whitelisted address",
"auditUserName": "test",
"createdByUserName": "test",
"speedUpHistory": [{
"txKey": "tx0c7f8ab51dfa4fe4a20a29689ba43cd0",
"txHash": "",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"isSourcePhishing": false,
"sourceAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"isSourcePhishing": false,
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43"
}
],
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"isDestinationPhishing": false,
"memo": "memoExample",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"isDestinationPhishing": false,
"memo": "memoExample",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"isDestinationPhishing": false,
"memo": "memoExample",
"amount": "0.0001"
}
],
"transactionType": "NORMAL",
"transactionStatus": "FAILED",
"transactionSubStatus": "THE_DEAL_WAS_ABANDONED",
"createTime": 1626075236000,
"note": "Initiate transaction",
"auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"txFee": "0.000106841386050000",
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"replaceTxHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e722",
"customerExt1": "1",
"customerExt2": "2",
"amlLock": "NO",
"blockHeight": 10000000,
"completedTime": 1626075236000,
"realDestinationAccountType": "VAULT_ACCOUNT",
"transactionSubStatusDesc": "Confirmed",
"txAmountToUsd": "19.9813552",
"sourceAccountName": "wallet1",
"sourceAccountTypeName": "vault",
"destinationAccountName": "API transaction group",
"destinationAccountTypeName": "Whitelisted address",
"auditUserName": "test",
"createdByUserName": "test",
"transactionDirection": "INTERNAL_TRANSFER"
}]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
txHash | string | Transaction hash |
coinKey | string | Coin key |
txAmount | string | Transaction amount, the unit is the symbol returned by the coin list |
sourceAccountKey | string | Source account key |
sourceAccountType | string | Source account type |
sourceAddress | string | Source address (If the transaction currency is of UTXO type, please use the sourceAddressList field) |
isSourcePhishing | bool | Source address shows potential phishing risk. Only incoming transactions on EVM chains and TRON are valid |
sourceAddressList | array | Source address list |
└─address | string | Source address |
└─isSourcePhishing | bool | Source address shows potential phishing risk. Only incoming transactions on EVM chains and TRON are valid |
└─addressGroupKey | string | The unique identifier of the address group of the source address, this field is only returned when the transaction source account type is VAULT_ACCOUNT |
destinationAccountKey | string | Destination account key |
destinationAccountType | string | Destination account type |
destinationAddress | string | Destination address (If the transaction currency is of UTXO type, please use the destinationAddressList field) |
isDestinationPhishing | bool | Destination address shows potential phishing risk. Only outgoing transactions on EVM chains and TRON are valid |
memo | string | Memo of the destination address when creating a transaction |
destinationAddressList | array | Destination address list |
└─address | string | Destination address |
└─isDestinationPhishing | bool | Destination address shows potential phishing risk. Only outgoing transactions on EVM chains and TRON are valid |
└─memo | string | Memo of the destination address when creating a transaction |
└─addressGroupKey | string | The unique ID of the address group of the destination address, this field is only returned when the destination account type is VAULT_ACCOUNT |
└─amount | string | Transaction amount |
transactionType | string | Transaction Subtype |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
note | string | Platform note of the transaction when creating a transaction |
auditUserKey | string | Final approver key |
createdByUserKey | string | Creator key |
txFee | string | Transaction fee |
feeCoinKey | string | Coin key that is used to pay for the transaction fee when conducting a transfer, such as when transferring ERC-20 tokens, transaction fees are paid in ETH |
replaceTxHash | string | Quoted transaction hash (Only for sped-up transactions) |
customerRefId | string | Merchant unique business ID |
customerExt1 | string | Merchant extended field |
customerExt2 | string | Merchant extended field |
amlLock | string | Whether the source address contains AML address(es) YES: Contain NO: Not contain |
blockHeight | int64 | Block height (for confirming transaction and succeeded transaction) |
completedTime | int64 | Transaction completion time |
realDestinationAccountType | string | Type of actual destination account |
transactionSubStatusDesc | string | Transaction substatus description |
txAmountToUsd | string | Amount in USD when transact |
sourceAccountName | string | Source account name |
sourceAccountTypeName | string | Source account type name |
destinationAccountName | string | Destination account name |
destinationAccountTypeName | string | Destination account type name |
auditUserName | string | Final approver username |
createdByUserName | string | Creator username |
speedUpHistory | array | Transaction history (resulting from sped-up transactions); Only have a value once the current transaction has been accelerated |
transactionDirection | string | Transaction Direction |
Retrieve Transaction Approval Details
Query approval details of a transaction. Exclusively for transactions using the new advanced transaction policy. Learn more about new advanced transaction policies
HTTP Request
POST /v1/transactions/approvalDetail
Example Request
{
"apiKey":"94d96119****************6eb2056a",
"timestamp":1690361332392,
"key":"OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig":"aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKeyList": ["tx46461daa9b7a4612abce99e7ce598844"]
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
txKeyList | array | Yes | Transaction key list within 20 transaction keys |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"approvalDetailList": [
{
"txKey": "tx2f1783b39f3542f2a48d6fe44a84a8fe",
"approvalStatus": "APPROVED",
"policyName": "policyName",
"approvalProgress": {
"recipientApproval": {
"connectId": "m28tivhl9srx",
"name": "connectName",
"approvalStatus": "APPROVED"
},
"teamApproval": [
{
"type": "SINGLE",
"limitBy": "AMOUNT",
"range": [
0,
-1
],
"timePeriod": null,
"approvalNodes": [
{
"threshold": 1,
"name": "adminName",
"approvalStatus": "APPROVED",
"members": [
{
"auditUserKey": "7eb7b**********443d0",
"auditUserName": "auditUserName",
"isCoSigner": false,
"approvalStatus": "APPROVED"
}
]
}
]
}
]
}
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
approvalDetailList | array | List of transaction approval details, excluding the following transactions: |
└─txKey | string | Transaction key |
└─approvalStatus | string | Approval status: |
└─policyName | string | Name of triggered policy |
└─approvalProgress | object | Approval progress details |
└─recipientApproval | object | Approval progress details on the recipient end. This field is only returned when the receiving address is Connect and the counterparty has set up incoming funds approval (except when the transaction approval status is BLOCKED_BY_POLICY) |
└─connectId | string | Recipient Connect ID |
└─name | string | Recipient Connect profile name |
└─approvalStatus | string | Approval status on the recipient end: |
└─teamApproval | array | Approval progress. Proceeds to team approval after Connect recipient approval (if any) is completed. |
└─type | string | |
└─limitBy | string | |
└─range | array | Limit range of limitBy in a format as: [min, max],which means: min <= limitBy < max, where max is -1 means there's no maximum limit |
└─timePeriod | int64 | Hour-based limit time period of limitBy.This field is only returned when type is CUMULATIVE |
└─approvalNodes | array | Approval node. If the transaction is blocked by policy, as the transaction approval status is BLOCKED_BY_POLICY, there will be no approval nodes |
└─threshold | int64 | Approval threshold of the node |
└─name | string | Approval node name |
└─approvalStatus | string | Current approval status of the approval node: 1. A member in the node cancel the transaction 2. A preceding approval node cancel or reject the approval, all subsequent nodes will automatically change to "Approval cancelled" status 3. The Connect recipient (if any) cancel or reject approval, all nodes will automatically change to "Approval cancelled" status 4. Transaction is cancelled before the approval completing, all nodes will automatically change to "Approval cancelled" status |
└─members | array | Approval member |
└─auditUserKey | string | Approver unique identifier |
└─auditUserName | string | Approver name |
└─isCoSigner | bool | Whether the approver is API Co-Signer |
└─approvalStatus | string | Approval status of current approver: |
Estimate Transaction Fee
This interface provides users with an estimated range of transaction fee rates of a given cryptocurrency when creating or speeding up transactions.
HTTP Request
POST /v2/transactions/getFeeRate
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txHash": "0x7c45560e4aed51cbb45e477214c106203df3210e50740d2dad94ea7da41af803",
"sourceAccountKey": "account08a2369f59214b1e9099dc6346f694ca",
"sourceAddress": "0xC3A6b8dd08D3741819fAdBa4c5780b9524f510D5",
"destinationAddress": "0xC3A6b8dd08D3741819fAdBa4c5780b9524f510D4",
"memo": "memoExample",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"amount": "0.0001"
}
],
"value": "10"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKey | string | Yes | Coin key |
txHash | string | No | Transaction hash, pass the original transaction hash when speed up transaction estimation |
sourceAccountKey | string | No | Source account key (Required for UTXOs) |
sourceAddress | string | No | Source address is required for TRON, Solana and TON when estimating transaction fees. For EVM-based transactions, it is required when retrieving the gas limit on the blockchain, otherwise a default fixed gas limit will be returned. For Aptos-based transactions, it is required when retrieving the max gas amount on the blockchain, otherwise a default fixed max gas amount will be returned |
destinationAddress | string | No | Destination address is required for Solana and TON when estimating transaction fees while it's optional for TRON and FIL (providing it may result in a more accurate fee estimation). For EVM-based transactions, it is required when retrieving the gas limit on the blockchain, otherwise a default fixed gas limit will be returned. For Aptos-based transactions, it is required when retrieving the max gas amount on the blockchain, otherwise a default fixed max gas amount will be returned |
memo | string | No | The memo (up to 100 characters) for the destination address, also known as a comment or tag. This parameter is valid for transactions on the following networks: |
destinationAddressList | array | No | Destination address list (Use this field only when the transaction currency is of UTXO type and involves transferring funds to multiple addresses in a single transaction) |
└─address | string | No | Destination address |
└─amount | string | No | Transaction amount |
value | string | No | Transfer amount (It can estimate transaction fee more accurately) |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"feeUnit": "Gwei",
"minFeeRate": {
"baseFee": "0.000049522",
"fee": "0.000034392259671",
"feeRate": "1.000049522",
"gasLimit": "22000",
"maxFee": "1.000049522",
"bytesSize": "1",
"gasPremium": "1",
"gasFeeCap": "1",
"gasBudget": "1500",
"gasUnitPrice": "1",
"maxGasAmount": "1500"
},
"lowFeeRate": {
"baseFee": "0.000049522",
"fee": "0.000034392259671",
"feeRate": "1.100049522",
"gasLimit": "22000",
"maxFee": "1.100055713",
"maxPriorityFee": "1.1",
"bytesSize": "1",
"gasPremium": "1",
"gasFeeCap": "1",
"gasBudget": "1500",
"gasUnitPrice": "1",
"maxGasAmount": "1500"
},
"middleFeeRate": {
"baseFee": "0.000049522",
"fee": "0.000037180104885",
"feeRate": "1.500049522",
"gasLimit": "22000",
"maxFee": "1.500079325",
"maxPriorityFee": "1.5",
"bytesSize": "1",
"gasPremium": "1",
"gasFeeCap": "1",
"gasBudget": "1500",
"gasUnitPrice": "1",
"maxGasAmount": "1500"
},
"highFeeRate": {
"baseFee": "0.000049522",
"fee": "1.887726651",
"feeRate": "2.000049522",
"gasLimit": "22000",
"maxFee": "2.000112945",
"maxPriorityFee": "2",
"bytesSize": "1",
"gasPremium": "1",
"gasFeeCap": "1",
"gasBudget": "1500",
"gasUnitPrice": "1",
"maxGasAmount": "1500"
}
}
}
Response Data
Parameter | Type | Description |
---|---|---|
feeUnit | string | Fee rate unit |
minFeeRate | object | Minimum fee rate |
lowFeeRate | object | Fee rate when the transaction fee rate is low |
middleFeeRate | object | Fee rate when the transaction fee rate is medium |
highFeeRate | object | Fee rate when the transaction fee rate is high |
└─feeRate | string | Fee rate, UTXO fee per byte, EVM gas price, TRON fee limit and SUI gas price |
└─fee | string | Estimated transaction fee |
└─gasLimit | string | EVM gas limit |
└─baseFee | string | EIP-1559 base fee |
└─maxPriorityFee | string | EIP-1559 max priority fee |
└─maxFee | string | EIP-1559 max fee, different from maxTxFeeRate in API |
└─bytesSize | string | The number of bytes for a UTXO, excluding UTXOs that are less than 1,000 satoshis |
└─gasPremium | string | Filecoin gas premium, similar to EIP-1559 max priority fee |
└─gasFeeCap | string | Filecoin gas fee cap, similar to EIP-1559 max fee |
└─gasBudget | string | SUI gasBudget |
└─gasUnitPrice | string | The gas price the transaction sender is willing to pay, similar to EVM gasPrice |
└─maxGasAmount | string | The maximum number of gas units that the transaction sender is willing to spend to execute the transaction, similar to EVM gasLimit |
Cancel Transaction
Cancel the authorization-pending transaction and the signing-in-progress transaction.
HTTP Request
POST /v1/transactions/cancel
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txType": "TRANSACTION"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
txKey | string | Yes | Transaction key |
txType | string | No | Transaction type, TRANSACTION by default |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"result": true
}
}
Response Data
Parameter | Type | Description |
---|---|---|
result | boolean | Execution result True: Success False: Fail |
UTXO Sweeping
For multi-address UTXOs under a wallet account, this interface allows users to collect the balances of certain qualifying addresses into a specified destination address.
HTTP Request
POST /v1/transactions/utxo/collection
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"customerRefId": "customerRefIdExample",
"customerExt1": "customerExt1Example",
"customerExt2": "customerExt2Example",
"note": "noteExample",
"coinKey": "DASH_TESTNET",
"txFeeLevel": "HIGH",
"minCollectionAmount": "0.1",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAccountKey": "account6e63dacbf80243118e425ce5363b31a3",
"destinationAccountType": "VAULT_ACCOUNT",
"destinationAccountKey": "accountdd4a4bcefaa849fc8b847c8af74baf73"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
customerRefId | string | Yes | Merchant unique business ID (100 characters max) |
customerExt1 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
customerExt2 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
note | string | No | Transaction note (180 characters max) |
coinKey | string | Yes | Coin key |
txFeeRate | string | No | Transaction fee rate, the unit is the feeUnit returned by the coin list |
txFeeLevel | string | No | Transaction Fee Rate Grade Choose between the transaction fee rate. If the transaction fee rate is preset, it will take priority |
maxTxFeeRate | string | No | Maximum estimated transaction fee rate for a given transaction |
minCollectionAmount | string | No | Minimum sweeping amount |
sourceAccountKey | string | Yes | Source wallet account key |
sourceAccountType | string | Yes | Account type, pass value VAULT_ACCOUNT |
destinationAccountKey | string | Yes | Destination wallet account key |
destinationAccountType | string | Yes | Destination account type, providing a value VAULT_ACCOUNT |
destinationAddress | string | No | Destination address |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"collectionAmount": "1",
"collectionNum": 10
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
collectionAmount | string | Sweeping amount, the unit is the symbol returned by the coin list |
collectionNum | int32 | Number of collections |
Web3 API
Web3 API Introduction
Safeheron offers institutional clients a secure governance solution through a universal multi-signature approval system for Web3 applications, such as DeFi, NFT, etc. Through our API, users can effortlessly initiate transactions and seamlessly connect to various Web3 applications related to DeFi, NFT, and more, thereby automating your Web3 operations.
The following APIs are supported:
- eth_sign
- personal_sign
- eth_signTypedData
- eth_signTransaction
Create a Web3 Wallet Account
Create a new Web3 wallet account.
HTTP Request
POST /v1/web3/account/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"customerRefId": "customerRefIdExample",
"accountName": "accountNameExample",
"hiddenOnUI": true
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
customerRefId | string | No | Merchant unique business ID (100 characters max) The customerRefId uniquely represents a wallet. In the case of duplicate customerRefId values (for example, when resubmitting due to request timeouts or other errors), the data returned by the interface will remain consistent |
accountName | string | No | Account name, 50 characters max |
hiddenOnUI | boolean | No | Visibility status in Safeheron App and Web Console False: Visible by default True: Invisible; the invisible wallet can only be managed and used through the API, such as querying and using the wallet as the source account when initiating Web3 signing |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"accountName": "wallet 11",
"accountKey": "account2024152bd65d4eaa85a26e57497562c1",
"hiddenOnUI": false,
"pubkeyList": [
{
"signAlg": "secp256k1",
"pubkey": "02c165c9a481f6a12eabe0d417ca6e7d04e762c5786afdf55c8c5716a1214b8cbf" }
],
"addressList": [
{
"blockchainType": "EVM",
"derivePath": "m/44/666/0/0/0",
"address": "0x111111111111111111111111111"
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
accountKey | string | Account Key, the only account identifier |
accountName | string | Account name |
hiddenOnUI | boolean | Wallet's visibility status in Safeheron App and Web Console True: Invisible False: Visible |
pubKeyList | array | Account public key information |
└─signAlg | string | Signature algorithm, currently supports secp256k1 |
└─pubKey | string | Account compressed public key |
addressList | array | Address list |
└─blockchainType | string | Blockchain type |
└─derivePath | string | BIP44 derivation path |
└─address | string | Coin receiving address |
Batch Create Web3 Wallet Accounts
Create a batch of wallet accounts based on specified number. Web3 wallet accounts created in batches are not displayed in the Safeheron App by default.
HTTP Request
POST /v1/web3/batch/account/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"accountName": "accountNameExample",
"count": 10
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountName | string | No | The prefix of wallet account name, 50 characters max |
hiddenOnUI | boolean | No | Visibility status in Safeheron App and Web Console False: Visible by default True: Invisible; the invisible wallet can only be managed and used through the API, such as querying and using the wallet as the source account when initiating Web3 signing |
count | int32 | Yes | Number of wallets to be created, greater than 0, less than 100 |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"accountKey": "account2024152bd65d4eaa85a26e57497562c1",
"pubkeyList": [
{
"signAlg": "secp256k1",
"pubkey": "02c165c9a481f6a12eabe0d417ca6e7d04e762c5786afdf55c8c5716a1214b8cbf" }
],
"addressList": [
{
"blockchainType": "EVM",
"derivePath": "m/44/666/0/0/0",
"address": "0x111111111111111111111111111"
}
]
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
accountKey | string | Account Key, the only account identifier |
pubKeyList | array | Account public key information |
└─signAlg | string | Signature algorithm, currently supports secp256k1 |
└─pubKey | string | Account compressed public key |
addressList | array | Address list |
└─blockchainType | string | Blockchain type |
└─derivePath | string | BIP44 derivation path |
└─address | string | Coin receiving address |
List Web3 Wallet Accounts
Filter Web3 wallet account lists by various conditions.
HTTP Request
POST /v1/web3/account/list
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"direct": "NEXT",
"limit": 100,
"fromId": "account2024152bd65d4eaa85a26e57497562c1",
"customerRefId": "customerRefIdExample",
"namePrefix": "namePrefixExample",
"hiddenOnUI": false,
"archived": false
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
direct | string | No | Query page direction, NEXT by default |
limit | int32 | No | The number of items to retrieve at a time, default max value is 500 |
fromId | string | No | accountKey of the first wallet |
customerRefId | string | No | Merchant unique business ID (100 characters max) |
namePrefix | string | No | Filter the response based on this account name prefix |
hiddenOnUI | boolean | No | Filter the wallet accounts based on hiddenOnUI: Default: Retrieve all wallet accounts True: Retrieve the wallet accounts with hiddenOnUI set to true False: Retrieve the wallet accounts with hiddenOnUI set to false |
archived | boolean | No | Filter wallets based on archived: Default: Retrieve all wallets True: retrieve archived wallets in the Web Console False: Retrieve unarchived wallets in the Web Console Archived: Wallets can be set to "archived" in the Web Console. Archived wallets will be invisible in the wallet lists of the App and Web Console. You can view archived wallets in the "Archived Wallets"of the Web Console |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"accountName": "wallet 11",
"accountKey": "account2024152bd65d4eaa85a26e57497562c1",
"customerRefId": "customerRefIdExample",
"hiddenOnUI": false,
"archived": false,
"pubkeyList": [
{
"signAlg": "secp256k1",
"pubkey": "02226320f7571a5b1f2d56f3f1d1b6c4efce9a1a882f8f42bfc37bc7d1f3848cc2"
}
],
"addressList": [
{
"blockchainType": "EVM",
"derivePath": "m/44/666/0/0/0",
"address": "0x111111111111111111111111111"
}
]
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
accountKey | string | Account Key, the only account identifier |
customerRefId | string | Merchant unique business ID |
accountName | string | Account name |
hiddenOnUI | boolean | Wallet's visibility status in Safeheron App and Web Console True: Invisible False: Visible |
archived | boolean | Wallet's archive status in Safeheron App and Web Console True: Archived False: Unarchived |
pubKeyList | array | Account public key information |
└─signAlg | string | Signature algorithm, currently supports secp256k1 |
└─pubKey | string | Account compressed public key |
addressList | array | Address list |
└─blockchainType | string | Blockchain type |
└─derivePath | string | BIP44 derivation path |
└─address | string | Coin receiving address |
Create ethSign
Merchants can initiate an ethSign signature through this interface. The merchant is required to serialize the transaction data, generating a corresponding hash (supporting both 0x and non-0x formatted data). The hash is then submitted through this interface to create a signature, which can be obtained by Retrieve a Single Web3 Signature interface or webhook. From there, merchants can complete the subsequent steps according to their own needs once they have obtained the signature.
HTTP Request
POST /v1/web3/sign/ethSign
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"accountKey": "account099d3534391040c491a93bfbc9914662",
"customerRefId": "customerRefIdExample",
"note": "noteExample",
"customerExt1": "customerExt1Example",
"customerExt2": "customerExt2Example",
"useCustomNetwork": false,
"messageHash": {
"chainId": 1,
"hash": ["hashString"]
}
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountKey | string | Yes | Source account key |
customerRefId | string | Yes | Merchant unique business ID (100 characters max) The customerRefId uniquely represents a transaction. When a merchant submits the same transaction multiple times, in cases where the customerRefId value is duplicated (eg. resubmission due to request timeout or other errors), the interface returns error code 9001 and the same txKey as before. You can use the Retrieve a Transaction interface to inquire and confirm the transaction details. |
note | string | No | Note |
customerExt1 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
customerExt2 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
useCustomNetwork | boolean | No | Use custom network False: Use the network supported by Safeheron by default True: Use a custom network added through the Safeheron Browser Extension |
messageHash | object | Yes | Message Hash |
└─chainId | int64 | Yes | Chain ID (Does not participate in signing, only the hash is used for signing) |
└─hash | array | Yes | Pending signature hash, hexadecimal string (Currently only supports one input) |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":
{
"txKey": "tx7dacce99c5f249b6bf486214596a5458"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
Create personalSign
Merchants can initiate a personalSign signature for any text using this interface. The merchant only needs to prepare the data to be signed and submit it through this interface to create the signature. The resulting signature can then be obtained by Retrieve a Single Web3 Signature interface or via webhook. From there, merchants can complete the subsequent steps according to their own needs once they have obtained the signature.
HTTP Request
POST /v1/web3/sign/personalSign
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"accountKey": "account099d3534391040c491a93bfbc9914662",
"customerRefId": "customerRefIdExample",
"note": "noteExample",
"customerExt1": "customerExt1Example",
"customerExt2": "customerExt2Example",
"useCustomNetwork": false,
"message": {
"chainId": 1,
"data": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69"
}
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountKey | string | Yes | Source account key |
customerRefId | string | Yes | Merchant unique business ID (100 characters max) The customerRefId uniquely represents a transaction. When a merchant submits the same transaction multiple times, in cases where the customerRefId value is duplicated (eg. resubmission due to request timeout or other errors), the interface returns error code 9001 and the same txKey as before. You can use the Retrieve a Transaction interface to inquire and confirm the transaction details. |
note | string | No | Note |
customerExt1 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
customerExt2 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
useCustomNetwork | boolean | No | Use custom network False: Use the network supported by Safeheron by default True: Use a custom network added through the Safeheron Browser Extension |
message | object | Yes | Message |
└─chainId | int64 | Yes | Chain ID (Does not participate in signing, only the data is used for signing) |
└─data | string | Yes | Data to be signed |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":
{
"txKey": "tx7dacce99c5f249b6bf486214596a5458"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
Create ethSignTypedData
Merchants can initiate an ethSignTypedData signature of specific formatted data (supporting data formats of v1, v3, and v4) through this interface. Merchants will need to format their signature data and submit it through the interface. Once the signature is created, the result can be retrieved via Retrieve a Single Web3 Signature interface or webhook. From there, merchants can complete the subsequent steps according to their own needs once they have obtained the signature.
HTTP Request
POST /v1/web3/sign/ethSignTypedData
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"accountKey": "accountee096876e25f440b836bbcd745987eae",
"customerRefId": "customerRefIdExample",
"note": "noteExample",
"customerExt1": "customerExt1Example",
"customerExt2": "customerExt2Example",
"useCustomNetwork": false,
"message": {
"chainId": 1,
"data": "{\"types\":{\"EIP712Domain\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\"}],\"Person\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"wallet\",\"type\":\"address\"}],\"Mail\":[{\"name\":\"from\",\"type\":\"Person\"},{\"name\":\"to\",\"type\":\"Person\"},{\"name\":\"contents\",\"type\":\"string\"}]},\"primaryType\":\"Mail\",\"domain\":{\"name\":\"Ether Mail\",\"version\":\"1\",\"chainId\":1,\"verifyingContract\":\"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC\"},\"message\":{\"from\":{\"name\":\"Cow\",\"wallet\":\"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826\"},\"to\":{\"name\":\"Bob\",\"wallet\":\"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\"},\"contents\":\"Hello, Bob!\"}}"
"version": "ETH_SIGNTYPEDDATA_V4"
}
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountKey | string | Yes | Source account key |
customerRefId | string | Yes | Merchant unique business ID (100 characters max) The customerRefId uniquely represents a transaction. When a merchant submits the same transaction multiple times, in cases where the customerRefId value is duplicated (eg. resubmission due to request timeout or other errors), the interface returns error code 9001 and the same txKey as before. You can use the Retrieve a Transaction interface to inquire and confirm the transaction details. |
note | string | No | Note |
customerExt1 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
customerExt2 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
useCustomNetwork | boolean | No | Use custom network False: Use the network supported by Safeheron by default True: Use a custom network added through the Safeheron Browser Extension |
message | object | Yes | Message |
└─chainId | int64 | Yes | Chain ID (Does not participate in signing, only the data is used for signing) |
└─data | string | Yes | Data to be signed |
└─version | string | Yes | EthSignTypedData Version |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":
{
"txKey": "tx7dacce99c5f249b6bf486214596a5458"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
Create ethSignTransaction
Merchants can initiate ethSignTransaction signature transactions through this interface. The merchant must prepare transaction-related data, such as from, to, nonce, gas limit, gas price, value, data, and more. Once this data is submitted, a signature is created and the result can be obtained by Retrieve a Single Web3 Signature interface or webhook. From there, merchants can complete the subsequent steps according to their own needs once they have obtained the signature.
HTTP Request
POST /v1/web3/sign/ethSignTransaction
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"accountKey": "accountee096876e25f440b836bbcd745987eae",
"customerRefId": "customerRefIdExample",
"note": "noteExample",
"customerExt1": "customerExt1Example",
"customerExt2": "customerExt2Example",
"useCustomNetwork": false,
"transaction": {
"to": "0xb6f61ee3b221e956611c8f5c24baa379fd506523",
"value": 11111,
"chainId": 3,
"gasPrice": 15000000000,
"gasLimit": 21000,
"maxPriorityFeePerGas": "",
"maxFeePerGas": "",
"nonce": 2
}
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountKey | string | Yes | Source account key |
customerRefId | string | Yes | Merchant unique business ID (100 characters max) The customerRefId uniquely represents a transaction. When a merchant submits the same transaction multiple times, in cases where the customerRefId value is duplicated (eg. resubmission due to request timeout or other errors), the interface returns error code 9001 and the same txKey as before. You can use the Retrieve a Transaction interface to inquire and confirm the transaction details. |
note | string | No | Note |
customerExt1 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
customerExt2 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
useCustomNetwork | boolean | No | Use custom network False: Use the network supported by Safeheron by default True: Use a custom network added through the Safeheron Browser Extension |
transaction | object | Yes | Transaction |
└─to | string | No | To |
└─value | string | Yes | Value (Unit: wei) |
└─chainId | int64 | Yes | Chain ID |
└─gasPrice | string | No | Gas price |
└─gasLimit | int32 | Yes | Gas limit |
└─maxPriorityFeePerGas | string | No | Max priority fee per gas for EIP-1559 |
└─maxFeePerGas | string | No | Max fee per gas for EIP-1559 |
└─nonce | int64 | Yes | Nonce |
└─data | string | No | Data |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":
{
"txKey": "tx7dacce99c5f249b6bf486214596a5458"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
Cancel Signature
Cancel pending signatures.
HTTP Request
POST /v1/web3/sign/cancel
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"txKey": "tx86c4715a60cf43a186c4a41412ddd47e"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
txKey | string | Yes | Transaction key |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"result": true
}
}
Response Data
Parameter | Type | Description |
---|---|---|
result | boolean | Execution result True: Success False: Fail |
Retrieve a Single Web3 Signature
To query a specific Web3 signature, provide either the customerRefId or txKey parameter. If both are provided, the query will be performed based on the txKey value.
HTTP Request
POST /v1/web3/sign/one
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"txKey": "tx2e4a7b9d925447fcaa398c477b2699b2"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
txKey | string | No | Transaction key |
customerRefId | string | No | Merchant unique business ID (100 characters max) |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":
{
"txKey":null,
"accountKey":null,
"sourceAddress":null,
"transactionStatus":null,
"transactionSubStatus":null,
"createdByUserKey":null,
"createdByUserName":null,
"createTime":null,
"auditUserKey":null,
"auditUserName":null,
"customerRefId": "{{customerRefId}}",
"note": "",
"customerExt1":null,
"customerExt2":null,
"balance": "0",
"tokenBalance":null,
"symbol": "ETH",
"subjectType":null,
"tokenSymbol":null,
"transaction":{
"to": "TLFNznovqX6FRjk1bkbX47KUGQX2UAaFnY",
"value": "0",
"chainId":1,
"gasPrice": "0",
"gasLimit":0,
"maxPriorityFeePerGas": "0",
"maxFeePerGas": "0",
"nonce":2,
"data": "hexData",
"txHash":null,
"signedTransaction": "",
"sig": {
"hash": "hashString",
"sig": null
}
},
"message":{
"chainId":1,
"data": "json",
"sig": {
"hash": "hashString",
"sig": null
}
},
"messageHash":{
"chainId":1,
"sigList":[
{
"hash": "hashString",
"sig": null
}
]
}
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
accountKey | string | Source account key |
sourceAddress | string | Source address |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
createdByUserKey | string | Creator key |
createdByUserName | string | Creator username |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
auditUserKey | string | Final approver key |
auditUserName | string | Final approver username |
customerRefId | string | Merchant unique business ID |
note | string | Note |
customerExt1 | string | Merchant extended field |
customerExt2 | string | Merchant extended field |
balance | string | Account balance |
tokenBalance | string | Token balance |
symbol | string | Coin unit |
tokenSymbol | string | Token name |
subjectType | string | Signature Type |
transaction | object | This field is returned when the signature type is ETH_SIGNTRANSACTION |
└─to | string | To |
└─value | string | Value |
└─chainId | int64 | Chain ID |
└─gasPrice | string | Gas price |
└─gasLimit | int32 | Gas limit |
└─maxPriorityFeePerGas | string | Max priority fee per gas for EIP-1559 |
└─maxFeePerGas | string | Max fee per gas for EIP-1559 |
└─nonce | int64 | Nonce |
└─data | string | Data |
└─txHash | string | Transaction hash (This value is returned for signed transactions) |
└─signedTransaction | string | Hexadecimal data (This value is returned for signed transactions) |
└─sig | object | Data pending for signing and signature result |
└─hash | string | Signature-pending data |
└─sig | string | Signature (For a completed signed transaction, return this field; the sig value for the Secp256k1 algorithm consists of 32 bytes r + 32 bytes s + 1 byte v) |
message | object | This field is returned when the signature type is PERSONAL_SIGN or ETH_SIGN_TYPED_DATA |
└─chainId | int64 | Chain ID |
└─data | string | Data |
└─sig | object | Data pending for signing and signature result |
└─hash | string | Signature-pending data |
└─sig | string | Signature (For a completed signed transaction, return this field; the sig value for the Secp256k1 algorithm consists of 32 bytes r + 32 bytes s + 1 byte v) |
messageHash | object | This field is returned when the signature type is ETH_SIGN |
└─chainId | int64 | Chain ID |
└─sigList | array | Signature list |
└─hash | string | Signature-pending data |
└─sig | string | Signature (For a completed signed transaction, return this field; the sig value for the Secp256k1 algorithm consists of 32 bytes r + 32 bytes s + 1 byte v) |
Web3 Sign Transaction List
Filter Web3 Sign history by various conditions.
HTTP Request
POST /v1/web3/sign/list
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"fromId": "1",
"direct": "NEXT",
"limit": 100,
"subjectType": "ETH_SIGN",
"transactionStatus": ["SIGN_COMPLETED"],
"accountKey": "accountee096876e25f440b836bbcd745987eae",
"createTimeMin": 1656301641000,
"createTimeMax": 1687837641623
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
direct | string | No | Query page direction, NEXT by default |
limit | int32 | No | The amount of items to retrieve at a time, the default max value is 500 |
fromId | string | No | txkey of the first transaction record. If the first page has no value, provide the txKey of the last transaction record from the previous result |
subjectType | string | No | Web3 Sign type |
transactionStatus | array | No | Transaction status |
accountKey | string | No | Source account key |
createTimeMin | int64 | No | Start time for creating a transaction, UNIX timestamp (ms) (If no value is provided, the default value is createTimeMax minus 24 hours) |
createTimeMax | int64 | No | End time for creating a transaction, UNIX timestamp (ms) (If no value is provided, the default value is the current UTC time) |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":
[
{
"txKey":null,
"accountKey":null,
"sourceAddress":null,
"transactionStatus":null,
"transactionSubStatus":null,
"createdByUserKey":null,
"createdByUserName":null,
"createTime":null,
"auditUserKey":null,
"auditUserName":null,
"customerRefId": "{{customerRefId}}",
"note": "",
"customerExt1":null,
"customerExt2":null,
"balance": "0",
"tokenBalance":null,
"symbol": "ETH",
"subjectType":null,
"tokenSymbol":null,
"transaction":{
"to": "TLFNznovqX6FRjk1bkbX47KUGQX2UAaFnY",
"value": "0",
"chainId":1,
"gasPrice": "0",
"gasLimit":0,
"maxPriorityFeePerGas": "0",
"maxFeePerGas": "0",
"nonce":2,
"data": "hexData",
"txHash":null,
"signedTransaction": "",
"sig": {
"hash": "hashString",
"sig": null
}
},
"message":{
"chainId":1,
"data": "json",
"sig": {
"hash": "hashString",
"sig": null
}
},
"messageHash":{
"chainId":1,
"sigList":[
{
"hash": "hashString",
"sig": null
}
]
}
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
accountKey | string | Source account key |
sourceAddress | string | Source address |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
createdByUserKey | string | Creator key |
createdByUserName | string | Creator username |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
auditUserKey | string | Final approver key |
auditUserName | string | Final approver username |
customerRefId | string | Merchant unique business ID |
note | string | Note |
customerExt1 | string | Merchant extended field |
customerExt2 | string | Merchant extended field |
balance | string | Account balance |
tokenBalance | string | Token balance |
symbol | string | Coin unit |
tokenSymbol | string | Token name |
subjectType | string | Signature type |
transaction | object | This field is returned when the signature type is ETH_SIGNTRANSACTION |
└─to | string | To |
└─value | string | Value |
└─chainId | int64 | Chain ID |
└─gasPrice | string | Gas price |
└─gasLimit | int32 | Gas limit |
└─maxPriorityFeePerGas | string | Max priority fee per gas for EIP-1559 |
└─maxFeePerGas | string | Max fee per gas for EIP-1559 |
└─nonce | int64 | Nonce |
└─data | string | Data |
└─txHash | string | Transaction hash (This value is returned for signed transactions) |
└─signedTransaction | string | Hexadecimal data (This value is returned for signed transactions) |
└─sig | object | Data pending for signing and signature result |
└─hash | string | Signature-pending data |
└─sig | string | Signature (For a completed signed transaction, return this field; the sig value for the Secp256k1 algorithm consists of 32 bytes r + 32 bytes s + 1 byte v) |
message | object | This field is returned when the signature type is PERSONAL_SIGN or ETH_SIGN_TYPED_DATA |
└─chainId | int64 | Chain ID |
└─data | string | Data |
└─sig | object | Data pending for signing and signature result |
└─hash | string | Signature-pending data |
└─sig | string | Signature (For a completed signed transaction, return this field; the sig value for the Secp256k1 algorithm consists of 32 bytes r + 32 bytes s + 1 byte v) |
messageHash | object | This field is returned when the signature type is ETH_SIGN |
└─chainId | int64 | Chain ID |
└─sigList | array | Signature list |
└─hash | string | Signature-pending data |
└─sig | string | Signature (For a completed signed transaction, return this field; the sig value for the Secp256k1 algorithm consists of 32 bytes r + 32 bytes s + 1 byte v) |
MPC Sign
MPC Sign Introduction
Safeheron has opened its MPC-based underlying signature capabilities, allowing you to flexibly apply the "signable but invisible-key" feature of MPC signature algorithms to scenarios, such as:
- Blockchain (not yet supported by Safeheron) transactions
- Digital signature
- ……
Here's how to create and sign an ETH transaction via MPC Sign:
Single private key signing process:
- Prepare transaction data: from, to, nonce, gasLimit, gasPrice, value, data
- Serialize: rawTransaction = RLP (from, to, nonce, gasLimit, gasPrice, value, data)
- Calculate transaction data hash: hash = sha3(rawTransaction)
- Sign transaction data hash by single private key: sig = secp256k1Sign (private key, hash)
- Signed transaction data: signedRawTransaction = RLP(from, to, nonce, gasLimit, gasPrice, value, data, sig)
- Calculate transaction hash: txHash = sha3(signedRawTransaction)
- Broadcast transaction: rpc.submitTransaction (signedRawTransaction)
When automating the above process, it becomes necessary to use a single private key in the server, which can introduce various security risks such as the possibility of private key leaks. To address the security concerns related to a single private key, you can utilize Safeheron's MPC Sign interface for distributed signing. The Safeheron MPC Sign signing process ensures that the original private key is never stored in program memory. By employing MPC technology, distributed signing is achieved while also maintaining the security of the private key.
Revised process via Safeheron MPC Sign:
- [Customer] Prepare transaction data: from, to, nonce, gasLimit, gasPrice, value, data
- [Customer] Serialize: rawTransaction = RLP(from, to, nonce, gasLimit, gasPrice, value, data)
- [Customer] Calculate transaction data hash: hash = sha3(rawTransaction)
- [Customer+Safeheron] Sign transaction data hash by single private key: sig = secp256k1Sign (private key, hash)
- [Customer] Signed transaction data: signedRawTransaction = RLP (from, to, nonce, gasLimit, gasPrice, value, data, sig)
- [Customer] Calculate transaction hash: txHash = sha3(signedRawTransaction)
- [Customer] Broadcast transaction: rpc.submitTransaction (signedRawTransaction)
Upon comparing the two processes, it is evident that the revised process using Safeheron MPC Sign involves signing the hash using the Safeheron MPC Sign during the signing process with the private key. The resulting signature is then returned and can be seamlessly integrated into the client's existing business logic.
Note: Currently, the MPC protocol supports signature algorithms such as Secp256k1 and Ed25519, with plans to add support for other signature algorithms such as BLS and Schnorr in the future.
API
Create a Wallet Account
Create an MPC Sign Transaction
Merchant can initiate MPC Sign via this interface. The merchant must first serialize the transaction data and generate a hash before using this interface to submit the hash and create a transaction. The resulting signature can be retrieved via the MPC Sign transaction interface or webhook. The merchant can proceed with the necessary follow-up processes to obtain the signature according to their specific needs.
HTTP Request
POST /v1/transactions/mpcsign/create
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"customerRefId": "customerRefIdExample",
"customerExt1": "customerExt1Example",
"customerExt2": "customerExt2Example",
"sourceAccountKey": "accountbb6acc4892264e8c9202b9cd3e3235a3",
"signAlg": "ed25519",
"dataList": [
{
"note": "note",
"data": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69"
},
{
"note": "note",
"data": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69"
}
]
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
customerRefId | string | Yes | Merchant unique business ID (100 characters max) The customerRefId uniquely represents a transaction. When a merchant submits the same transaction multiple times, in cases where the customerRefId value is duplicated (eg. resubmission due to request timeout or other errors), the interface returns error code 9001 and the same txKey as before. You can use the Retrieve a Transaction interface to inquire and confirm the transaction details. |
customerExt1 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
customerExt2 | string | No | Merchant extended field (defined by merchant) shown to merchant (255 characters max) |
sourceAccountKey | string | Yes | Source account key |
signAlg | string | Yes | Signature algorithm |
dataList | array | Yes | List of transaction data to be signed |
└─note | string | No | Transaction note (180 characters max) |
└─data | string | Yes | Transaction data to be signed (View description below for details) |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
Retrieve a Single MPC Sign Transaction
To query a specific MPC Sign transaction, either customerRefId
or txKey
must be provided. If both parameters are provided, the query will be based on the txKey parameter.
HTTP Request
POST /v1/transactions/mpcsign/one
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"customerRefId": "customerRefIdExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
txKey | string | No | Transaction key |
customerRefId | string | No | Merchant unique business ID (100 characters max) |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"transactionStatus": "COMPLETED",
"transactionSubStatus": "CONFIRMED",
"createTime": 1626075236000,
"sourceAccountKey": "accountbb6acc4892264e8c9202b9cd3e3235a3",
"auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerExt1": "1",
"customerExt2": "2",
"signAlg": "secp256k1",
"auditUserName": "test",
"createdByUserName": "test",
"hashs": [
{
"note": "Initiate transaction",
"hash": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
"sig": "b3d5b45dec592d6ca60455f2926e06e5ff1c81cc4115d44d4b4f9953e6260aee55bc80e341977ab77713c80b31d960be01e09bb19014db49484db45859c77fda00"
}
],
"dataList": [
{
"note": "Initiate transaction",
"data": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
"sig": "b3d5b45dec592d6ca60455f2926e06e5ff1c81cc4115d44d4b4f9953e6260aee55bc80e341977ab77713c80b31d960be01e09bb19014db49484db45859c77fda00"
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
sourceAccountKey | string | Source account key |
auditUserKey | string | Final approver key |
createdByUserKey | string | Creator key |
customerRefId | string | Merchant unique business ID |
customerExt1 | string | Merchant extended field |
customerExt2 | string | Merchant extended field |
signAlg | string | Signature algorithm |
auditUserName | string | Final approver username |
createdByUserName | string | Creator username |
~~Transaction signature (Secp256k1 is 32r+32s+1v ed25519: 32R+32s) ~~(Deprecated, please use parameter dataList instead) | ||
dataList | array | List of transaction data to be signed |
└─note | string | Transaction note |
└─data | string | Transaction data to be signed |
└─sig | string | Transaction signature (The value of sig for Secp256k1 algorithm consists of 32 bytes r + 32 bytes s + 1 byte v; The value of sig for Ed25519 algorithm consists of 32 bytes r + 32 bytes s) |
MPC Sign Transaction List
Filter MPC Sign transaction history by various conditions.
HTTP Request
POST /v1/transactions/mpcsign/list
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent":{
"direct": "NEXT",
"limit": 100,
"fromId": "tx46461daa9b7a4612abce99e7ce598844",
"createTimeMin": 1656301641000,
"createTimeMax": 1687837641623
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
direct | string | No | Query page direction, NEXT by default |
limit | int32 | No | The number of items to retrieve at a time, default max value is 500 |
fromId | string | No | txkey of the first transaction record. If the first page is not provided, then provide the txKey of the last transaction record from the previous result |
createTimeMin | int64 | No | Start time for creating a transaction, UNIX timestamp (ms) (If no value is provided, the default value is createTimeMax minus 24 hours) |
createTimeMax | int64 | No | End time for creating a transaction, UNIX timestamp (ms) (If no value is provided, the default value is the current UTC time) |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": [
{
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"transactionStatus": "COMPLETED",
"transactionSubStatus": "CONFIRMED",
"createTime": 1626075236000,
"sourceAccountKey": "accountbb6acc4892264e8c9202b9cd3e3235a3",
"auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerExt1": "1",
"customerExt2": "2",
"signAlg": "secp256k1",
"auditUserName": "test",
"createdByUserName": "test",
"hashs": [
{
"note": "Initiate transaction",
"hash": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
"sig": "b3d5b45dec592d6ca60455f2926e06e5ff1c81cc4115d44d4b4f9953e6260aee55bc80e341977ab77713c80b31d960be01e09bb19014db49484db45859c77fda00"
}
],
"dataList": [
{
"note": "Initiate transaction",
"data": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
"sig": "b3d5b45dec592d6ca60455f2926e06e5ff1c81cc4115d44d4b4f9953e6260aee55bc80e341977ab77713c80b31d960be01e09bb19014db49484db45859c77fda00"
}
]
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
sourceAccountKey | string | Source account key |
auditUserKey | string | Final approver key |
createdByUserKey | string | Creator key |
customerRefId | string | Merchant unique business ID |
customerExt1 | string | Merchant extended field |
customerExt2 | string | Merchant extended field |
signAlg | string | Signature algorithm |
auditUserName | string | Final approver username |
createdByUserName | string | Creator username |
~~Transaction signature (Secp256k1 is 32r+32s+1v ed25519: 32R+32) ~~(Deprecated, please use parameter dataList instead) | ||
dataList | array | List of transaction data to be signed |
└─note | string | Transaction note |
└─data | string | Transaction data to be signed (Note: This field won't be returned if the transaction's algorithm is Ed25519) |
└─sig | string | Transaction signature (The value of sig for Secp256k1 algorithm consists of 32 bytes r + 32 bytes s + 1 byte v; The value of sig for Ed25519 algorithm consists of 32 bytes r + 32 bytes s) |
Webhook
Webhook Overview
Statement: The webhook service will make every effort to provide event notifications; however, due to network interruptions, node data delays, server failures, or other uncontrollable factors, it cannot guarantee the delivery or timely delivery of notifications. For critical scenarios, it is recommended to use query interfaces in conjunction to ensure the reliability and timeliness of information.
Safeheron's webhook interface delivers proactive event notifications to your team. Such as:
- Create a transaction
- Broadcast transactions to the blockchain
- Transaction reaches block confirmations
- ......
To receive event notifications, log in to the Safeheron Console with a user account that has API management permission, and configure your webhook information in Settings-> API
interface.
To ensure secure webhook callback, the same data encryption and signature scheme used in API Authentication is employed. Therefore, it is important to configure your webhook RSA public key in the Safeheron Console. You can generate an RSA public-private key pair by referring to the API Authentication. Once generated, you can obtain your Safeheron webhook RSA public key in the Safeheron Console. You'll need to use this public key to verify the signature of the callback data being received.
Callback Request
Safeheron will send a POST
request to the webhook callback address that you have set up in the Console, The HTTP request header will contain Content-Type
: application/json;charset=UTF-8
.
Callback Request Parameters
Example Callback Request
{
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"eventType": "TRANSACTION_STATUS_CHANGED",
"eventDetail": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"memo": "memoExample",
"transactionType": "NORMAL",
"transactionStatus": "COMPLETED",
"transactionSubStatus": "CONFIRMED",
"createTime": 1626075236000,
"note": "Initiate transaction",
"auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"txFee": "0.000106841386050000",
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"replaceTxHash": "0x628626531285bb90d4130d3beb3c355d2a7fe0bdfa1fa05e3431f15340aafeb6",
"customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerExt1": "1",
"customerExt2": "2",
"amlLock": "NO",
"blockHeight": 10000000,
"completedTime": 1626075236000,
"realDestinationAccountType": "VAULT_ACCOUNT"
}
}
}
Parameter | Type | Description |
---|---|---|
timestamp | string | Callback timestamp, UNIX millisecond-format string |
bizContent | string | AES-encrypted data of request parameters |
sig | string | Signature data obtained by signing the request parameters via Safeheron webhook RSA private key |
key | string | Data obtained by using webhook RSA public key encrypt random AES key |
rsaType | string | RSA Algorithm |
aesType | string | AES Algorithm |
Follow these steps to decrypt and verify the callback data:
- Sort the callback data (excluding rsaType and aesType) in ascending order by dictionary key, and serialize it into a string in the format of
bizContent=...&key=...×tamp=...
. - Use your Safeheron webhook RSA public key, serialized string and the
sig
field in the callback data to verify the signature(Algorithm: SHA256WithRSA). If the verification is successful, proceed with decrypting the response data. - Decrypt
key
field in callback data via your webhook RSA private key and obtain the random AES key and IV(Algorithm: RSA/ECB/OAEPWithSHA-256AndMGF1Padding). - Decrypt
bizContent
field in callback data via the AES key and IV and obtain the plaintext of callback business data(Algorithm: AES/GCM/NoPadding).
After receiving the webhook push notification, you need to return a successful response (HTTP status code 200), and the format of the successful response content is fixed as follows:
Example Webhook Response
{
"code": "200",
"message": "SUCCESS"
}
Example shown on the right:
Parameter | Type | Description |
---|---|---|
code | string | Webhook success response code: 200 |
message | string | Returned information from webhook, successful is fixed as SUCCESS |
If Safeheron receives a response with a status code other than 200 or a response content that does not conform to the specified success format, the push notification will be regarded as failed. Safeheron will then automatically resend the notification with a frequency of 30s, 1m, 5m, 1h, 12h, and 24h.
Event Format
Decrypted data format of bizContent
field as shown in the right:
Example Event Format
{
"eventType": "TRANSACTION_STATUS_CHANGED",
"eventDetail": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"memo": "memoExample",
"transactionType": "NORMAL",
"transactionStatus": "COMPLETED",
"transactionSubStatus": "CONFIRMED",
"createTime": 1626075236000,
"note": "Initiate transaction",
"auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"txFee": "0.000106841386050000",
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"replaceTxHash": "0x628626531285bb90d4130d3beb3c355d2a7fe0bdfa1fa05e3431f15340aafeb6",
"customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerExt1": "1",
"customerExt2": "2",
"amlLock": "NO",
"blockHeight": 10000000,
"completedTime": 1626075236000,
"realDestinationAccountType": "VAULT_ACCOUNT"
}
}
Parameter | Type | Description |
---|---|---|
eventType | string | Callback event type |
eventDetail | object | Callback event details |
Event Type
eventType | eventDetail | Description |
---|---|---|
TRANSACTION_CREATED | TransactionParam | Create a transaction |
TRANSACTION_STATUS_CHANGED | TransactionParam | Change the transaction status |
TRANSACTION_CUSTOMIZED_CONFIRMING | TransactionParam | With custom block confirmations, once the number of blocks reaches the custom number, the webhook will push TRANSACTION_CUSTOMIZED_CONFIRMING event notification. This notification will not be pushed if there are no custom block confirmations Note: As webhook cannot guarantee the delivery of notifications (Statement), and when the webhook prioritizes sending the TRANSACTION_STATUS_CHANGED event with a transaction status of COMPLETED, the system will no longer send the TRANSACTION_CUSTOMIZED_CONFIRMING event. Therefore, it is recommended to use the TRANSACTION_STATUS_CHANGED event in conjunction with the transaction query interface to ensure the reliability of transaction information and avoid relying solely on the TRANSACTION_CUSTOMIZED_CONFIRMING event notification |
MPC_SIGN_CREATED | MPCSignParam | Create an MPC Sign transaction |
MPC_SIGN_STATUS_CHANGED | MPCSignParam | Change the MPC Sign transaction status |
WEB3_SIGN_CREATED | Web3SignParam | Create a Web3 Sign transaction |
WEB3_SIGN_STATUS_CHANGED | Web3SignParam | Change the Web3 Sign transaction status |
ILLEGAL_IP_REQUEST | IllegalIpRequestParam | Invalid IP request |
NO_MATCHING_TRANSACTION_POLICY | NoMatchingTransactionPolicyParam | No matching transaction policy |
WHITELIST_ADDED | WhiteListAddedParam | The newly added whitelist has been approved and is now valid |
WHITELIST_UPDATED | WhiteListUpdatedParam | The changes made to the valid whitelist have been approved |
WHITELIST_REMOVED | WhiteListRemovedParam | The valid whitelist has been deleted |
Event Details
TransactionParam
Example TransactionParam
{
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"isSourcePhishing": false,
"sourceAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"isSourcePhishing": false,
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43"
}
],
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"isDestinationPhishing": false,
"memo": "memoExample",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"isDestinationPhishing": false,
"memo": "memoExample",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"isDestinationPhishing": false,
"memo": "memoExample",
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"amount": "0.0001"
}
],
"transactionType": "NORMAL",
"transactionStatus": "COMPLETED",
"transactionSubStatus": "CONFIRMED",
"createTime": 1626075236000,
"note": "Initiate transaction",
"auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"txFee": "0.000106841386050000",
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"replaceTxHash": "0x628626531285bb90d4130d3beb3c355d2a7fe0bdfa1fa05e3431f15340aafeb6",
"customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerExt1": "1",
"customerExt2": "2",
"amlLock": "NO",
"blockHeight": 10000000,
"completedTime": 1626075236000,
"realDestinationAccountType": "VAULT_ACCOUNT",
"transactionDirection": "INTERNAL_TRANSFER"
}
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
txHash | string | Transaction hash |
coinKey | string | Coin key |
txAmount | string | Transaction amount, the unit is the symbol returned by the coin list |
sourceAccountKey | string | Source account key |
sourceAccountType | string | Source account type |
sourceAddress | string | Source address (If the transaction currency is of UTXO type, please use the sourceAddressList field) |
isSourcePhishing | bool | Source address shows potential phishing risk. Only incoming transactions on EVM chains and TRON are valid |
sourceAddressList | array | Source address list |
└─address | string | Source address |
└─isSourcePhishing | bool | Source address shows potential phishing risk. Only incoming transactions on EVM chains and TRON are valid |
└─addressGroupKey | string | The unique ID of the address group of the source address; This field is only returned when the transaction source account type is VAULT_ACCOUNT |
destinationAccountKey | string | Destination account key |
destinationAccountType | string | Destination account type |
destinationAddress | string | Destination address (If the transaction currency is of UTXO type, please use the destinationAddressList field) |
isDestinationPhishing | bool | Destination address shows potential phishing risk. Only outgoing transactions on EVM chains and TRON are valid |
memo | string | Memo of the destination address when creating a transaction |
destinationAddressList | array | Destination address list |
└─address | string | Destination address |
└─isDestinationPhishing | bool | Destination address shows potential phishing risk. Only outgoing transactions on EVM chains and TRON are valid |
└─memo | string | Memo of the destination address when creating a transaction |
└─addressGroupKey | string | The unique ID of the address group of the destination address, this field is only returned when the destination account type is VAULT_ACCOUNT |
└─amount | string | Transaction amount |
transactionType | string | Transaction Subtype |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
note | string | Platform note of the transaction when creating a transaction |
auditUserKey | string | Final approver key |
createdByUserKey | string | Creator key |
txFee | string | Transaction fee |
feeCoinKey | string | Coin key that is used to pay for the transaction fee when conducting a transfer, such as when transferring ERC-20 tokens, transaction fees are paid in ETH |
replaceTxHash | string | Quoted transaction hash (Only for sped-up transactions) |
customerRefId | string | Merchant unique business ID |
customerExt1 | string | Merchant extended field |
customerExt2 | string | Merchant extended field |
amlLock | string | Whether the source address contains AML address(es) YES: Contain NO: Not contain |
blockHeight | int64 | Block height (Available when the transaction status is pending confirmation or success) |
completedTime | int64 | Transaction completion time |
realDestinationAccountType | string | Type of actual destination account |
transactionDirection | string | Transaction Direction |
MPCSignParam
Example MPCSignParam
{
"txKey": "tx697eebea3a61440a8edf6f0a783d19b2",
"sourceAccountKey": "sourceAccountKey",
"auditUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"createTime": 1626075236000,
"customerRefId": "1639558034534",
"customerExt1": "",
"customerExt2": "",
"signAlg": "secp256k1",
"transactionStatus": "CANCELLED",
"transactionSubStatus": "",
"hashs": [
{
"note": "",
"hash": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
"sig": ""
}
],
"dataList": [
{
"note": "",
"data": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
"sig": ""
}
]
}
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
signAlg | string | Signature algorithm |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
sourceAccountKey | string | Source account key |
auditUserKey | string | Final approver key |
createdByUserKey | string | Creator key |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
customerRefId | string | Custom unique business identifier; Safeheron employs this field to perform idempotent checks |
customerExt1 | string | Merchant extended field |
customerExt2 | string | Merchant extended field |
dataList | array | List of transaction data to be signed |
└─note | string | Transaction note |
└─data | string | Transaction data to be signed |
└─sig | string | Transaction signature (The value of sig consists of 32 bytes r + 32 bytes s + 1 byte v) |
Web3SignParam
Example Web3SignParam
{
"txKey":null,
"subjectType":null,
"accountKey":null,
"sourceAccountType":null,
"sourceAddress":null,
"transactionStatus":null,
"transactionSubStatus":null,
"createdByUserKey":null,
"createTime":null,
"auditUserKey":null,
"note": "",
"customerExt1":null,
"customerExt2":null,
"transaction":{
"to": "TLFNznovqX6FRjk1bkbX47KUGQX2UAaFnY",
"value": "0",
"chainId":1,
"gasPrice": "0",
"gasLimit":0,
"maxPriorityFeePerGas": "0",
"maxFeePerGas": "0",
"nonce":2,
"data": "hexData",
"txHash":null,
"signedTransaction": "",
"sig": {
"hash": "hashString",
"sig": null
}
},
"message":{
"chainId":1,
"data": "json",
"sig": {
"hash": "hashString",
"sig": null
}
},
"messageHash":{
"chainId":1,
"sigList":[
{
"hash": "hashString",
"sig": null
}
]
}
}
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
subjectType | string | Signature type |
accountKey | string | Source account key |
sourceAccountType | string | Source account type |
sourceAddress | string | Source address |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
createdByUserKey | string | Creator key |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
auditUserKey | string | Final approver key |
note | string | Note |
customerExt1 | string | Merchant extended field |
customerExt2 | string | Merchant extended field |
transaction | object | This field is returned when the signature type is ETH_SIGNTRANSACTION |
└─to | string | To |
└─value | string | Value |
└─chainId | int64 | Chain ID |
└─gasPrice | string | Gas price |
└─gasLimit | int32 | Gas limit |
└─maxPriorityFeePerGas | string | EIP-1559 max priority fee per gas |
└─maxFeePerGas | string | EIP-1559 max fee per gas |
└─nonce | int64 | Nonce |
└─data | string | Data |
└─txHash | string | Transaction hash (This value is returned for signed transactions) |
└─signedTransaction | string | Hexadecimal data (This value is returned for signed transactions) |
└─sig | object | Signature |
└─hash | string | Hash |
└─sig | string | Signature (This value is returned for signed transactions) |
message | object | This field is returned when the signature type is PERSONAL_SIGN or ETH_SIGN_TYPED_DATA |
└─chainId | int64 | Chain ID |
└─data | string | Data |
└─sig | object | Signature |
└─hash | string | Hash |
└─sig | string | Signature (This value is returned for signed transactions) |
messageHash | object | This field is returned when the signature type is ETH_SIGN |
└─chainId | int64 | Chain ID |
└─sigList | array | Signature list |
└─hash | string | Hash |
└─sig | string | Signature (This value is returned for signed transactions) |
IllegalIpRequestParam
Example IllegalIpRequestParam
{
"apiKey": "94d96119****************6eb2056a",
"IllegalIP": "192.***.***.1",
"requestURI": "/v1/account/list",
"requestTimestamp": "1626075236000",
"requestData": {
"namePrefix": "namePrefixExample",
"nameSuffix": "nameSuffixExample",
"pageSize": 10,
"pageNumber": 1,
"hiddenOnUI": true
},
"errorMessage": ""
}
Parameter | Type | Description |
---|---|---|
apiKey | string | Unique API key identifier assigned by platform |
IllegalIP | string | Invalid IP |
requestURI | string | Request-URI |
requestTimestamp | string | Request timestamp, UNIX millisecond-format string |
requestData | string | Request Parameters |
errorMessage | string | Wrong information |
NoMatchingTransactionPolicyParam
Example NoMatchingTransactionPolicyParam
{
"txKey": "tx697eebea3a61440a8edf6f0a783d19b2",
"amount": "0.0001",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"fromAccountKey": "accounta5867fecbbbc4a4f876532c87477407a",
"fromAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"toType": "VAULT_ACCOUNT",
"toAccountKey": "accounta0259e8c481c345ca922f489961bc331b",
"toAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5"
}
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
amount | string | Transaction amount |
coinKey | string | Coin key |
fromAccountKey | string | Source account key |
fromAddress | string | Source address |
toType | string | Destination account type |
toAccountKey | string | Destination account key |
toAddress | string | Destination address |
WhiteListAddedParam
Example WhiteListAddedParam
{
"whitelistKey": "whitelistKeyExample",
"whitelistName": "whitelistNameExample",
"chainType": "EVM",
"address": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7",
"memo": "memoExample",
"approvalTime": 1690361332392
}
Parameters | Type | Description |
---|---|---|
whitelistKey | string | Whitelist unique identifier |
whitelistName | string | Whitelist name |
chainType | string | The public blockchain of the whitelisted address |
address | string | Whitelisted addresses |
memo | string | Memo of the address when creating a whitelist |
approvalTime | int64 | The time when the whitelist is approved |
WhiteListUpdatedParam
Example WhiteListUpdatedParam
{
"whitelistKey": "whitelistKeyExample",
"whitelistName": "whitelistNameExample",
"chainType": "EVM",
"address": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7",
"memo": "memoExample",
"previousWhitelistName": "previousWhitelistKeyExample",
"previousAddress": "previousWhitelistNameExample",
"previousMemo": "previousMemoExample",
"approvalTime": 1690361332392
}
Parameters | Type | Description |
---|---|---|
whitelistKey | string | Whitelist unique identifier |
whitelistName | string | Whitelist name |
chainType | string | The public blockchain of the whitelisted address |
address | string | Whitelisted addresses |
memo | string | Updated address memo |
previousWhitelistName | string | Original whitelist name |
previousAddress | string | Original whitelisted address |
previousMemo | string | Original address memo |
approvalTime | int64 | The time when the whitelist is approved |
WhiteListRemovedParam
Example WhiteListRemovedParam
{
"whitelistKey": "whitelistKeyExample",
"whitelistName": "whitelistNameExample",
"chainType": "EVM",
"address": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7",
"memo": "memoExample"
}
Parameters | Type | Description |
---|---|---|
whitelistKey | string | Whitelist unique identifier |
whitelistName | string | Whitelist name |
chainType | string | The public blockchain of the whitelisted address |
address | string | Whitelisted addresses |
memo | string | Memo of the whitelisted address |
Webhook API
Re-push Transaction Webhook Events
Re-push the transaction webhook events generated in the last month. In certain situations, such as network jitter or your system being unavailable to receive webhook events, you may miss receiving notifications. You can use this interface to notify Safeheron to re-push the webhook events. It is important to note that for a single transaction, only the last webhook event will be re-pushed. For example, during the lifecycle of a transaction, multiple TRANSACTION_STATUS_CHANGED webhook events such as BROADCASTING, CONFIRMING, COMPLETED, etc., may be generated. The re-push will only send the last webhook event recorded by the current system. Re-pushing is supported for the following types of webhook events:
- Events related to asset transactions, including TRANSACTION_CREATED and TRANSACTION_STATUS_CHANGED.
- Events related to MPC signing, including MPC_SIGN_CREATED and MPC_SIGN_STATUS_CHANGED.
- Events related to Web3, including WEB3_SIGN_CREATED and WEB3_SIGN_STATUS_CHANGED.
- More types of webhook events will be supported in the future.
HTTP Request
POST /v1/webhook/resend
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"category": "TRANSACTION",
"txKey": "tx7dacce99c5f249b6bf486214596a5458"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
category | string | Yes | Supported events: |
txKey | string | Yes | Transaction key |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"result": true
}
}
Response Data
Parameter | Type | Description |
---|---|---|
result | boolean | Execution result True: Success False: Fail |
Push All Failed Webhook Events
Resend all webhook events that failed to push within any duration not exceeding 1 hour in the past 7 days (limited to 1 call every 10 minutes). In certain situations, such as network failures or your system being unavailable to receive webhook events, you may miss receiving notifications. Once the issue is resolved, you can use this interface to notify Safeheron to resend all webhook events that failed to push within a certain period. Support re-pushing the following types of webhook events:
- TRANSACTION_CREATED
- TRANSACTION_STATUS_CHANGED
- MPC_SIGN_CREATED
- MPC_SIGN_STATUS_CHANGED
- WEB3_SIGN_CREATED
- WEB3_SIGN_STATUS_CHANGED
- ILLEGAL_IP_REQUEST
- NO_MATCHING_TRANSACTION_POLICY
- WHITELIST_ADDED
- WHITELIST_UPDATED
- WHITELIST_REMOVED
- More types of webhook events will be supported in the future.
Please note that when re-pushing all failed webhook events, your system needs to avoid rollback issues. For example, during the lifecycle of a transaction, multiple TRANSACTION_STATUS_CHANGED webhook events may be generated, such as BROADCASTING, CONFIRMING, and COMPLETED. If your system did not receive the CONFIRMING event due to network issues but did receive the COMPLETED event, using this interface would cause Safeheron to attempt resending the CONFIRMING event to your system. Your system needs to ensure that the transaction does not incorrectly revert from the COMPLETED status back to the CONFIRMING status.
HTTP Request
POST /v1/webhook/resend/failed
Example Request
{
"apiKey": "94d96119****************6eb2056a",
"timestamp":1690361332392,
"key": "OFI5PMknWjLSYUbVzVWOQjhHRihvS9bmeaNsF/d/togGr9exySsZ5StRJc+VLmsMi5vxwrNbw2xI3jb8wNCxFN6SnbkHe7DheGWZN5d1YB3x4JNDBhNZ9CJjSr3Km2GOIO9XJf3AffO03qiAHs7I5QrtCoW9J/IsX7OJKqzqevA7mbuooHrysvIVYCgVwetWS4wRy2T8V7WOUBLi645SLJXedohDRLKoy5brj/7DIRI4zitdqhEvcct0LxJZpcwXtkeDfOZ7he0TbhqTRb9LbpXquJ8ZYzh4uyqh/AkwxcDBKLT2js9NidVkiYvW5+Ly8Cuc6FjyyEDzwJo/QpHrgiXYxXhTo9lodjys3J7DVU2j9T0ToFViFGNTLJJXL/8vJNxjpy/nBa4Xkkb1mTln3oEDuYgCvgGMhkV2Uz7rdMdoACjg1b2hfxoKMwtUz3JatrFzFWv4I62rp/8LT8V5L9WnrBF1kjgaOZ2zgmshgx8Hgz+9vm32EciFaSpN33H2nNemZWkw4ZnRt61m/cq3fWDPfYtIy4EPPOBHRUs8oVjCTVJPaHwjUHexX50cyMPOPyVSszRF4qRPdFqVheyqHSxM0ZCWcden09POVNj2B4Gx5wWKjzIuedAhZ06ROOnuRZLTaR+JrdPR4hXtX+N4fD6gKsYfct5pkIalM7T0dZs=",
"sig": "aiwfvh0kCuon/LLWSjLcakDSeQJcltAGuYUA3V5MpOHjGZ3qLWYRKgXD+p1lHDVPdprsG0hr6JncGiutnTK0QIqTIFT2OW0UshOCW1fk67xQ+O+htvLP/3cWxc60/YoUCPKbql7Lbr8fZAZls5TPG1TEiPCAIotRdeSti0Q+OC4rasI9XShLilxecivZz33p5n7RDdE505rR3QhQ2wCRAwj4+/sVC3ykm4J0vLgQj3xULhrDHQ0XdJuHunh5zLGUFYlPxwdFypTdTs+krjeBILo0bXHCHubEhKMRYX8AbsviEa19BHubrFsz6aVJiNqijSqRXJmG0DxTk0EevKoYUp+dzQRL6qd3KpTROB/8ZsFsz5xqZSOkBSu9y8gz4t5Mzf41i+gZYZGARNfa85hSdPImGfg3035k/7M0nXeaChAvwwOLz4dToP8bPAhT49cR1hxi2SLI/QJt+w7ktvQyptUUzk8cMFFVsykxl4kFTmOB0dAbCYeDg6sweSxNmBhFpIdZQtjAlr6bHdRyP97TY0k4samQuxDinDYyQov55Gb3CxmYra0P4jAhFZvJeTa0+Ufbo1q/7tyP96uAAp/KjwzPt6OD08VD0neSTxO5OyVg5YPafff4aAEIbZx19yVKU1JyT1KUHo6fDQ1fAvpLa8x08l3b3H+JzJbpfckWQgw=",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"startTime": 1635170400000,
"endTime": 1635199200000
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
startTime | int64 | Yes | Start time in UNIX timestamp (ms). The time interval [startTime, endTime] is up to 1 hour |
endTime | int64 | Yes | End time in UNIX timestamp (ms). The time interval [startTime, endTime] is up to 1 hour |
Example Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1626336745267",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"messagesCount": 2
}
}
Response Data
Parameter | Type | Description |
---|---|---|
messagesCount | int64 | The number of failed webhook events to be re-pushed |
API Co-Signer
API Co-Signer Overview
API Co-Signer is a tool designed to automate signing process which is privately deployed by you. API Co-Signer includes the authorization private key used for authorizing transactions, as well as MPC private key shards utilized for MPC signing.
After API Co-Signer triggers a transaction approval task callback to your business system, it will either approve or reject the transaction approval based on the response from your business system. The process of automated signing is outlined below:
Co-Signer Callback
API Co-Signer will send a POST
request to the configured callback address. The Content-Type
in the HTTP request header is application/json;charset=UTF-8
.
Once a callback is triggered by API Co-Signer, it will utilize the identical data encryption and signature scheme as specified in the API Authentication. To enable this functionality, you must configure your callback RSA public key within API Co-Signer. You can generate an RSA public-private key pair by referring to the API Authentication.
When configure API Co-Signer, you need to configure API RSA public-private key pair to communicate with Safeheron API gateway.During callback of your business system by API Co-Signer, API RSA public-private key pair will be readopted to communicate with your business system.
Callback Request
Callback request parameters as follow:
Example Callback Request
{
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"timestamp": "1626336745267",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"type": "TRANSACTION",
"customerContent": {
"auditRecordKey": "57e3a3e0eb3140c3ba538cc094bcb024",
"txKey": "txc0710da7db2b42ff9bf28df8910f8a88",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txAmount": "0.012000000000000000",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"sourceAccountKey": "accounta5867fecbbbc4a4f876532c87477407a",
"sourceAccountType": "VAULT_ACCOUNT",
"destinationAccountKey": "0259e8c481c345ca922f489961bc331b",
"destinationAccountType": "INTERNAL_WALLET",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"customerRefId": "123234111112112",
"triggerTime": 1635938498071,
"triggerUserName": "signer",
"txHash": "",
"blockHeight": null,
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"fee": null,
"customerExt1": "",
"customerExt1": ""
}
}
}
Parameter | Type | Description |
---|---|---|
timestamp | string | Callback timestamp |
bizContent | string | AES-encrypted data of request parameters |
sig | string | Signature data after signing request parameters by your API RSA private key |
key | string | Encrypted data of random AES key by callback RSA public key |
rsaType | string | RSA Algorithm |
aesType | string | AES Algorithm |
You can decrypt the callback data and verify its signature as outlined below:
- Serialize callback data(excluding rsaType and aesType) in ascending order by dictionary key into a string in the format of
bizContent=...&key=...×tamp=...
. - Use your API RSA public key, serialized string and
sig
field in callback data to verify(Algorithm: SHA256WithRSA) the signature result. If the verification is successful, proceed with decrypting the response data. - Decrypt
key
field in callback data via your callback RSA private key and obtain the random AES key and IV(Algorithm: RSA/ECB/OAEPWithSHA-256AndMGF1Padding). - Decrypt
bizContent
field in callback data via the AES key and IV and obtain the plaintext of response data(Algorithm: AES/GCM/NoPadding).
Callback Response
Callback response parameters as follow:
Example Callback Response
{
"code": 200,
"message": "SUCCESS",
"timestamp": "1628652100447",
"sig": "ZHIHfOoAH9WMCK2yXg8TkLSrotntBuVzMjTPTKrffpTb1rQlffTrlIFloinflgje/2gkZ8Jj9OPkOt/J1QDbyAkuQCbwu3lVOur83NzPsckFETbhmRHEUKmZYbNXm3abheVA7wx06NA1jtDy0NgUxL/f8WOJn0T3pUBdSj9lmKdeXJ8K2v9JS1wPDjnW0WTGlxviOgAy2rxRio7cj6f/GrVokN2I6itNYF82njOV2WI3P2fVOBPwq0SoRcFnHcH9OjxmXjJWqrhd/N5V5KfSHUORarDtDGOXuknplJ9bhUjN30lF6FDzidZVyeptbUeNK0yeWRoUVmnt+MhsjOHnyA==",
"key": "y0WmiDSL23d4H5uYgc+F+yopfapj113jZYNK5nEdf7ebETIjb2IWBjaKEIAnbkxE/TJ0C/Y2EUx7D6j8ojuRcji9jnprSvdiRu9po/t08pZ3X9DEV9D6FJEud5xVCdhFLXWynYtmRpo9bGQB840s7Lykc8zM971wEk8vEhDDQeiD6C/JSDPGo6+TuTyKlOdqe9tO2fIX/4FqaYrAe8mC7yOp7oYJqV7oTi5/b8yNI5pgGXhGUqG1QDeDN218vwFctxbae01N3Q1+WgSHO+YhcBIc0bzo8ppSICUSudbY4E0DTRdF89t3df7iL7dd0zB6QWxNjHCKVeu1kmIW7GqLqg==",
"rsaType": "ECB_OAEP",
"aesType": "GCM_NOPADDING",
"bizContent": {
"approve": true,
"txKey": "txc0710da7db2b42ff9bf28df8910f8a88"
}
}
Parameter | Type | Description |
---|---|---|
code | int | Response result code for log output, use 200 for normal return |
message | string | Response result description for log output, use SUCCESS for normal return |
timestamp | string | Response timestamp |
sig | string | Signature data after signing response parameters by your callback RSA private key |
key | string | Encrypted data of random AES key by your API RSA public key |
bizContent | object | AES-encrypted data of response parameters |
rsaType | string | RSA Algorithm |
aesType | string | AES Algorithm |
You can decrypt the response data and verify its signature as outlined below:
- Serialize the business response parameters into a JSON string and randomly generate a 32-byte AES key and a 16-byte initialization vector (IV).
- Use the AES key and IV to encrypt the JSON string(Algorithm: AES/GCM/NoPadding), and encode the encrypted result using base64. This encoded result should be used as the
bizContent
field in the request parameters. - Use your API RSA public key to encrypt the 48-byte AES key + IV. Encode the encrypted result using base64 and use it as
key
field in the request parameters(Algorithm: RSA/ECB/OAEPWithSHA-256AndMGF1Padding). - Serialize all request parameters(excluding rsaType and aesType) in ascending order by dictionary key into a string in the format of
bizContent=...&code=...&key=...&message=...×tamp=...
. - Sign serialized request string via your callback RSA private key(Algorithm: SHA256WithRSA). Encode the signature result in base64 and use it as the
sig
field in the request parameters.
Co-Signer Business Callback Dictionary
Callback Dictionary
Parameter | Type | Description |
---|---|---|
type | string | Business Type |
customerContent | object | Business content |
Callback Type
type | customerContent | Description |
---|---|---|
TRANSACTION | Transaction approval | Approve transactions |
MPC_SIGN | MPC Sign approval | Sign transactions |
WEB3_SIGN | Web3 Sign approval | Sign transactions |
Transaction Approval
Example
{
"auditRecordKey": "57e3a3e0eb3140c3ba538cc094bcb024",
"txKey": "txc0710da7db2b42ff9bf28df8910f8a88",
"coinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"txAmount": "0.012000000000000000",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"sourceAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d"
}
],
"sourceAccountKey": "accounta5867fecbbbc4a4f876532c87477407a",
"sourceAccountType": "VAULT_ACCOUNT",
"destinationAccountKey": "0259e8c481c345ca922f489961bc331b",
"destinationAccountType": "INTERNAL_WALLET",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"memo": "memoExample",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"memo": "memoExample",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"memo": "memoExample",
"amount": "0.0001"
}
],
"transactionType": "NORMAL",
"customerRefId": "123234111112112",
"triggerTime": 1635938498071,
"triggerUserName": "signer",
"txHash": "",
"blockHeight": null,
"feeCoinKey": "ETH(SEPOLIA)_ETHEREUM_SEPOLIA",
"fee": null,
"customerExt1": "",
"customerExt1": "",
"transactionDirection": "INTERNAL_TRANSFER"
}
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
txHash | string | Transaction hash |
coinKey | string | Coin key |
txAmount | string | Transaction amount, the unit is the symbol returned by the coin list |
sourceAccountKey | string | Source account key |
sourceAccountType | string | Source account type |
sourceAddress | string | Source address (If the transaction currency is of UTXO type, please use the sourceAddressList field) |
sourceAddressList | array | Source address list |
└─address | string | Source address |
destinationAccountKey | string | Destination account key |
destinationAccountType | string | Destination account type |
destinationAddress | string | Destination address (If the transaction currency is of UTXO type, please use the destinationAddressList field) |
memo | string | Memo of the destination address when creating a transaction |
destinationAddressList | array | Destination address list |
└─address | string | Destination address |
└─memo | string | Memo of the destination address when creating a transaction |
└─amount | string | Transaction amount |
transactionType | string | Transaction Subtype |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
note | string | Note |
auditUserKey | string | Final approver key |
createdByUserKey | string | Creator key |
estimateFee | string | Estimated transaction fee |
feeCoinKey | string | Currency key for the transaction fee consumed during the transaction. For example, in the case of transferring ERC-20 token, the token used for the transaction fee would be ETH |
replaceTxHash | string | Referenced transaction hash (Only for sped-up transactions) |
customerRefId | string | Merchant unique business ID |
customerExt1 | string | Merchant extended field |
customerExt2 | string | Merchant extended field |
transactionDirection | string | Transaction Direction |
MPC Sign Approval
Example
{
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"transactionStatus": "SUBMITTED",
"transactionSubStatus": "Pending Approval",
"createTime": 1626075236000,
"sourceAccountKey": "accountbb6acc4892264e8c9202b9cd3e3235a3",
"createdByUserKey": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerExt1": "1",
"customerExt2": "2",
"signAlg": "secp256k1",
"dataList": [
{
"data": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
"note": "noteExample"
}
]
}
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
sourceAccountKey | string | Source account key |
createdByUserKey | string | Creator key |
customerRefId | string | Merchant unique business ID |
customerExt1 | string | Merchant extended field |
customerExt2 | string | Merchant extended field |
signAlg | string | Signature algorithm |
dataList | array | List of transaction data to be signed |
└─data | string | Transaction data to be signed |
└─note | string | Transaction note |
Web3 Sign Approval
Example
{
"txKey":null,
"subjectType":null,
"accountKey":null,
"sourceAddress":null,
"transactionStatus":null,
"transactionSubStatus":null,
"createdByUserKey":null,
"createTime":null,
"auditUserKey":null,
"customerRefId": "",
"transaction":{
"to": "TLFNznovqX6FRjk1bkbX47KUGQX2UAaFnY",
"value": "0",
"chainId":1,
"gasPrice": "0",
"gasLimit":0,
"maxPriorityFeePerGas": "0",
"maxFeePerGas": "0",
"nonce":2,
"data": "hexData",
"txHash":null
},
"message":{
"chainId":1,
"data": "json"
},
"messageHash":{
"chainId":1,
"data":[""]
}
}
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
subjectType | string | Signature type |
accountKey | string | Source account key |
sourceAddress | string | Source address |
transactionStatus | string | Transaction status |
transactionSubStatus | string | Transaction substatus |
createdByUserKey | string | Creator key |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
auditUserKey | string | Key of the last approver |
customerRefId | string | Merchant unique business ID |
transaction | object | This field is returned when the signature type is ETH_SIGNTRANSACTION |
└─to | string | To |
└─value | string | Value |
└─chainId | int64 | Chain ID |
└─gasPrice | string | Gas price |
└─gasLimit | int32 | Gas limit |
└─maxPriorityFeePerGas | string | EIP-1559 max priority fee per gas |
└─maxFeePerGas | string | EIP-1559 max fee per gas |
└─nonce | int64 | Nonce |
└─data | string | Data |
└─txHash | string | Transaction hash |
message | object | This field is returned when the signature type is PERSONAL_SIGN or ETH_SIGN_TYPED_DATA |
└─chainId | int64 | Chain ID |
└─data | string | Data |
messageHash | object | This field is returned when the signature type is ETH_SIGN |
└─chainId | int64 | Chain ID |
└─data | array | Hash to be signed |
Response Dictionary
Transaction Approval Task
Example Response
{
"approve": true,
"txKey": "txc0710da7db2b42ff9bf28df8910f8a88"
}
Parameter | Type | Required | Description |
---|---|---|---|
approve | boolean | Yes | Approval result: True: Approved False: Rejected |
txKey | string | Yes | Transaction key |
Supported Networks
Network | Block Confirmations | Account type |
---|---|---|
Tron | 38 | ACCOUNT |
Ethereum | 32 | ACCOUNT |
BSC | 15 | ACCOUNT |
Bitcoin | 2 | UTXO |
Aptos | 10 | ACCOUNT |
Arbitrum One | 12 | ACCOUNT |
Avalanche | 120 | ACCOUNT |
Base | 130 | ACCOUNT |
Bitcoin cash | 10 | UTXO |
Bitcoin(Testnet4) | 2 | UTXO |
CFX | 500 | ACCOUNT |
Dash | 25 | UTXO |
EMC | 32 | ACCOUNT |
Ether Classic | 1500 | ACCOUNT |
Ethereum(Sepolia) | 12 | ACCOUNT |
FTM | 30 | ACCOUNT |
FIL | 90 | ACCOUNT |
NEAR | 120 | ACCOUNT |
OP | 200 | ACCOUNT |
POL | 800 | ACCOUNT |
Solana | 200 | ACCOUNT |
SUI | 120 | ACCOUNT |
Tron(Testnet) | 38 | ACCOUNT |
TON | 50 | ACCOUNT |
Error Code
Error Code | Description |
---|---|
200 | Success |
429 | Too many requests |
500 | System error |
1001 | Unknown error, please contact Safeheron Support |
1004 | Duplicate request |
1005 | User doesn't have permission |
1008 | Invalid request |
1009 | Invalid API key |
1010 | Parameter decryption failed |
1011 | Invalid IP |
1012 | Signature verification failed |
1013 | Timestamp verification failed |
1014 | IP exceeds frequency limit |
1015 | Invalid user |
1016 | Invalid API key |
1017 | Parameter validation error |
1018 | Request record doesn't exist |
1019 | Parameter parsing exception |
1020 | Wrong request parameter |
1021 | Coin key doesn't exist |
1022 | RSA public key error |
1023 | You cannot request the current interface, please contact customer service to upgrade your account |
1024 | WebHook has expired or does not exist |
3009 | Frozen merchant |
3010 | Closed merchant |
3016 | Failed to request basic service |
3017 | Deactivated wallet |
3018 | Invalid merchant |
3019 | Insufficient funds for withdrawal |
3020 | The transaction is not in 'pending approval' status |
3021 | Request transaction result exception |
3022 | Request transaction failed |
3023 | The current wallet does not allow this operation |
3024 | Transaction package data verification failed |
3025 | Signing failed |
3026 | Record cancelled |
3027 | Transaction approval record has been processed |
3028 | The current wallet does not allow this operation |
3029 | The hash entered is invalid |
3030 | The network corresponding to the chain ID does not exist |
3031 | Hash temporarily supports 1 element |
3032 | Data is required |
3033 | Chain ID is required |
3034 | Invalid data format |
3035 | Data length must be between 0 and 100000 |
3036 | Value is required |
3037 | Nonce is required |
3038 | Invalid value |
3039 | Invalid gas price |
3040 | Gas limit too high |
3041 | Invalid max priority fee per gas |
3042 | Invalid max fee per gas |
3043 | Gas limit is required |
3044 | Max priority fee per gas is lower than current value on network |
3045 | Max fee too low |
3046 | Gas price and fee per gas cannot both be empty |
3047 | Data length must be between 0 and 1000000 |
3048 | Nonce too low |
3049 | Nonce too high |
3050 | Balance verification is required for UTXOs |
3051 | This asset is not supported yet |
3052 | Version is required |
3053 | Version error |
3054 | This coin does not support speed-up |
3055 | Back up private key before creating wallets |
3056 | Fee rate must be greater than 0 |
3057 | Gas limit must be greater than 0 |
3058 | Max priority fee must be greater than 0 |
3059 | Max fee must be greater than 0 |
3060 | Hashs and data list cannot both be empty |
3061 | This algorithm is not supported yet |
3062 | This application is not supported yet |
3063 | Signature data too long |
3064 | The transaction amount cannot be 0 |
3065 | Invalid receiving address |
3066 | Gas fee cap too low |
3067 | The version of Co-Signer too low |
3068 | Transaction failed due to exceeding the maximum number of UTXO transactions. Please collect UTXOs and try again |
3069 | Duplicate approval data |
3070 | Expired security certificate |
3071 | Only support to label wallets created by API |
3072 | The existing wallet has been used to sweep the target account |
3073 | The non-UTXO type does not allow batch transactions |
3074 | Request parameter cannot be empty |
3075 | Token Account address not supported, please use Owner address |
3076 | Unsupported accelerated transactions |
3077 | Transactions via Connect are not supported |
3078 | The wallet has no DEPOSIT label |
3079 | No assets need to be swept in the wallet |
3080 | There is no corresponding auto-sweep policy in place |
3081 | The wallet address is flagged as malicious |
3082 | The wallet balance is less than the |
3083 | The sweeping amount does not meet the USD requirement |
3084 | There is already an ongoing sweeping task |
3085 | Account does not support sweeping |
3086 | This network does not support sweeping |
3087 | Sign input data must be even |
3088 | The time interval cannot exceed 1 hour |
3089 | Only supports pushing events that failed within the past 7 days |
3090 | The transaction amount cannot be less than 0.01 TON |
9001 | Merchant unique business ID already exists |
9002 | System under maintenance, and asset transfer is suspended |
9003 | Wrong decimal for the amount sent |
9004 | Wrong decimal for fee rate |
9005 | Hidden account cannot change name |
9006 | Hidden account cannot withdraw assets |
9007 | Frozen source account |
9008 | Address already exists |
9009 | Wrong address format |
9010 | There are security risks associated with this deposit address |
9011 | The whitelist does not exist |
9012 | Address doesn't exist |
9013 | The whitelist address status is illegal |
9015 | Frozen destination account |
9016 | There are security risks associated with this address. In order to ensure the safety of your assets, please proceed with caution. If you have any questions or concerns, please contact Safeheron Support |
9017 | Insufficient transaction fee |
9018 | Transaction fee too high |
9019 | Transaction fee too low |
9020 | Source address and destination address cannot be the same for TRX and TRC-20 tokens |
9021 | The transaction to be replaced doesn't exist |
9022 | Only broadcasting transaction can be sped up |
9023 | This coin does not support speed-up |
9024 | Unauthorized user tried to initiate or approve a transaction |
9025 | The withdrawal amount is below the minimum limit |
9026 | Insufficient amount for withdrawal |
9027 | Matched with the policy, but the approver does not possess the approval role |
9028 | No matching transaction policy |
9029 | The destination address does not match the whitelisted address |
9030 | Non-cancellable status |
9031 | The estimated online transaction fee is greater than the maximum transaction fee |
9032 | This coin is not UTXO-based type |
9033 | The whitelist address already exists |
9034 | Address and ID are not matched |
9035 | This transaction record doesn't exist |
9036 | Source account doesn't exist |
9037 | Account coin doesn't exist |
9038 | This coin is not supported yet |
9039 | The number of wallet accounts exceeds the limit |
9040 | The number of addresses exceeds the limit |
9041 | Wallet name already exists |
9042 | Do not meet sweeping requirements for UTXOs |
9043 | MPC Sign currently only supports one account |
9044 | Invalid hash |
9045 | The whitelist address is already associated with a transaction policy. Please unbind it before proceeding |
9047 | Gas limit is less than the minimum value |
9048 | Abnormal risk control detection |
9049 | There are security risks associated with this transfer address |
9050 | Address format error |
9051 | Please wait patiently during transaction broadcasting |
9052 | The transaction output already used and cannot be accelerated |
9053 | Transaction already on the chain or nonce already used |
9054 | The whitelist addresses must be approved before any transfer is allowed |
9055 | Insufficient UTXO |
9056 | Duplicate speed-up |
9057 | To accelerate a transaction using RBF, the fee rate of the sped-up transaction must be higher than that of the original transaction |
9058 | GasBudget too low |
9059 | GasPrice too low |
9060 | Insufficient SUI object |
9061 | The handling fee is greater than the collected amount |
9062 | The whitelist address does not exist or has been deleted |
9063 | GasUnitPrice too low |
9064 | GasUnitPrice too high |
9065 | MaxGasAmount too low |
9066 | Replace a transaction on Aptos should have a higher gas unit price than that of the original transaction |
9067 | Replace a transaction on Aptos should have a max gas amount equal to that of the original transaction |
9068 | SequenceNumber too low |
9069 | SequenceNumber too high |
9070 | The accelerated transaction has been linked or sequenceNumber has been occupied |
9071 | The whitelist name already exists |
9072 | Unsupported chain types |
9073 | The number of whitelist exceeds the limit |
9074 | There are pending transactions related to the whitelist. Please make the modifications after the processing is completed |
9075 | During modification approval, modification is prohibited |
9076 | The system only supports whitelisting the destination address of a transaction if it is a one-time address |
9077 | For your security, the system only supports whitelisting the destination address of a completed transaction |
9078 | The address or Memo data in the parameters does not match the transaction record |
9079 | This transaction type is not supported |
9080 | The custom network you are using has not been added yet. Please add it using the Safeheron Browser Extension and try again |
9081 | Only TON wallet addresses are supported for whitelisting; Jetton wallet addresses are not supported |
9082 | The destination address or memo does not match the whitelist |
Data Dictionary
RSA Algorithm
Dictionary Code | Description |
---|---|
ECB_OAEP | RSA/ECB/OAEPWithSHA-256AndMGF1Padding |
AES Algorithm
Dictionary Code | Description |
---|---|
GCM_NOPADDING | AES/GCM/NoPadding |
Transaction Status
Dictionary Code | Description |
---|---|
SUBMITTED | Pending authorization |
SIGNING | Signing |
BROADCASTING | Broadcasting |
CONFIRMING | Confirming |
CANCELLED | Transaction cancelled |
COMPLETED | Transaction succeeded |
FAILED | Transaction failed |
REJECTED | Rejected |
Transaction Substatus
Dictionary Code | Description |
---|---|
CONFIRMED | Confirmed |
UN_KNOW_ERROR | Unexpected error |
REVIEW_REJECTED | Rejected |
TRADING_STRATEGY_BLOCKING | Transaction policy blocks |
MATCHING_RULE_NO_AUDITOR | Matched with the policy, but the editor does not possess the approval role |
TX_INFO_ERROR | Failed to transact |
NONCE_TOO_LOW | Nonce too low |
INTRINSIC_GAS_TOO_LOW | Gas limit too low, cannot perform transaction |
INSUFFICIENT_FUNDS | Insufficient amount for withdrawal |
AMOUNT_TOO_SMALL | The withdrawal amount is below the minimum limit |
TRANSACTION_UNDERPRICED | Transaction fee too low, transaction is rejected by node |
MISSING_INPUTS | Invalid input |
INVALID_SIGNATURE | Invalid transaction signature |
INTERNAL_ERROR | An internal error occurred while processing the transaction |
TIMEOUT | The transaction request timed out |
PENDING_BLOCKCHAIN_CONFIRMATIONS | Pending blockchain confirmation |
TAPOS_ERROR | Tapos check error |
NODE_SERVER_BUSY | Node service is busy |
DUP_TRANSACTION_ERROR | The transaction is on-chain, and a duplicate submission has been made. |
TRANSACTION_EXPIRATION_ERROR | Transaction timed out |
TRANSACTION_EXECUTION_FAILED | Transaction execution failed |
BANDWITH_ERROR | For Tron transactions: Insufficient bandwidth/energy or TRX. You can either increase the transaction fee or have other accounts delegate resources to this account before initiating the transaction |
ACCOUNT_DOES_NOT_EXIST | Account doesn't exist |
NO_MATCHING_RULE_FOUND | Transaction failed, configure transaction policy first |
WHITELIST_ADDRESS_STATUS_ILLEGAL | The whitelisted address is not approved |
AML_SCREENING_REJECTED | Rejected by AML check |
CONTRACT_VALIDATE_ERROR | Transaction verification error |
THE_DEAL_WAS_ABANDONED | Transaction abandoned |
MANUAL_TX_FAIL | Manual processing |
CANCELLED_BY_USER | User cancelled transaction |
RISK_CHECK_ILLEGAL | Exceptions detected by risk control. |
WALLET_NOT_ALLOWED | The wallet doesn't support current operation |
USER_NO_PERMISSION | User has no permission |
EXCHANGE_EMAIL_CONFIRMING | Pending email confirmation |
EXCHANGE_UN_KNOW_ERROR | Unexpected error |
EXCHANGE_INVALID_INFO | Invalid API private key, IP or operation permission |
EXCHANGE_AMOUNT_OVER_LIMIT | The transfer amount exceeds the maximum |
EXCHANGE_BALANCE_LACK | Insufficient balance |
RESET_AUTO_CANCEL | Automatic cancellation |
REVIEW_OTHERS_REJECTED | Rejected by the counterparty |
TON_BOUNCE_TRANSACTION | The transaction is bounced |
TON_SEQUENCE_INVALID | Invalid sequence |
Web3 Transaction Status
Dictionary Code | Description |
---|---|
SUBMITTED | Pending authorization |
SIGNING | Signing |
CANCELLED | Transaction cancelled |
SIGN_COMPLETED | MPC successfully signed |
FAILED | Transaction failed |
REJECTED | Rejected |
Transaction Fee Rate Grade
Dictionary Code | Description |
---|---|
LOW | Low |
MIDDLE | Medium |
HIGH | High |
Account Type
Dictionary Code | Description |
---|---|
VAULT_ACCOUNT | Vault account |
Account Tag
Dictionary Code | Description |
---|---|
NONE | None |
DEPOSIT | Deposit Wallet Scenario: If you need to auto-sweep a wallet using Safeheron's Auto-Sweep, tag this label to it |
Transaction Source Account Type
Dictionary Code | Description |
---|---|
VAULT_ACCOUNT | Vault account |
PROFILE_ACCOUNT | Profile account |
UNKNOWN | External account |
Transaction Destination Account Type
Dictionary Code | Description |
---|---|
VAULT_ACCOUNT | Vault account |
PROFILE_ACCOUNT | Profile account |
WHITELISTING_ACCOUNT | Whitelisted account |
ONE_TIME_ADDRESS | Unknown address account |
Coin's Whitelist Status
Dictionary Code | Description |
---|---|
VERIFY_PENDING | Approving |
VERIFY_PASS | Approved |
VERIFY_REFUSE | Rejected |
AML_REFUSE | Rejected by risk control |
Coin Type
Dictionary Code | Description |
---|---|
NATIVE | Native token, such as ETH, BTC |
ERC20 | Token standard on ETH |
TRC20 | Token standard on TRON |
BEP20 | Token standard on BSC |
TOKEN | Other token standards |
Address Type
Dictionary Code | Description |
---|---|
DEFAULT | Normal address |
P2PKH | Normal address |
P2WPKH | SegWit address |
P2PKH_CASH | BCH-format normal address |
V4R2 | TON V4R2 wallet address |
Transaction Type
Dictionary Code | Description |
---|---|
TRANSACTION | Transaction |
MPC_SIGN | Native signature |
Transaction Subtype
Dictionary Code | Description |
---|---|
NORMAL | Normal transaction |
UTXO_COLLECTION | UTXO-sweeping transaction |
ABNORMAL | Transfers to external destinations (not in the Safeheron platform) or transactions signed by the original private key recovered by key shards |
AUTO_SWEEP | Auto-sweeping transaction |
AUTO_FUEL | Auto-fueling transaction |
UTXO_BATCH_TRANSFER | UTXO multi-address transfer |
BOUNCED_TRANSFER | TON's bounced transaction |
ENERGY_RENTAL_TRANSFER | Rent prepayment |
Web3 Sign Type
Dictionary Code | Description |
---|---|
ETH_SIGN | ethSign |
PERSONAL_SIGN | personalSign |
ETH_SIGN_TYPED_DATA | ethSignTypedData |
ETH_SIGNTRANSACTION | ethSignTransaction |
Signature Algorithm
Dictionary Code | Description |
---|---|
secp256k1 | secp256k1 |
ed25519 | ed25519 |
Query Page Direction
Dictionary Code | Description |
---|---|
PREV | Previous |
NEXT | Next |
Balance Verification
Dictionary Code | Description |
---|---|
BALANCE_CHECK | Verify the balance |
NON_CHECK | Do not verify the balance |
UTXO Selection
Dictionary Code | Description |
---|---|
DEFAULT | Sort from largest to smallest UTXO |
ATTACH_UTXO_FRAGMENTS | Select UTXOs from largest to smallest, UTXO fragments attached |
Version of EthSignTypedData
Dictionary Code | Description |
---|---|
ETH_SIGNTYPEDDATA_V1 | eth_signTypedData_v1 |
ETH_SIGNTYPEDDATA_V3 | eth_signTypedData_v3 |
ETH_SIGNTYPEDDATA_V4 | eth_signTypedData_v4 |
Transaction Direction
Dictionary Code | Description |
---|---|
INFLOW | Inflow: A transaction where the source address type is not VAULT_ACCOUNT and the destination address type is VAULT_ACCOUNT |
OUTFLOW | Outflow: A transaction where the source address type is VAULT_ACCOUNT and the destination address type is not VAULT_ACCOUNT |
INTERNAL_TRANSFER | Internal transfer: A transaction where both the source and destination address types are VAULT_ACCOUNT |
API SDK
We provide API SDKs for four programming languages: Java, JavaScript, Golang, and Python.
Changelog
2025-02-27 v2.1.21
- Added
Create a Transaction V3
interface
2025-01-13 v2.1.20
- Added
Retrieve Transaction Approval Details
interface - Added isSourcePhishing and isDestinationPhishing field to
Transaction List V1
,Transaction List V1
, andRetrieve a Transaction
- Added isSourcePhishing and isDestinationPhishing fields to transaction webhook callback
2025-01-06 v2.1.19
- Added memo field to
Create a Whitelist
,Create a Whitelist Based on a Transaction
,Modify a Whitelist
, andCreate a Transaction
- Added memo field to
Retrieve a Single Whitelist
,List Whitelist Data
,Retrieve a Transaction
,Transaction List V1
, andTransaction List V2
2024-12-10 v2.1.18
- Added
TRANSACTION_CUSTOMIZED_CONFIRMING
event types to the webhook callback
2024-11-21 v2.1.17
- Added
WHITELIST_ADDED
,WHITELIST_UPDATED
, andWHITELIST_REMOVED
event types to the webhook callback - Added transactionDirection field to transaction webhook callback
- Added useCustomNetwork field to
Create ethSign
,Create personalSign
,Create ethSignTypedData
, andCreate ethSignTransaction
- Added transactionDirection field to
Transaction List V1
andTransaction List V2
- Added transactionDirection field to the return value of
Transaction List V1
,Transaction List V2
, andRetrieve a Transaction
2024-10-24 v2.1.16
- Added
Add Coins to a Wallet Account V2
andAdd Address Group for UTXOs V2
interfaces - Added customerRefId filed to
Add Address Group for UTXOs
andList Coin Address Group of a Wallet Account
- Added customerRefId field to the return value of
List Coin Address Group of a Wallet Account
- Added addressGroupKey and addressGroupName fields to the return value of
Batch Add Address Groups for UTXOs
- Added addressGroupKey field to the return value of
Transaction List V1
,Transaction List V2
, andRetrieve a Transaction
2024-09-13 v2.1.15
- Added
Create a Whitelist Based on a Transaction
interface - Added archived field to
List Wallet Accounts
andList Web3 Wallet Accounts
- Added hiddenOnUI field to
Create a Whitelist
andList Whitelist Data
- Added archived field to
List Wallet Accounts
,Retrieve a Single Wallet Account
, andList Web3 Wallet Accounts
- Added hiddenOnUI field to
Retrieve a Single Whitelist
andList Whitelist Data
2024-08-08 v2.1.14
- Added
Create a Whitelist
,Modify a Whitelist
,Retrieve a Single Whitelist
,List Whitelist Data
, andDelete a Whitelist
interfaces - Added
Re-push Transaction Webhook Events
andPush All Failed Webhook Events
interfaces - Added customerRefId field to
Create a Wallet Account
,Create a Web3 Wallet Account
,List Wallet Accounts
,Retrieve a Single Wallet Account
, andList Web3 Wallet Accounts
- Added customerRefId field to the return values of
List Wallet Accounts
,Retrieve a Single Wallet Account
, andList Web3 Wallet Accounts
- Added derivePath field to the return values of
Create a Wallet Account
,Add Coins to a Wallet Account
,Batch Add Coins to Wallet Accounts
,List Coins Within a Wallet Account
,Retrieve The Balance of an Address
,List Coin Address Group of a Wallet Account
,Add Address Group for UTXOs
,Batch Add Address Groups for UTXOs
,Create a Web3 Wallet Account
,Batch Create Web3 Wallet Accounts
, andList Web3 Wallet Accounts
2024-05-16 v2.1.13
- Added
Retrieve a Single Wallet Account
interface - Updated the encryption method for interface request and response data, from AES to GCM, and from RSA to OAEP
2024-04-15 v2.1.12
- API Co-Signer MPC SIGN reviews adjustments of sourceAccountKey and note fields
- Added
ILLEGAL_IP_REQUEST
andNO_MATCHING_TRANSACTION_POLICY
event types to the webhook callback
2024-02-22 v2.1.11
- Added
UTXO Multi-Address Transfer
interface - Added sourceAddressList and destinationAddressList fields to the return value of
Transaction List V1
- Added sourceAddressList and destinationAddressList fields to the return value of
Transaction List V2
- Added sourceAddressList and destinationAddressList fields to the return value of
Retrieve a Transaction
- Added sourceAddressList and destinationAddressList fields to transaction webhook callback
- Added
destinationAddressList
field toEstimate Transaction Fee
2023-11-28 v2.1.10
- Added gasUnitPrice, maxGasAmount and sequenceNumber fields to
Create a Transaction
- Added gasUnitPrice and maxGasAmount fields to the interface
Speed Up Transactions
- Added gasUnitPrice and maxGasAmount fields to the return value of
Estimate Transaction Fee
2023-11-09 v2.1.9
- Added
coinKeyList
field toCreate a Wallet Account
- Added
coinAddressList
field to the return value ofCreate a Wallet Account
2023-10-17 v2.1.8
- Added
Batch Label Wallet Account
interface - Added
accountTag
field toCreate a Wallet Account
- Added
accountTag
field toBatch Create Wallet Accounts V1
- Added
accountTag
field toBatch Create Wallet Accounts V2
- Added
accountTag
field to the return value ofList Wallet Accounts
- Added
transactionType
field to the return value ofTransaction List V1
- Added
transactionType
field to the return value ofTransaction List V2
- Added
transactionType
field to the return value ofRetrieve a Transaction
- Added
transactionType
field to transaction webhook callback
2023-08-17 v2.1.7
- Added
treatAsGrossAmount
field toCreate a Transaction
- Added
speedUpHistory
field to the return value ofRetrieve a Transaction
2023-07-25 v2.1.6
- Added
gasBudget
field to the return value ofEstimate Transaction Fee
2023-06-29 v2.1.5
- Added
Transaction List V2
interface - Added createTimeMin and createTimeMax fields to
Web3 Sign Transaction List
2023-03-16 v2.1.4
- Added gasPremium and gasFeeCap fields to
Create a Transaction
- Added bytesSize, gasPremium, and gasFeeCap fields to the return value of
Estimate Transaction Fee
2023-02-17 v2.1.3
- Added support for Ed25519 signature algorithm
- Added
dataList
field toCreate an MPC Sign Transaction
- Added dataList field to the return values of
Retrieve an MPC Sign Transaction
andMPC Sign Transaction List
- Added
dataList
field to MPC sign webhook callback - Added
sourceAccountKey
field toEstimate Transaction Fee
2022-11-24 v2.1.2
- Added the
hideSmallAmountUsd
condition toTransaction List
2022-11-03 v2.1.1
- Added
Batch Create a Web3 Wallet Account
interface - Added
blockchainType
field to the return value of theCoin List
- Added
WEB3_SIGN_CREATED
andWEB3_SIGN_STATUS_CHANGED
event types to the webhook callback - Added the
value
field toEstimate Transaction Fee
2022-09-27 v2.1.0
- Added
Create a Web3 Wallet Account
andList Web3 Wallet Accounts
interfaces - Added
Create ethSign
,Create personalSign
,Create ethSignTypedData
,Create ethSignTransaction
andCancel Sign
interfaces - Added
Retrieve a Web3 Sign
andWeb3 Sign Transaction List
interfaces - Added nonce and balanceVerifyType fields to
Create a Transaction
2022-06-30 v2.0.0
- Release V2.0.0 of the API interface
- Added version switching functionality
- Added support for EIP-1559 in transaction fees for EVM-based tokens
2022-06-18 v1.0.4
- Added English documentation
- Removed the following API interfaces:
Address Book List
,Create Address Book
,Delete Address Book
,Get Single Address Book Whitelist
,Add Currency Whitelist to Address Book
, andDelete Currency Whitelist from Address Book
- Removed the following webhook event types:
ACCOUNT_CREATED
,ACCOUNT_COIN_CREATED
,ADDRESS_BOOK_WHITE_LIST_CREATED
,ADDRESS_BOOK_WHITE_LIST_AUDIT_PASSED
, andADDRESS_BOOK_WHITE_LIST_AUDIT_REFUSED
2022-01-18 v1.0.3
- Added compressed public key information to the return values of the
Create Wallet Account
andGet Wallet Account List
- Added
Batch Create Wallet Account V2
interface - Added
Retrieve Address Balance
interface - Added
Create an MPC Sign Transaction
,MPC Sign Transaction List
, andRetrieve Single MPC Sign Transaction
interfaces - Added
txType
field to theCancel Transaction
interface - Added
MPC_SIGN
type to the approval tasks in API Co-Signer - Added
MPC_SIGN_CREATED
andMPC_SIGN_STATUS_CHANGED
event types to the webhook callback - Removed
Change Wallet Account Name
interface - Removed the
vaultTxDirection
query condition from theTransaction List
interface - Added
feeCoinKey
query condition and support for multiple coin keys inTransaction List
- Added
Retrieve Current Block Height for Currency
interface
2021-12-03 v1.0.2
- Added
UTXO Sweeping
interface - Added
Snapshot the Coin Balance
interface - Added
amlLockUsdBalance
field toList Wallet Accounts
interface - Added customerExt1 and customerExt2 fields to the
Create a Transaction
- Added customerExt1, customerExt2, completedTime, amlLock, destinationTag and realDestinationAccountType fields to the return values of
List Transactions
andRetrieve A Transaction
- Moved amlLock field from coins to address information and added amlLockBalance and amlLockUsdBalance fields to the
List Wallet Account Coins
interface - Added
amlLock
field to returned address ofAdd Coins to a Wallet Account
,Batch Add Coins to Wallet Accounts
,List Wallet Account's Coin Address Group
,Add Address Group for UTXOs
, andBatch Add Address Groups for UTXOs
- Added customerExt1, customerExt2, amlLock, vaultTxDirection, and realDestinationAccountType fields to API webhook transaction notification
- Status and Substatus of webhook TransactionParam are changed into transactionStatus and transactionSubStatus
- Added conditions completedTimeMin, completedTimeMax, vaultTxDirection, customerRefId, transactionSubStatus and realDestinationAccountType to
Transaction List
2021-11-17 v1.0.1
- Optimized API version
2021-08-31 v1.0.0
- Created API documentation