The Blockchain Receive Payments API V2 is the quickest and easiest way to begin accepting automated bitcoin payments. Consisting of just a simple HTTP GET request, you can be up and running in minutes. One of the difficulties involved with receiving bitcoin payments is the need to generate a unique address for each new user or invoice. Dec 31, · Follow the steps below for help getting started. Click on Send and select Bitcoin from the Currency drop-down menu. If you have multiple sub-wallets, you can choose the sub-wallet you want to send from in the From drop-down menu. In the To field, paste the recipient’s address OR scan the recipient’s QR code. To send funds from your wallet, you need the recipient’s receive address or QR code. To request, you can share your address or QR code with the sender. Note: your bitcoin and bitcoin cash address will change each time you request but your ether address will stay the same. Using Your Transaction Feed.
Blockchain api send bitcoinSending Bitcoin – Blockchain Support Center
How can we do what others claim require off-chain, centralized services? We leverage our own infrastructure; in particular, our Confidence Factor. As of this writing, we haven't had a single failed mictrotransaction, and we're improving our confidence data all the time. We also pay for the mining fees for your first 8, microtransactions.
After which, we automatically optimize fee structure to achieve a balance between guaranteeing confidence it will be in the next block and minimizing cost. If there isn't enough value in your microtransaction for the fee, we'll return an error. The endpoint is simple to employ, and uses a slightly pared down transaction object, appropriately called a MicroTX. For low value source addresses and testing, we support directly sending private keyswe'll construct, sign, and send the transaction for you.
We never store the private key, and remove it from server memory as soon as its used. The request object is a partially filled out MicroTX , whose format differs depending on whether you're sending a private key or public key for the source address. In either case, there are two options you can set:. The simplest way to send a Microtransaction is by using a private key. You can read more descriptions about these fields within MicroTX object description , although they should be self-explanatory.
If successful thereafter, a completed MicroTX object will be returned which will include the transaction's hash for future queries , along with an HTTP Status Code Much like creating normal transactions the process requires two endpoint calls; the first is similar to the private key method, but with public keys. You must then sign the data in this array with your locally-stored private key; signing can be a tricky process, but you can use our signer tool as a baseline.
Once that data is signed, it must be inserted to a signatures within the previously returned MicroTX object. In general, sending any private key to an outside service is bad security practice.
However, security and convenience are often in opposition. In terms of deciding whether passing private keys for microtransactions is a reasonable tradeoff, consider the following:. Finally, we only offer the option of passing private keys because we understand that signing on the client side can be difficult, depending on the environment.
We hope that by fully understanding the tradeoffs and risks, you'll make the right choice for your situation. One of the things that makes BlockCypher's API uniquely powerful is our ability to accurately predict the likelihood of an attempted double-spend succeeding against a transaction; this percentage probability is optionally included within the confidence attribute on any unconfirmed transaction returned by the Transaction Hash Endpoint when using the includeConfidence flag, in addition to the explicit Transaction Confidence Endpoint detailed below.
So what does that confidence attribute actually mean? In simpler terms, if an unconfirmed transaction returns a confidence factor of By design, we're conservative. As you may have gathered from the frequency of links to this feature in these docs, we're exceptionally proud of the work we've done to build this feature and provide it to our users.
And that pride extends to our own confidence in our confidence product. We've leveraged this product internally on two major features:. There are a host of factors that go into our confidence calculation, but you can broadly organize them into two categories. The shape of transactions refers to aspects of transactions that don't vary with time time-invariant in our model.
The behavior of transactions refers to aspects of transactions that do vary with time time-variant in our model. On the shape side of our model, we ask a number of questions about a transaction: How is it structured? What are its inputs and outputs? What's its signature type? Broadly speaking, without knowing anything about the network, does it look like this transaction will be confirmed soon?
The behavior part of our model primarily focuses on how a transaction propagates through the network. In order to model this correctly, you need both a great connection to the network and a lot of past data, which we have. By monitoring transaction propagation, the number of nodes that have received it, and how quickly they received it, we can calculate its probability to be the "winning" transaction at any given point in time, if a double-spend was attempted. The result is a robust and reliable metric for judging unconfirmed transaction confidence, especially when used in concert with webhooks and websockets.
Our work here is based on several public research results in addition to our own in-depth follow-up research, which you can read about here. We are constantly improving our confidence model, and we always publish our findings when we do. Our confidence interval is automatically included in any unconfirmed transaction , but you can retrieve it through a specific endpoint too. The returned TXConfidence object contains the all-important confidence percentage, receive count and more.
You can find an unconfirmed transaction hash from our block explorer here. Cryptocurrency addresses, transactions, and blocks are extremely powerful, but the labels they employ can be That's why we have a Metadata API, allowing both public and private key-value storage against addresses, transactions, and blocks.
The Metadata API supports both public and private key-value storage. In both cases, setting metadata requires use of a token if you haven't already, you can register for one here. Public metadata is immutable ; once set, it cannot be modified or deleted. If you accidentally set public metadata and need it deleted, contact us. Also, as implied by the name, it's openly accessible to the whole worldregardless of whether they have a token or not.
Consequently, private metadata is associated and only accessible with your user token. The methods for interacting with metadata are outlined below. If another key with the same name already exists under your private metadata store, supplying a new value will replace it. New key-value pairs will be added without replacing prexisting key-value pairs. Blockchains contain a wealth of data, but much of it is inscrutable without arduous effort.
Our Analytics API makes uncovering these patterns easy, enabling you to discover insights efficiently and programmatically. The publicly accessible Analytics API is a set of preconfigured tools and pipelines built against our flexible analytics backend. It serves as both a useful tool for one-off analysis and a live demonstration for custom implementations.
If you're interested in a custom Analytics solution at enterprise scaleor have any ideas for general purpose analytics queries to benefit the community!
Each engine has its own request parameterslisted belowbut all are described in detail on the JobArgs object page. The following engines can power your analytics jobs. The resource below represents the URL you'd POST to create an analytics job based on the engine you're interested in using, along with the required and optional JobArgs parameters for searching. Returns the list of addresses along with their associated transaction hashes and amounts that have paid the target address.
Returns the list of addresses along with their associated transaction hashes and amounts that have been paid by the target address. Returns the most active limit number of addresses, optionally within a certain bounded time range denoted by start and end. Returns the outputs this address generated within a certain bounded time range denoted by start and end. N- degree address connectivity query.
Currently only examines addresses that generate outputs in the same transaction as the target address. Returns transactions relayed by a given source IP address and port within the given time range denoted by start and end. Note that the max limit is for this engine. This creates an analytics job asynchronously, taking in appropriate JobArgs based on the engine as described above. Returns a Job ; take special note of the ticket which is the unique identifier you'll use to get results and query job status.
You can check the status of your job with this endpoint, using the ticket returned in the Job object from creating an analytics job. Returns the results of a ticket ed job. The results themselves may be an array of JSON objects or an array of strings, depending on the engine used. Blockchains are about transferring value and ownership, so why can't that value extend beyond a blockchain's native token? Thanks to the possibility of embedding arbitrary data through null-data outputs, a blockchain can!
However, the act of creating these alternate forms of valueand choosing a format that was universally readablecan be fraught with difficulty. We built our Asset API to simplify that process. Now instead of spelunking through a blockchain's native transactions and interpreting them yourself, you can utilize this set of APIs to easily issue, check, and transfer assets.
This set of endpoints currently leverages the Open Assets Protocol , a simple, robust method of embedding assets across any blockchain that supports null-data outputs. Asset addresses are just like regular bitcoin addresses, and are generated from a private-public keypair.
They only differ by a prefix ex: 'a' for instead of '1' to distinguish them. Note that while it returns an Address object, anything that would have represented "satoshis" now represents "amount of asset. One of the well-known benefits of cryptocurrency is the ability to allow users to partake in online commerce without necessarily requiring extensive setup barriers, like registering new accounts.
In that spirit, our Payment Forwarding API is the easiest way to acceptand consolidatepayments securely without forcing your users to create accounts and jump through unnecessary loops. It's also a generic way to automatically transfer value from one address to another. While there are many possible use cases, the two we hear most about are:. We do not take a fee on payment forwarding, other than the required 10, satoshi miner fee; payments are free.
However, as part of your own services, you can include a fee either fixed or a percentage that will also be automatically transfered to your own address in the same transaction.
Fee-based business models are thus easily achieved, and moreover, easily auditable via the blockchain. First, to create an payment forwarding address, you need to POST a partially filled PaymentForward object to the payment creation endpoint. You can see more details about these options in the PaymentForward object details.
This returns the full array of your currently active payment forwarding addresses, based on your token. By default, this endpoint only returns the first payment forwards. If you have more, you can page through them using the optional start parameter. Blockchains are highly transactional systems. Many usage patterns require knowing when an event occurs: i. Instead of requiring you to continuously poll resources, we provide push APIs to facilitate those use cases, and support both WebSockets and WebHooks.
In addition to standard events, WebSockets accept a "ping" event. If you send the following, you will receive the same message back with "ping" replaced by "pong":. A regular ping i. We retry individual payloads to your url five times; if one fails, we wait exponentially between retries: 1 second, 2s, 4s, 8s, 16s. Using a partially filled out Event , you can create a WebHook using this resource. Check the Event object description and types of events to understand the options available for your events.
If successful, it will return the Event with a newly generated id. This resource deletes an active Event based on its id. Remember to include your token, or the request will fail.
The command is designed to work without user interaction. GetChain if err! GetBlock v , "" , nil if err! Faucet pair , if err! GetBlock 0 , "bbaabcc16fb3eb" , nil if err!
GetBlock , "" , params if err! GenAddrKeychain if err! GenAddrMultisig gobcy. CreateWallet gobcy. CreateHDWallet gobcy. TODO: ruby examples. ListWallets if err! GetHDWallet "bob" if err! GetAddrHDWallet "bob" , nil if err! GenAddrWallet "alice" if err! DeleteHDWallet "bob" if err! GetTX "faebaebccddf3cfebcdf58bd" , nil if err!
GetUnTX if err! Creating transactions manually is very complicated. We recommend you look at blockcypher. Faucet addr1 , 3e5 if err! NewTX gobcy. TempNewTX addr1. Address , addr2. SendTX skel if err! Signing is handled by our SDK in the next step.
PushTX "fddf3ddaaede31adcb28c73cace2fbbbb9b8c3fed6dcbafcbf9f0aafba9bb50f1efcb4cedcfbdcecb17f04f5fa1bdef33faa2ba7fa28c56a50facab96affffffffdacdcacaee1ea3f57ecedd1d09eacccadcc1af6a69bf12e90cbac" if err! DecodeTX "fddf3ddaaede31adcb28c73cace2fbbbb9b8c3fed6dcbafcbf9f0aafba9bb50f1efcb4cedcfbdcecb17f04f5fa1bdef33faa2ba7fa28c56a50facab96affffffffdacdcacaee1ea3f57ecedd1d09eacccadcc1af6a69bf12e90cbac" if err!
Create a custom payload, then use the function: BlockCypher. The python library includes a method that will sign and verify a transaction client-side, so your private key never leaves your computer. SendMicro gobcy. ECPair bigi. Buffer tosign , " hex ". Sign keychain. SendMicro micro if err! GetTXConf "bb01beeabe16b5d59dd3edf41abbeeffffdd2a" if err! CreatePayFwd gobcy. ListPayFwds if err! DeletePayFwd "6fbe2bfeacdcbc4d5fcc " if err! CreateHook gobcy.
ListHooks if err! GetHook "86acb-babdead4" if err! DeleteHook "86acb-babdead4" if err! A rolling average of the fee in satoshis paid per kilobyte for transactions to be confirmed within 1 to 2 blocks. A rolling average of the fee in satoshis paid per kilobyte for transactions to be confirmed within 3 to 6 blocks. A rolling average of the fee in satoshis paid per kilobyte for transactions to be confirmed in 7 or more blocks.
Optional The current height of the latest fork to the blockchain; when no competing blockchain fork present, not returned with endpoints that return Blockchains.
Optional The hash of the latest confirmed block in the latest fork of the blockchain; when no competing blockchain fork present, not returned with endpoints that return Blockchains. The height of the block in the blockchain; i. The depth of the block in the blockchain; i. Optional Raw size of block including header and all transactions in bytes. Not returned for bitcoin blocks earlier than height The time BlockCypher's servers receive the block.
Our servers' clock is continuously adjusted and accurate. The number used by a miner to generate this block. To get more details about specific transactions, you must concatenate this URL with the desired transaction hash es. The Merkle root of this block. Optional If there are more transactions that couldn't fit in the txids array, this is the BlockCypher URL to query the next set of transactions within a Block object.
Height of the block that contains this transaction. If this is an unconfirmed transaction, it will equal The hash of the transaction. While reasonably unique, using hashes as identifiers may be unsafe. The likelihood that this transaction will make it to the next block; reflects the preference level miners have to include this transaction. Can be high, medium or low. Version number, typically 1 for Bitcoin transactions.
Time when transaction can be valid. Can be interpreted in two ways: if less than million, refers to block height. If more, refers to Unix epoch time. Number of subsequent blocks, including the block the transaction is in. Unconfirmed transactions have 0 confirmations. Optional The percentage chance this transaction will not be double-spent against, if unconfirmed. For more information, check the section on Confidence Factor. Optional Time at which transaction was included in a block; only present for confirmed transactions.
Optional Number of peers that have sent this transaction to BlockCypher; only present for unconfirmed transactions. Optional Address BlockCypher will use to send back your change, if you constructed this transaction. If not set, defaults to the address from which the coins were originally sent.
Optional Hash of the block that contains this transaction; only present for confirmed transactions. Optional Canonical, zero-indexed location of this transaction in a block; only present for confirmed transactions. Optional If this transaction is a double-spend i. Data protocols currently detected: blockchainid ; openassets ; factom ; colu ; coinspark ; omni. Optional Hex-encoded bytes of the transaction, as sent over the network. The previous transaction hash where this input was an output.
Not present for coinbase transactions. The index of the output being spent within the previous transaction. The value of the output being spent within the previous transaction.
Legacy 4-byte sequence number , not usually relevant unless dealing with locktime encumbrances. Optional Number of confirmations of the previous transaction for which this input was an output. Currently, only returned in unconfirmed transactions. Only used when constructing transactions via the Creating Transactions process. Addresses that correspond to this output; typically this will only have a single address, and you can think of this output as having "sent" value to the address contained herein.
Optional The transaction hash that spent this output. Only returned for outputs that have been spent. The spending transaction may be unconfirmed.
The age of the transaction in milliseconds, based on the earliest time BlockCypher saw it relayed in the network. Number of peers that have sent this transaction to BlockCypher; only positive for unconfirmed transactions. A number from 0 to 1 representing BlockCypher's confidence that the transaction won't be double-spent against. If it's unconfirmed, this will equal The likelihood that the enclosing transaction will make it to the next block; reflects the preference level miners have to include the enclosing transaction.
If it's an input, or an unspent output, it will be false. Optional The past balance of the parent address the moment this transaction was confirmed. Not present for unconfirmed transactions. Optional Time this transaction was received by BlockCypher's servers; only present for unconfirmed transactions. Array of signatures corresponding to all the data in tosign , typically provided by you. Array of public keys corresponding to each signature. In general, these are provided by you, and correspond to the signatures you provide.
Optional Array of hex-encoded, work-in-progress transactions; optionally returned to validate the tosign data locally. Optional Array of errors in the form "error":"description-of-error".
This is only returned if there was an error in any stage of transaction generation, and is usually accompanied by a HTTP code. Optional The encoding of your data, can be either string for plaintext or hex for hex-encoded. If not set, defaults to hex. Optional The hash of the transaction containing your data; only part of return object.
Optional Address BlockCypher will use to send back your change. While not required, we recommend that you set a change address. The guarantee usually takes around 8 seconds. If manually set to false , the Microtransaction endpoint will return as soon as the transaction is broadcast. Optional Hex-encoded data for you to sign after initiating the microtransaction. Optional Hex-encoded signatures for you to send back after having received and signed tosign. Optional Partial list of inputs that will be used with this transaction.
Inputs themsleves are heavily pared down, see cURL sample. Optional Partial list of outputs that will be used with this transaction. Outputs themselves are heavily pared down, see cURL sample. BlockCypher pays these fees for the first 8, microtransactions, but like regular transactions, it is deducted from the source address thereafter.
Optional The requested address. Optional The requested wallet object. Only returned if querying by wallet name instead of public address. Optional The requested HD wallet object. Only returned if querying by HD wallet name instead of public address.
Balance of confirmed satoshis on this address. This is the difference between outputs and inputs on this address, but only for transactions that have been included into a block i. Balance of unconfirmed satoshis on this address. Can be negative if unconfirmed transactions are just spending outputs. Only unconfirmed transactions haven't made it into a block are included.
Number of confirmed transactions on this address. Number of unconfirmed transactions for this address. Final number of transactions, including confirmed and unconfirmed transactions, for this address.
Optional To retrieve base URL transactions. Optional Array of full transaction details associated with this address. Usually only returned from the Address Full Endpoint. Optional Array of transaction inputs and outputs for this address. Usually only returned from the standard Address Endpoint.
Optional All unconfirmed transaction inputs and outputs for this address. Optional If true , then the Address object contains more transactions than shown. Useful for determining whether to poll the API for more transaction information. Wallet import format , a common encoding for the private key.
Optional Array of public keys to provide to generate a multisig address. Optional If generating a multisig address, the type of multisig script; typically "multisig-n-of-m", where n and m are integers. Optional If generating an OAP address , this represents the parent blockchain's underlying address the typical address listed above.
A single chain is returned if the wallet has no subchains. The extended public key all addresses in the HD wallet are derived from. It's encoded in BIP32 format. Optional Hex-encoded metadata that can optionally be encoded into the issue or transfer transaction.
Unique indentifier associated with this asset; can be used to query other transactions associated with this asset. This transaction's unique hash; same as the underlying transaction on the asset's parent blockchain. Optional Time this transaction was confirmed; only returned for confirmed transactions. Optional Associated hex-encoded metadata with this transaction, if it exists. Click on Send and select Bitcoin from the Currency drop-down menu.
If you have multiple sub-wallets, you can choose the sub-wallet you want to send from in the From drop-down menu. Enter the amount you want to send.
Add an optional description for your transaction. Please note: only you will be able to see this. From the Transaction Fee drop-down menu, choose either a Regular or Priority fee. Regular fees are lower, but transactions can take over an hour to confirm. Priority fees cost more but are calculated to ensure transactions confirm within an hour.
For an in-depth look at how our fee recommendations work, check out this blog post. Once you're ready to send, click Continue to review the details of your transaction. Once you have verified your transaction details, click Send Bitcoin to send the funds.