Advance sweep
fee
and min
are added to POST
/sweep
to allow advance customization of sweeping. fee
by default was always set to minimum fee on the chain and min was set to 0 previously. Now minimum amount can be specified with the sweeping fee in order to hand pick large transactions without them getting stuck in the blockchain due to low fees.
Alternative explorer support
Supporting more blockchain nodes to increase the accuracy of blockchain data received by Vault.
API URL changes
The Vault API URL is changed from https://api.bitholla.com
to https://api.vault.bitholla.com
Endpoint path /vault
changed to /wallet
for most endpoints (details listed below)
Vault will remain backward compatible and still support all previous endpoints. However, we strongly recommend that users migrate to our new endpoints to avoid future disruptions.
Endpoint changes
API URL https://api.bitholla.com
=> https://api.vault.bitholla.com
GET /vault/coins
=> GET /coins
GET /vault/:wallet_name/check
=> GET /wallet/:wallet_name/check
POST /vault/wallet
=> POST /wallet
DELETE /vault/wallet
=> DELETE /wallet
GET /vault/user/wallets
=> GET /user/wallets
GET /vault/:wallet_name/master
=> GET /wallet/:wallet_name/master
GET /vault/:wallet_name/address/new
=> GET /wallet/:wallet_name/address/new
GET /vault/:wallet_name/addresses
=> GET /wallet/:wallet_name/addresses
GET /vault/:wallet_name/balance
=> GET /wallet/:wallet_name/balance
GET /vault/:wallet_name/restart
=> GET /wallet/:wallet_name/restart
POST /vault/:wallet_name/withdraw
=> POST /wallet/:wallet_name/withdraw
POST /vault/:wallet_name/withdraw/simple
=> POST /wallet/:wallet_name/withdraw/simple
POST /vault/:wallet_name/withdraw/batch
=> POST /wallet/:wallet_name/withdraw/batch
PUT /vault/:wallet_name/sweep
=> PUT /wallet/:wallet_name/sweep
POST /vault/:wallet_name/sweep
=> POST /wallet/:wallet_name/sweep
GET /vault/:wallet_name/transactions
=> GET /wallet/:wallet_name/transactions
GET /vault/transaction/status
=> GET /wallet/transaction/status
PUT /vault/:wallet_name/webhook
=> PUT /wallet/:wallet_name/webhook
GET /vault/:wallet_name/webhook/test
=> GET /wallet/:wallet_name/webhook/test
Webhook Test
Previous version required user to enter a mock transaction manually
The process is simplified to be more similar to the actual webhook flow
Endpoint changed from POST /vault/webhook/test
to GET /vault/:wallet_name/webhook/test
Endpoint only requires the name of a user's wallet (:wallet_name
)
Vault will send two mock transactions to the wallet's webhook URL separated by 10 seconds
First transaction will be pending
Second transaction will be completed
If the first request fails, this endpoint will throw a 400 error
Endpoint Changes
POST /vault/webhook/test
=> GET /vault/:wallet_name/webhook/test
Can now filter transactions by transaction id
Manual/Auto sweeping wallets
Users can now configure wallets to sweep funds in sub-address automatically or manually using the endpoint PUT /vault/:wallet_name/sweep
Endpoint takes body with the boolean value auto_sweep
Wallets with auto_sweep
set to true
will be swept by vault every ~5 minutes
New wallets will have auto_sweep
set to false
by default
Users can now manually sweep their wallets to an address using the endpoint POST /vault/:wallet_name/sweep
Endpoint takes body with optional string value address
The funds will be swept to the given address
Passing an empty body will sweep the sub-address funds to the wallet's master address
Wallet restart
Users can now restart their wallets using the endpoint GET /vault/:wallet_name/restart
New endpoints:
PUT /vault/:wallet_name/sweep
POST /vault/:wallet_name/sweep
GET /vault/:wallet_name/restart
Endpoint changes
GET /vault/:wallet_name/transactions
Added txid
query filter that filters result by transaction id
Wallet sweep functionality
Wallets were originally automatically swept by Vault
Users now have the option to manually sweep wallets
XLM (Stellar) Support
XAUT (Tether Gold) Support
USD Coin (USDC) Support
LEOcoin (LEO) Support
Delete Wallet
DELETE /vault/wallet
Users can now delete their own wallets.
Must pass the id of the wallet (wallet_id
) in the request body
Example:
{wallet_id: 1}
Simple Withdraw
POST /vault/{wallet_name}/withdraw/simple
Same functionality as POST /vault/{wallet_name}/withdraw
but with better body data structure
Body includes data which is a single object with address, amount, and meta and an optional fee
Example:
{data: {address: 'string',amount: 0.001,meta: {tag: 'string'}},fee: 'string'}
Batch Withdraw
POST /vault/{wallet_name}/withdraw/batch
Users can now perform multiple withdrawals to different addresses
Only works with BTC
and BCH
Body includes data
which is an array of objects with the individual withdrawal addresses and amounts and an optional fee
.
Example:
{data: [{address: 'string',amount: 0.001},...],fee: 'string'}
Endpoints added:
POST /vault/{wallet_name}/withdraw/simple
POST /vault/{wallet_name}/withdraw/batch
DELETE /vault/wallet
Dai (DAI) Support
Maker (MKR) Support
Monero (XMR) support
Only available for business wallets
Requires a special setup process
BCH support now available
Single address support
Users can now choose between creating a single address wallet and multi address wallet. Single address wallets cannot generate new addresses.
Endpoints added
GET /vault/{wallet_name}/address/new
Same functionality as GET /vault/{wallet_name}/address
Endpoint changes
POST /vault/wallet
Added type
field to body object that specifies the type of wallet being created. Can be one of single
or multi
. Default value is multi
.
GET /vault/{wallet_name}/address
Changed to GET /vault/{wallet_name}/address/new
Check wallet name availability
Users can now check to see if a wallet name is available by using GET /vault/{wallet_name}/check
.
See available Vault coins
Users can now see all the available coins on Vault using GET /vault/coins
.
Filter wallets by name
Users can now filter wallet queries by a name.
GET /vault/user/wallets
now has a name
query parameter. Vault will return all wallets with names that include the name
value.
Endpoints added
GET /vault/{wallet_name}/check
GET /vault/coins
New coins are supported
HollaEx (HEX)
USD Tether (USDT)
Endpoint changes
GET /vault/user/wallets
Added a name
query parameter
Withdrawal fee customization
Users can now specify the transaction fee of a withdrawal.
In the meta
tag of POST /vault/{wallet_name}/withdraw
, there is an added field called fee
where users can choose to add an optimal
, low
, or min
optimal
: Recommended fee required to make the withdrawal
low
: Low priority fee
min
: Lowest possible fee
Example:
"meta": {"fee": <optiomal, low, min>}
By default, Vault uses the optimal
fee if users don't add a fee
field
Fees can only be one of these three values and a fully custom fee is not allowed. The lower the fee, the longer it could take for it to be confirmed on the blockchain so we recommend using optimal
fee.
Maximum withdrawal amount
Users can now choose to withdraw the total amount for a wallet
The amount
field in the body of a POST /vault/{wallet_name}/withdraw
request is now optional. To withdraw the total amount in the wallet, either omit the amount
field or set it as 0
.
Address filtering for transactions
Users can now filter transactions by their associated addresses.
GET /vault/{wallet_name}/transactions
now takes an address
query parameter. Set this parameter as an address to filter the request.
Rejected transactions
A is_rejected
field has been added to transactions which indicates whether or not the transaction was rejected by the blockchain.
A rejected transaction is final and means that it has failed.
Endpoint changes
base path /v0
updated to /v1
/v0
is still supported but users should use /v1
going forward.
POST /vault/{wallet_name}/withdraw
Added a fee
field in the meta
tag where users can choose a withdrawal fee.
amount
field is now optional and can be omitted or set to 0
to indicate a maximum withdrawal.
GET /vault/{wallet_name}/transactions
Added address
query parameter that filters transactions by address.
Vault now listens for both testnet and mainet transactions on the blockchain and sends notification for all coins in both environments
Ethereum ERC20 contracts are now connected and fully supported
Previously, XRP wallets with lower than 20xrp displayed an error for their balances. This has been fixed and the wallets now show 0 if they have less than 20xrp.
20xrp is required to start an XRP wallet on the blockchain.
Endpoint Changes
/vault/transaction/status && /dash/vault/transaction/status
Added a new query parameter is_testnet
. It is a boolean
variable and specifies if the transaction being checked was on the testnet or not. The default value is false.
vault/webhook/test
Request body now has a is_testnet
field that specifies if the transaction being checked was on the testnet or not. The default value is false.
Added a new meta
attribute to the body being sent withPOST /vault/:wallet_name/withdraw
. It is an optional attribute that is an object where a user can send additional variables with a withdraw request. For example, XRP withdrawals require a tag
value. Users can send this tag
within the meta
attribute.
Example:
[{"address": "string","amount": 0.1,"meta": {"tag": 901224830}}]
Master Wallet Address
Every wallet will have a master address that holds all funds deposited to either the master address directly or to any of its child addresses.
The lifecycle of a deposit made to a child address is as follows:
Deposit is made to the address
Deposit is waiting to be confirmed on the blockchain
Once confirmed, the funds will wait to be swept to the master wallet
All deposits made to child addresses will eventually be transferred to the master address through a process called a sweep. A sweep is when Vault transfers all blockchain-confirmed funds in child addresses to the master address.
Every sweep is considered an additional transaction and will have an associated transaction fee. Sweeps are performed every minute.
There will be rare cases in which a deposit made to an address is confirmed on the blockchain but not swept to the master address. In this case, the wallet owner should make a GET
request to /vault/transaction/status
with the currency
, transaction_id
, and address
of the deposit as query parameters. Vault will check the blockchain to confirm the deposit and sweep the funds to the master address.
Learn more in the Advance Guide.
Endpoints Added
GET /vault/{wallet_name}/master
Get the master address for wallet_name
GET /vault/{wallet_name}/balance
Get the balance on the master address for wallet_name
GET /vault/transaction/status
Have Vault check the status of a transaction. If confirmed on the blockchain, Vault will sweep the funds to the master address. Query parameters currency
, transaction_id
, address
required.
api-key
and api-secret
are now called key
and secret
, respectively. They are still required in the header for authorization purposes.
Endpoints Changed
POST /vault/{wallet_name}/withdraw
Originally required a JSON object within the body.
Now requires an array of JSON objects.
This endpoint will eventually allow multiple withdrawals to be made within a single blockchain transaction. For now, it only performs the first withdrawal JSON object in the array.
currency
is no longer required in the JSON object.