Our Basic Multi-Signature addresses by default require two signatures for all withdrawals: yours, and Block.io's. This method provides exponentially higher security for your Wallets and applications than single-signature addresses. This way, you spend coins yourself, without trusting Block.io with your credentials. For private keys for your wallets, visit the Settings page on your dashboard.
If you require a more elaborate configuration to customize your applications' security, inquire about our Distributed Trust framework by going here. This framework allows up to 5 signatures per address. The use cases are endless!
First, you will need your API Keys, which we provide for Bitcoin, Dogecoin, Litecoin, and their Testnets. These API Keys are located in your Wallet. You are required to use an API Key when you interact with Block.io. It tells Block.io which network (e.g., Bitcoin) you wish to perform actions on.
You can access the API by making calls to links of this format:
https://block.io/api/v2/get_balance/?api_key=BITCOIN, DOGECOIN or LITECOIN API KEY
Returns a newly generated address, and its unique(!) label generated by Block.io. You can optionally specify a custom label.
You can also optionally specify the type of address you wish to generate.
Available address types for Bitcoin, and Litecoin are P2SH (default), and WITNESS_V0. Dogecoin is limited to P2SH addresses at this time.
Note that use of Witness v0 addresses will save you significant amounts of network fees, but these addresses are very new, and users' wallets may not recognize them at this time.
/api/v2/get_new_address/?api_key=API KEY
/api/v2/get_new_address/?api_key=API KEY&label=LABEL
/api/v2/get_new_address/?api_key=API KEY&address_type=ADDRESS TYPE
Returns the balance of your entire Bitcoin, Litecoin, or Dogecoin account (i.e., the sum of balances of all addresses/users within it) as numbers to 8 decimal points, as strings.
/api/v2/get_balance/?api_key=API KEY
Returns the (unarchived) addresses, their labels, user ids, and balances on your account. Upto 2500 addresses per page. Page parameter is optional.
/api/v2/get_my_addresses/?api_key=API KEY&page=PAGE NUMBER
Returns the balance of the specified addresses, or labels. Upto 2500 addresses/labels can be specified per request.
Can be used to query balances for external (non-account) addresses. If an external address' balance is returned, its user_id and label fields will be null.
/api/v2/get_address_balance/?api_key=API KEY&addresses=ADDRESS1,ADDRESS2,...
/api/v2/get_address_balance/?api_key=API KEY&labels=LABEL1,LABEl2,...
Returns the address specified by a label.
/api/v2/get_address_by_label/?api_key=API KEY&label=LABEL
Block.io eases your burden of storing information regarding users' addresses, labels, and user IDs. Below, we provide various methods that allow you to make fine-grained withdrawals from your account(s). You can withdraw from any addresses, from specific addresses, from specific user ids, and from specific labels, and you can send the specified amounts to up to 2500 destination addresses, users, or labels in a single API call.
The amount withdrawn must at least be 2 DOGE, 0.00002 BTC, or 0.0002 LTC. Please keep at least 1 DOGE, 0.0002 BTC, or 0.0001 LTC for network fees. There are no Block.io fees. Larger transactions (in bytes) will incur larger amounts of network fees as per Bitcoin/Dogecoin/Litecoin specifications. As of 06/09/15, you can now specify an additional parameter priority={low,medium,high} to increase the network fee paid in the given transaction. 01/24/17: Use the get_network_fee_estimate API call to determine beforehand the network fee for a given set of withdrawal parameters.
Ensuring Uniqueness of Withdrawals Client-side human or machine error can lead to multiple executions of the same withdrawal request. If such an error occurs, you will lose money. To ensure the uniqueness of withdrawal requests, you can specify a nonce=value parameter with your withdrawal requests, where value is an alpha-numeric string between 1 and 64 characters long. Withdrawal requests that provide duplicate nonces less than 1 hour apart will be rejected. This is an optional but recommended security measure.
These methods support POST and GET, but only GET examples are shown below. We recommend using POST methods in your applications.
Please use one of our official libraries for Ruby, PHP, NodeJS, or Python to perform client-side signatures. You can always make your own client-side signature libraries using these instructions: Client-Side Signing for Withdrawals.
Withdraws amount of coins from any addresses in your account to up to 2500 destination addresses.
/api/v2/withdraw/?api_key=API KEY&amounts=AMOUNT1,AMOUNT2,...&to_addresses=ADDRESS1,ADDRESS2,...
Withdraws AMOUNT coins from upto 2500 addresses at a time, and deposits it to up to 2500 destination addresses.
/api/v2/withdraw_from_addresses/?api_key=API KEY&from_addresses=ADDRESS1,ADDRESS2,...&to_addresses=ADDRESS1,ADDRESS2,...&amounts=AMOUNT1,AMOUNT2,...
Withdraws AMOUNT coins from upto 2500 labels at a time, and deposits it to upto 2500 destination addresses, or labels.
/api/v2/withdraw_from_labels/?api_key=API KEY&from_labels=LABEL1,LABEL2,...&to_addresses=ADDRESS1,ADDRESS2,...&amounts=AMOUNT1,AMOUNT2,...
/api/v2/withdraw_from_labels/?api_key=API KEY&from_labels=LABEL1,LABEL2,...&to_labels=LABEL1,LABEL2,...&amounts=AMOUNT1,AMOUNT2,...
The amounts=AMOUNT1,AMOUNT2,... and to_addresses=ADDRESS1,ADDRESS2,... parameters specify that destination ADDRESS1 will receive AMOUNT1, ADDRESS2 will receive AMOUNT2, etc. The source addresses (from_addresses=...) will need at least SUM(AMOUNT1,AMOUNT2...)+Network Fees in balances for this withdrawal to succeed.
Estimates the Network Fee you will need to pay when you make a withdrawal request. The Network Fee is required by the Bitcoin/Dogecoin/etc. networks, not Block.io.
Please use the same parameters as you would with any withdrawal API call; only one example is given below.
/api/v2/get_network_fee_estimate/?api_key=API KEY&amounts=AMOUNT1,AMOUNT2,...&to_addresses=ADDRESS1,ADDRESS2,...
Archiving of addresses help you control account bloat due to a large number of addresses.
When an address is archived, it is:
Address archival can greatly enhance the operational security of your applications by allowing you to move coins to new addresses without clogging your API call responses.
Archives upto 100 addresses in a single API call. Addresses can be specified by their labels.
/api/v2/archive_addresses/?api_key=API KEY&addresses=ADDRESS1,ADDRESS2,...
/api/v2/archive_addresses/?api_key=API KEY&labels=LABEL1,LABEl2,...
Unarchives upto 100 addresses in a single API call. Addresses can be specified by their labels.
/api/v2/unarchive_addresses/?api_key=API KEY&addresses=ADDRESS1,ADDRESS2,...
/api/v2/unarchive_addresses/?api_key=API KEY&labels=LABEL1,LABEl2,...
Returns all the archived addresses, their labels, and user ids on your account.
/api/v2/get_my_archived_addresses/?api_key=API KEY
Returns the prices from the largest exchanges for Bitcoin, Dogecoin, or Litecoin, specified by the API Key. Specifying the base currency is optional.
/api/v2/get_current_price/?api_key=API KEY
/api/v2/get_current_price/?api_key=API KEY&price_base=BASE CURRENCY
Returns various data for the last 25 transactions spent or received. You can optionally specify a before_tx parameter to get earlier transactions.
You can use this method to query for addresses that are not on your account.
Each result provides a confidence rating that shows the network's belief in the transaction's viability. This is useful if you need to validate transactions quickly (for e.g., in retail store settings) without waiting for confirmations. We recommend waiting for confidence ratings to reach 0.90-0.99 for unconfirmed transactions if you need to validate it. For unconfirmed transactions, you are also provided with the number of nodes (propagated_by_nodes) on the Network that approve of the given unconfirmed transaction (out of 150 sampled nodes).
If a double spend is detected for an unconfirmed transaction, its confidence rating falls to 0.0.
/api/v2/get_transactions/?api_key=API KEY&type=sent
/api/v2/get_transactions/?api_key=API KEY&type=received
/api/v2/get_transactions/?api_key=API KEY&type=sent&before_tx=TXID
/api/v2/get_transactions/?api_key=API KEY&type=received&before_tx=TXID
/api/v2/get_transactions/?api_key=API KEY&type=received&addresses=ADDRESS1,ADDRESS2,...
/api/v2/get_transactions/?api_key=API KEY&type=received&user_ids=USERID1,USERID2,...
/api/v2/get_transactions/?api_key=API KEY&type=received&labels=LABEL1,LABEL2,...
/api/v2/get_transactions/?api_key=API KEY&type=sent&before_tx=TXID&addresses=ADDRESS1,ADDRESS2,...
/api/v2/get_transactions/?api_key=API KEY&type=received&before_tx=TXID&addresses=ADDRESS1,ADDRESS2,...
...
Returns the raw data, including transaction hex, for a given transaction ID.
/api/v2/get_raw_transaction/?api_key=API KEY&txid=TXID
Returns whether a single specified address is valid for the network, or not.
/api/v2/is_valid_address/?api_key=API KEY&address=ADDRESS