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, 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. - According to dictionary key ascending order, serialize all request parameters into
apiKey=...&bizContent=...&key=...×tamp=...
format. - Sign the serialized request string via your API RSA private key. 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 into
bizContent=...&code=...&key=...&message=...×tamp=...
format. - Use your Safeheron API RSA public key, serialized response string and the
sig
field in the response to verify 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. - Decrypt
bizContent
field in response data via the AES key and IV and obtain the plaintext of response data.
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",
"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=="
}
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 |
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=="
}
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 |
Example Decrypted Data of Response Encrypted Data
[
{
"addressBookKey": "8be8c8de4bf749b3b08137ccxefa0b16",
"addressBookName": "name",
"whiteLists": [
{
"whiteListKey": "fdac862c74734d4fa81d62884f2ce4x0",
"coinKey": "ETH_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=",
"bizContent":{
"namePrefix": "namePrefixExample",
"nameSuffix": "nameSuffixExample",
"pageSize": 10,
"pageNumber": 1,
"hiddenOnUI": true
}
}
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 display status of wallet accounts in the Safeheron App True: retrieve hidden wallet accounts False: retrieve displayed wallet accounts Default: retrieve all wallet accounts |
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==",
"bizContent": {
"pageNumber": 1,
"pageSize": 10,
"totalElements": 100,
"content": [
{
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
"accountName": "default",
"accountIndex": 0,
"accountType": "VAULT_ACCOUNT",
"accountTag": "NONE",
"hiddenOnUI": 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 |
└─accountName | string | Account name |
└─accountIndex | int32 | Account index |
└─accountType | string | Account type |
└─accountTag | string | Account tag |
└─hiddenOnUI | boolean | Display status in Safeheron App True: not display False: display |
└─usdBalance | string | Account balance, in USD when retrieve |
└─pubKeys | array | Account public key information |
└─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=",
"bizContent":{
"accountName": "accountNameExample",
"hiddenOnUI": true,
"accountTag": "NONE",
"coinKeyList": ["ETH_SEPOLIA"]
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountName | string | No | Account name, 30 characters max |
hiddenOnUI | boolean | No | Display status in Safeheron App True: not display False: display Default: false |
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==",
"bizContent": {
"accountKey": "account4b8d2c00520646c8862b68420aa1bc55",
"pubKeys": [
{
"signAlg": "secp256k1",
"pubKey": "03ba5cfed3f88a811f0208570c64d1627af2e8f3363f65aad22be7490469dadd2a"
},
{
"signAlg": "ed25519",
"pubKey": "07df2ddef5d7c624d5452e10aaeb823cbf3e3d8b3d32e04af14cba374ac82d27"
}
],
"coinAddressList": [
{
"coinKey": "ETH_SEPOLIA",
"addressList": [
{
"address": "0x8c26DCdcED3627547b5662C7cc63472b44ed0c83",
"addressType": "DEFAULT"
}
]
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
accountKey | string | Wallet account key |
pubKeys | array | Account public key info |
└─signAlg | string | Signature algorithm |
└─pubKey | string | Account compressed public key |
coinAddressList | array | Coin address list |
└─coinKey | string | Coin key |
└─addressList | array | Address list |
└─address | string | Coin receiving address |
└─addressType | string | Address type |
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=",
"bizContent":{
"accountName": "accountNameExample",
"count": 10,
"accountTag": "NONE",
"hiddenOnUI": true
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountName | string | No | The prefix of wallet account name, 30 characters max |
hiddenOnUI | boolean | Yes | Display status in Safeheron App True: not display False: display Default: true |
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==",
"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=",
"bizContent":{
"accountName": "accountNameExample",
"count": 10,
"accountTag": "NONE",
"hiddenOnUI": true
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountName | string | No | The prefix of wallet account name, 30 characters max |
hiddenOnUI | boolean | Yes | Display status in Safeheron App True: not display False: display Default: true |
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==",
"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=",
"bizContent":{
"accountKey": "account08a2369f59214b1e9099dc6346f694ca",
"hiddenOnUI": true
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountKey | string | Yes | Wallet account key |
hiddenOnUI | boolean | Yes | Display status in Safeheron App True: not display False: display |
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==",
"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=",
"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==",
"bizContent": {
"result": true
}
}
Response Data
Parameter | Type | Description |
---|---|---|
result | boolean | Execution result True: success False: fail |
Add Coins to a Wallet Account
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=",
"bizContent":{
"coinKey": "ETH_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==",
"bizContent": [
{
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT"
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
address | string | Coin receiving address |
addressType | string | Address type |
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=",
"bizContent":{
"coinKey": "ETH_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==",
"bizContent": [
{
"addressList": [
{
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT"
}
],
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7"
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
addressList | array | Address list |
└─address | string | Coin receiving address |
└─addressType | string | Address type |
accountKey | string | Account key |
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=",
"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==",
"bizContent": [
{
"coinKey": "ETH_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",
"feeUnit": "Gwei",
"feeDecimal": 9,
"showCoinDecimal": 8,
"balance": "0",
"usdBalance": "0",
"addressList": [
{
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT",
"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 |
└─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=",
"bizContent":{
"pageNumber": 1,
"pageSize": 10,
"coinKey": "ETH_SEPOLIA",
"accountKey": "account08a2369f59214b1e9099dc6346f694ca"
}
}
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 |
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==",
"bizContent": {
"pageNumber": 1,
"pageSize": 10,
"totalElements": 100,
"content": [
{
"addressGroupKey": "addressffb9910f1f324f06a45ef055748fdf43",
"addressGroupName": "AddressName",
"addressList": [
{
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT",
"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 |
└─addressGroupName | string | Address group name |
└─addressList | array | Address list |
└─address | string | Coin receiving address |
└─addressType | string | Address type |
└─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=",
"bizContent":{
"coinKey": "ETH_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==",
"bizContent": {
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT",
"addressBalance": "0",
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
address | string | Coin receiving address |
addressType | string | Address type |
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=",
"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==",
"bizContent": {
"result": true
}
}
Response Data
Parameter | Type | Description |
---|---|---|
result | boolean | Execution result True: success False: fail |
Add Address Group for UTXOs
Add a new address group for UTXO-based cryptocurrencies under a wallet account. If the coin does not exist, it will be added first, followed by the new address group. The function will return the details of the added address(es).
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=",
"bizContent":{
"coinKey": "BTC_TESTNET",
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
"addressGroupName": "addressGroupNameExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKey | string | Yes | Coin key |
accountKey | string | Yes | Account 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==",
"bizContent": [
{
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT"
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
address | string | Coin receiving address |
addressType | string | Address type |
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=",
"bizContent":{
"coinKey": "ETH_SEPOLIA",
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7",
"count": 10,
"addressGroupName": "addressGroupNameExample"
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
coinKey | string | Yes | Coin key |
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==",
"bizContent": [
{
"addressList": [
{
"address": "0x1ec4fb20d8955d9d6a4ae45f01af04e170c0c022",
"addressType": "DEFAULT"
}
],
"accountKey": "accountfd9a0bc50c5f4a53b920c7c0ca85e0b7"
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
addressList | array | Address list |
└─address | string | Coin receiving address |
└─addressType | string | Address type |
accountKey | string | Account key |
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==",
"bizContent": [
{
"coinKey": "ETH_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",
"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, view UTXO-based currencies 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==",
"bizContent": [
{
"coinKey": "ETH_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 | string | Coin maintenance start time, UNIX time in milliseconds |
endTime | string | 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=",
"bizContent":{
"coinKey": "ETH_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==",
"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=",
"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==",
"bizContent": [
{
"coinKey": "ETH_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=",
"bizContent":{
"coinKey": "ETH_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==",
"bizContent": [
{
"coinKey": "ETH_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=",
"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",
"feeCoinKey": "ETH_SEPOLIA"
}
}
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 |
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==",
"bizContent": {
"pageNumber": 1,
"pageSize": 10,
"totalElements": 100,
"content": [
{
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"coinKey": "ETH_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"sourceAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d"
}
],
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"amount": "0.0001"
}
],
"destinationTag": "TEST",
"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",
"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"
}
]
}
}
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 | 交易源地址(如果交易币种为 UTXO 类型请使用 sourceAddressList 字段) |
└─sourceAddressList | array | 交易源地址列表 |
└─address | string | Source address |
└─destinationAccountKey | string | Destination account key |
└─destinationAccountType | string | Destination account type |
└─destinationAddress | string | 交易目标地址(如果交易币种为 UTXO 类型请使用 destinationAddressList 字段) |
└─destinationAddressList | array | Destination address list |
└─address | string | Destination address |
└─amount | string | Transaction amount |
└─destinationTag | string | If the destination is tag or memo type, then this value is empty |
└─transactionType | string | Transaction type |
└─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 |
└─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 |
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=",
"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",
"feeCoinKey": "ETH_SEPOLIA"
}
}
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 |
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==",
"bizContent": [
{
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"coinKey": "ETH_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"sourceAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d"
}
],
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"amount": "0.0001"
}
],
"destinationTag": "TEST",
"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",
"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"
}
]
}
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) |
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) |
destinationAddressList | array | Destination address list |
└─address | string | Destination address |
└─amount | string | Transaction amount |
destinationTag | string | If the destination is tag or memo type, then this value is empty |
transactionType | string | Transaction type |
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 |
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 |
Create a Transaction
Create a new transaction.
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=",
"bizContent":{
"customerRefId": "customerRefIdExample",
"customerExt1":"customerExt1Example",
"customerExt2":"customerExt2Example",
"note":"noteExample",
"coinKey": "ETH_SEPOLIA",
"txAmount": "0.00002",
"txFeeLevel":"HIGH",
"sourceAccountKey": "accounta247ca82828a4f93948282106135d109",
"sourceAccountType": "VAULT_ACCOUNT",
"destinationAccountKey": "5d1fd5c848fb441da8d2ec4f013acac5",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xFA8667a8135B889E853D87eD6d6350d35ecaeEF7",
"destinationTag": "destinationTagExampl",
"treatAsGrossAmount": false
}
}
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 |
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 Whitelist key if the destination is a whitelisted account; Wallet account key if the destination is a wallet account; No key for unknown address |
destinationAccountType | string | Yes | Destination account type |
destinationAddress | string | No | If the destinationAccountType is ONE_TIME_ADDRESS, then this field should have a value |
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) |
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 |
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==",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844"
}
}
Response Data
Parameter | Type | Description |
---|---|---|
txKey | string | Transaction key |
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=",
"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"
}
],
"destinationTag": "destinationTagExampl"
}
}
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) |
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==",
"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=",
"bizContent":{
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"coinKey": "ETH_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==",
"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=",
"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==",
"bizContent": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"coinKey": "ETH_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"sourceAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d"
}
],
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"amount": "0.0001"
}
],
"destinationTag": "TEST",
"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",
"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",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"destinationTag": "TEST",
"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",
"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"
}]
}
}
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) |
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) |
destinationAddressList | array | Destination address list |
└─address | string | Destination address |
└─amount | string | Transaction amount |
destinationTag | string | If the destination is tag or memo type, then this value is empty |
transactionType | string | Transaction type |
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 |
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 EVM and UTXO-based transactions); Only have a value once the current transaction has been accelerated |
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=",
"bizContent":{
"coinKey": "ETH_SEPOLIA",
"txHash": "0x7c45560e4aed51cbb45e477214c106203df3210e50740d2dad94ea7da41af803",
"sourceAccountKey": "account08a2369f59214b1e9099dc6346f694ca",
"sourceAddress": "0xC3A6b8dd08D3741819fAdBa4c5780b9524f510D5",
"destinationAddress": "0xC3A6b8dd08D3741819fAdBa4c5780b9524f510D4",
"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 and Solana 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 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 |
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==",
"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=",
"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==",
"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=",
"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",
"destinationTag": "destinationTagExample"
}
}
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 |
destinationTag | string | No | Destination 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==",
"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=",
"bizContent":{
"accountName": "accountNameExample",
"hiddenOnUI": true
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountName | string | No | Account name, 30 characters max |
hiddenOnUI | boolean | No | Display status in Safeheron App True: not display False: display Default: false |
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==",
"bizContent": {
"accountName": "wallet 11",
"accountKey": "account2024152bd65d4eaa85a26e57497562c1",
"hiddenOnUI": false,
"pubkeyList": [
{
"signAlg": "secp256k1",
"pubkey": "02c165c9a481f6a12eabe0d417ca6e7d04e762c5786afdf55c8c5716a1214b8cbf" }
],
"addressList": [
{
"blockchainType": "EVM",
"address": "0x111111111111111111111111111"
}
]
}
}
Response Data
Parameter | Type | Description |
---|---|---|
accountKey | string | Account Key, the only account identifier |
accountName | string | Account name |
hiddenOnUI | boolean | Display status in Safeheron App True: not display False: display |
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 |
└─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=",
"bizContent":{
"accountName": "accountNameExample",
"count": 10
}
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
accountName | string | No | The prefix of wallet account name, 30 characters max |
hiddenOnUI | boolean | Yes | Display status in Safeheron App True: not display False: display Default: false |
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==",
"bizContent": [
{
"accountKey": "account2024152bd65d4eaa85a26e57497562c1",
"pubkeyList": [
{
"signAlg": "secp256k1",
"pubkey": "02c165c9a481f6a12eabe0d417ca6e7d04e762c5786afdf55c8c5716a1214b8cbf" }
],
"addressList": [
{
"blockchainType": "EVM",
"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 |
└─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=",
"bizContent":{
"direct": "NEXT",
"limit": 100,
"fromId": "account2024152bd65d4eaa85a26e57497562c1",
"namePrefix": "namePrefixExample"
}
}
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 |
namePrefix | string | No | Filter the response based on this account name prefix |
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==",
"bizContent": [
{
"accountName": "wallet 11",
"accountKey": "account2024152bd65d4eaa85a26e57497562c1",
"hiddenOnUI": false,
"pubkeyList": [
{
"signAlg": "secp256k1",
"pubkey": "02226320f7571a5b1f2d56f3f1d1b6c4efce9a1a882f8f42bfc37bc7d1f3848cc2"
}
],
"addressList": [
{
"blockchainType": "EVM",
"address": "0x111111111111111111111111111"
}
]
}
]
}
Response Data
Parameter | Type | Description |
---|---|---|
accountKey | string | Account Key, the only account identifier |
accountName | string | Account name |
hiddenOnUI | boolean | Display status in Safeheron App True: not display False: display |
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 |
└─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=",
"bizContent":{
"accountKey": "account099d3534391040c491a93bfbc9914662",
"customerRefId": "customerRefIdExample",
"note": "noteExample",
"customerExt1":"customerExt1Example",
"customerExt2":"customerExt2Example",
"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) |
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) |
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==",
"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=",
"bizContent":{
"accountKey": "account099d3534391040c491a93bfbc9914662",
"customerRefId": "customerRefIdExample",
"note": "noteExample",
"customerExt1":"customerExt1Example",
"customerExt2":"customerExt2Example",
"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) |
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) |
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==",
"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=",
"bizContent":{
"accountKey": "accountee096876e25f440b836bbcd745987eae",
"customerRefId": "customerRefIdExample",
"note": "noteExample",
"customerExt1":"customerExt1Example",
"customerExt2":"customerExt2Example",
"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) |
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) |
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==",
"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=",
"bizContent":{
"accountKey": "accountee096876e25f440b836bbcd745987eae",
"customerRefId": "customerRefIdExample",
"note": "noteExample",
"customerExt1":"customerExt1Example",
"customerExt2":"customerExt2Example",
"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) |
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) |
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==",
"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=",
"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==",
"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=",
"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==",
"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 | 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) |
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=",
"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==",
"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 | 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) |
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=",
"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) |
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==",
"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=",
"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==",
"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": "",
"data": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
"sig":""
}
]
}
}
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=",
"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==",
"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": "",
"data": "d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69",
"sig":""
}
]
}
]
}
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
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==",
"bizContent": {
"eventType": "TRANSACTION_STATUS_CHANGED",
"eventDetail": {
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"coinKey": "ETH_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"destinationTag": "TEST",
"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",
"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 |
Follow these steps to decrypt and verify the callback data:
- Sort the callback data 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. 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. - Decrypt
bizContent
field in callback data via the AES key and IV and obtain the plaintext of callback business data.
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",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"destinationTag": "TEST",
"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",
"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 |
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 |
Event Details
TransactionParam
Example TransactionParam
{
"txKey": "tx46461daa9b7a4612abce99e7ce598844",
"txHash": "0xf7292ea446b573bab7311921e2489fb29d26ec393f2d6c8e280a7157f635234",
"coinKey": "ETH_SEPOLIA",
"txAmount": "0.001",
"sourceAccountKey": "account4b8d2c00520646c8862b68420aa1234234",
"sourceAccountType": "VAULT_ACCOUNT",
"sourceAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"sourceAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d"
}
],
"destinationAccountKey": "6553009588f443b1970a5962590a2158",
"destinationAccountType": "WHITELISTING_ACCOUNT",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594F234234",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"amount": "0.0001"
}
],
"destinationTag": "TEST",
"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",
"replaceTxHash": "0x628626531285bb90d4130d3beb3c355d2a7fe0bdfa1fa05e3431f15340aafeb6",
"customerRefId": "a1ef6672-c231-43cc-b174-ff30d392e723",
"customerExt1": "1",
"customerExt2": "2",
"amlLock": "NO",
"blockHeight": 10000000,
"completedTime": 1626075236000,
"realDestinationAccountType": "VAULT_ACCOUNT"
}
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) |
destinationAddressList | array | Destination address list |
└─address | string | Destination address |
└─amount | string | Transaction amount |
destinationTag | string | If the destination is tag or memo type, then this value is empty |
transactionType | string | Transaction type |
transactionStatus | string | Transaction status. When a transaction is in the 'confirming' state, its status will be updated to 'success' as soon as the required number of block confirmations for the coin involved has been reached |
transactionSubStatus | string | Transaction substatus |
createTime | int64 | Transaction creation time, UNIX timestamp (ms) |
note | string | Note |
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 |
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
NoMatchingTransactionPolicyParam 示例
{
"txKey": "tx697eebea3a61440a8edf6f0a783d19b2",
"amount": "0.0001",
"coinKey": "ETH_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 | int64 | Destination address |
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",
"bizContent": {
"auditRecordKey": "57e3a3e0eb3140c3ba538cc094bcb024",
"txKey": "txc0710da7db2b42ff9bf28df8910f8a88",
"coinKey": "ETH_SEPOLIA",
"txAmount": "0.012000000000000000",
"sourceAddress":"0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"sourceAccountKey": "accounta5867fecbbbc4a4f876532c87477407a",
"sourceAccountType": "VAULT_ACCOUNT",
"destinationAccountKey": "0259e8c481c345ca922f489961bc331b",
"destinationAccountType": "INTERNAL_WALLET",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"destinationTag": null,
"customerRefId": "123234111112112",
"triggerTime": 1635938498071,
"triggerUserName": "signer",
"txHash": "",
"blockHeight": null,
"feeCoinKey": "ETH_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 |
You can decrypt the callback data and verify its signature as outlined below:
- Serialize callback data 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 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. - Decrypt
bizContent
field in callback data via the AES key and IV and obtain the plaintext of response data.
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==",
"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 |
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 this JSON string, 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 the
key
field in the request parameters. - Serialize all request parameters 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. 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",
"txAmount": "0.012000000000000000",
"sourceAddress":"0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"sourceAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d"
}
],
"sourceAccountKey": "accounta5867fecbbbc4a4f876532c87477407a",
"sourceAccountType": "VAULT_ACCOUNT",
"destinationAccountKey": "0259e8c481c345ca922f489961bc331b",
"destinationAccountType": "INTERNAL_WALLET",
"destinationAddress": "0xCa104eA8CB4722e33a3E68eD4D12d3569594FBC5",
"destinationAddressList": [
{
"address": "tb1q4heth3mzkhz7v6zsz9l9t7aqcmgly96l3hep7d",
"amount": "0.0001"
},
{
"address": "tb1qrjrg92y7x0zc4h6e4xxg66r36jl22x84w3s3a0",
"amount": "0.0001"
}
],
"destinationTag": null,
"transactionType": "NORMAL",
"customerRefId": "123234111112112",
"triggerTime": 1635938498071,
"triggerUserName": "signer",
"txHash": "",
"blockHeight": null,
"feeCoinKey": "ETH_SEPOLIA",
"fee": null,
"customerExt1": "",
"customerExt1": ""
}
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) |
destinationAddressList | array | Destination address list |
└─address | string | Destination address |
└─amount | string | Transaction amount |
destinationTag | string | If the destination is tag or memo type, then this value is empty |
vaultTxDirection | string | Transaction Direction |
transactionType | string | Transaction type |
transactionStatus | string | Transaction status. When the status is "confirming", it will be updated to "successful" when the block confirmations reaches the specified confirmation count for the currency |
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 |
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 | No | Transaction key |
Error Code
Error Code | Description |
---|---|
200 | Success |
429 | Too many requests |
500 | System error |
1001 | Error unknown, 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 |
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 |
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 | Address book already has this coin |
9012 | Address doesn't exist |
9013 | Invalid whitelisted address |
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 |
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 | Whitelisted address name 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 | Another address book already has this address |
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 | Whitelisted 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 |
Data Dictionary
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 | If a user has insufficient account resources (bandwidth and energy) for TRON-based transaction, they can increase the transaction fee or purchase additional bandwidth or energy to complete 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 |
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 |
UNKNOWN | External account |
Transaction Destination Account Type
Dictionary Code | Description |
---|---|
VAULT_ACCOUNT | Vault 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 |
OMNI | Token standard on BTC |
TRC20 | Token standard on TRON |
BEP20 | Token standard on BSC |
Supported Coins
Coins | Coin's Block Confirmations | Account type |
---|---|---|
Ethereum | 12 | ACCOUNT |
Ethereum(Sepolia) | 50 | ACCOUNT |
Bsc | 12 | ACCOUNT |
Heco | 12 | ACCOUNT |
Tron | 20 | ACCOUNT |
Avalanche | 120 | ACCOUNT |
Ether Classic | 500 | ACCOUNT |
FTM | 30 | ACCOUNT |
MATIC | 130 | ACCOUNT |
NEAR | 120 | ACCOUNT |
FIL | 900 | ACCOUNT |
Bitcoin | 2 | UTXO |
Bitcoin cash | 10 | UTXO |
Dash | 10 | UTXO |
SUI | 120 | ACCOUNT |
CFX | 200 | ACCOUNT |
Solana | 120 | ACCOUNT |
Address Type
Dictionary Code | Description |
---|---|
DEFAULT | Normal address |
P2PKH | Normal address |
P2WPKH | SegWit address |
P2PKH_CASH | BCH-format normal 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 |
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 |
Version of EthSignTypedData
Dictionary Code | Description |
---|---|
ETH_SIGNTYPEDDATA_V1 | eth_signTypedData_v1 |
ETH_SIGNTYPEDDATA_V3 | eth_signTypedData_v3 |
ETH_SIGNTYPEDDATA_V4 | eth_signTypedData_v4 |
API SDK
We provide API SDKs for four programming languages: Java, JavaScript, Golang, and Python.
Changelog
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
types to the webhook callback
2024-02-22 v2.1.11
- Added
UTXO Multi-Address Transfer
interface - Added
sourceAddressList
anddestinationAddressList
fields to the return values ofTransaction List V1
- Added
sourceAddressList
anddestinationAddressList
fields to the return values ofTransaction List V2
- Added
sourceAddressList
anddestinationAddressList
fields to the return values ofRetrieve a Transaction
- Added
sourceAddressList
anddestinationAddressList
fields to Transaction webhook callback - Added
destinationAddressList
field toEstimate Transaction Fee
2023-11-28 v2.1.10
- Added
gasUnitPrice
,maxGasAmount
andsequenceNumber
fields toCreate a Transaction
- Added
gasUnitPrice
andmaxGasAmount
fields to the interfaceSpeed Up Transactions
- Added
gasUnitPrice
andmaxGasAmount
fields to the return values ofEstimate 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
interfaces - Added
createTimeMin
andcreateTimeMax
fields toWeb3 Sign Transaction List
2023-03-16 v2.1.4
- Added
gasPremium
andgasFeeCap
fields toCreate a Transaction
- Added
bytesSize
,gasPremium
andgasFeeCap
fields to the return values ofEstimate 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 ofRetrieve an MPC Sign Transaction
andMPC Sign Transaction List</0></li> <li>Added <code>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
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
andbalanceVerifyType
fields toCreate 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
interfaces - 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
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
interface - 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
andcustomerExt2
fields to theCreate a Transaction
interface - Added customerExt1, customerExt2, completedTime, amlLock, destinationTag and realDestinationAccountType fields to the return values of
List Transactions
andRetrieve A Transaction
interfaces - 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
interfaces - Added
customerExt1
,customerExt2
,amlLock
,vaultTxDirection
andrealDestinationAccountType
fields to API webhook transaction for push 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