<p>There are quite a few answers in the <a href="https://bitcointalk.org/index.php?topic=144347.0" rel="nofollow noreferrer">bitcointalk thread</a>. This is what I consider to be the best option:</p>

<ol>
<li>Using blockchain.info for queries</li>
<li><a href="https://bitcoin.stackexchange.com/questions/7708/how-do-i-create-an-offline-transaction-in-java-to-broadcast-via-blockchain-info">Using bitcoinj to sign transactions</a></li>
<li>Using blockchain.info broadcast API to broadcast transactions</li>
</ol>

<p><a href="https://github.com/blockchain/My-Wallet-Android/blob/master/src/piuk/MyRemoteWallet.java" rel="nofollow noreferrer">This class</a> from the the android version of My Wallet is supposed to implement this scheme.</p>

CC BY-SA 3.0
2013-02-16T07:14:52.137Z
2013-02-16T19:02:30.123Z
2017-04-13T12:47:33.743Z
ripper234
<blockquote>
  <p><strong>There is a simple and customized Git repo available (Node.js).</strong></p>
</blockquote>

<p><a href="https://github.com/Blank101/bitcoin-transaction" rel="nofollow noreferrer">Github Repository Link</a></p>

<p>This code allows you to do things such as: </p>

<ul>
<li>balance - Retrieves the balance of a wallet. </li>
<li>fees - Gets a list of
current fees based on the BitCoin network going rate. </li>
<li>utxo - Pull a
list of unspent transaction outputs. </li>
<li>pushtx - Push a raw transaction
onto the blockchain.</li>
</ul>

CC BY-SA 4.0
2018-09-24T05:33:32.613Z
2018-09-25T06:31:59.047Z
2018-09-25T06:31:59.047Z
Vishal Dalve
<p><a href="https://github.com/bitpay/bitcore-wallet-service#security-considerations" rel="nofollow">bitcore-wallet-service</a> by Bitpay seems to satisfy your conditions, in that it does not require you to log in or send the private key.</p>

CC BY-SA 3.0
2015-06-09T21:05:27.820Z
2015-06-09T21:05:27.820Z
Janus Troelsen
<p>As a client that doesn't download the whole blockchain, you must trust the bitcoin network more than one that does. That being said, there is only one question you absolutely need the blockchain to answer:</p>

<p>"How much money do I have?"</p>

<p>Such clients are called <a href="https://en.bitcoin.it/wiki/Thin_Client_Security#Simplified_Payment_Verification_.28SPV.29" rel="nofollow">SPV</a>, which was a method described in the original bitcoin whitepaper. <a href="http://electrum.org/" rel="nofollow">Electrum</a> is one such client. </p>

<p>It doesn't have an API, but it is <a href="https://github.com/spesmilo/electrum" rel="nofollow">open source</a>, so, if you want, you could write a python wrapper for it.</p>

CC BY-SA 3.0
2013-02-15T18:19:09.017Z
SPV still requires downloading headers. I am seeking an API that 1. Requires you trust something (e.g. that the server won't lie to you regarding how much money you have) 2. But that will not require you to download anything and 3. will not require your private keys, so will not be able to steal from you.
ripper234
CC BY-SA 3.0
2013-02-15T23:35:36.813Z
So, you're looking for an API that does everything but the signing for you, right?
Nick ODell
CC BY-SA 3.0
2013-02-16T06:35:02.767Z
The API should include a client library that does the signing. The remote API should indeed do everything except the signing.
ripper234
CC BY-SA 3.0
2015-06-09T15:28:47.570Z
What do you mean Electrum doesn't have an API? What is [Electrum-server](https://github.com/spesmilo/electrum-server) then offering?
Janus Troelsen
CC BY-SA 3.0
2015-06-09T15:37:00.683Z
@JanusTroelsen It offers an undocumented interface.
Nick ODell
CC BY-SA 3.0
2013-02-15T17:15:55.397Z
2013-02-15T17:15:55.397Z
Nick ODell
<p>The BOP Enterprise Bitcoin Server is an open source full node implementation with remote (that is client side) wallet. The server downloads the block chain does the transaction and block validation and routes transactions signed at the client.</p>

<p>The client connects to the server via a message bus. There is a Java and other APIs available with added client side features. Source code: <a href="https://github.com/bitsofproof/supernode" rel="noreferrer">https://github.com/bitsofproof/supernode</a></p>

<p>Commercial support and hosted instances available at <a href="http://bitsofproof.com" rel="noreferrer">http://bitsofproof.com</a></p>

CC BY-SA 3.0
2013-07-03T17:53:35.443Z
BOP is not yet "enterprise grade". In fact I could not even compile it on my new Win64 system. I feel it is a bit unstable as of now. Hopefully this is improved.
Jus12
CC BY-SA 4.0
2020-01-03T03:28:35.767Z
but the original question specified "without blockchain"
ekkis
CC BY-SA 3.0
2013-06-11T20:11:22.373Z
2013-06-11T20:11:22.373Z
Tamas Blummer
<p><a href="https://bitcoin.stackexchange.com/questions/2333/is-there-a-remote-bitcoin-api-that-doesnt-require-anything-to-be-stored-locally">This question</a> asks about how to work with bitcoin via an API without requiring a local blockchain. <a href="https://bitcoin.stackexchange.com/a/3991/78">The only answer</a> is about blockchain.info's JSON API, but it appears that unlike the web version of blockchain.info, the JSON API requires the account passwords to be sent to the server.</p>

<p>Is there another remote API that allows one to perform various bitcoin operations without compromising security - without sending private keys anywhere, but rather signing transactions locally? The API should not require any downloads - SPV does not fall under this category - but should just be a remote API to the bitcoin network that doesn't require any state / bootstrap from its client.</p>

<p>If I recall correctly then Stratum was supposed to be this API. Did it ever take off?</p>

CC BY-SA 3.0
2013-02-15T16:34:31.143Z
Also on bitciontalk - https://bitcointalk.org/index.php?topic=144347.0
ripper234
CC BY-SA 3.0
2013-02-15T18:40:06.170Z
I'm not sure how you want it to be trustless if you don't want to validate anything locally?
Pieter Wuille
CC BY-SA 3.0
2013-02-16T06:36:11.377Z
@PieterWuille - I am willing to trust that a remote node is not lying to me (I need to carefully choose that node/s). However, I do not want that node to know my private keys - instead, I'll sign transactions locally and send the signed tx to the node.
ripper234
CC BY-SA 3.0
2013-02-22T16:43:54.900Z
See also http://bitcoin.stackexchange.com/questions/7855/sending-bitcoins-programatically-without-running-a-node
ripper234
<development><api>
Is there a remote, trustless bitcoin API that doesn't require anything (blockchain/SPV headers) to be stored locally?
ripper234
# Is there a remote, trustless bitcoin API that doesn't require anything (blockchain/SPV headers) to be stored locally?

(Asked by: username_0 on 2013-02-15)

[This question](https://bitcoin.stackexchange.com/questions/2333/is-there-a-remote-bitcoin-api-that-doesnt-require-anything-to-be-stored-locally) asks about how to work with bitcoin via an API without requiring a local blockchain. [The only answer](https://bitcoin.stackexchange.com/a/3991/78) is about blockchain.info's JSON API, but it appears that unlike the web version of blockchain.info, the JSON API requires the account passwords to be sent to the server.

Is there another remote API that allows one to perform various bitcoin operations without compromising security - without sending private keys anywhere, but rather signing transactions locally? The API should not require any downloads - SPV does not fall under this category - but should just be a remote API to the bitcoin network that doesn't require any state / bootstrap from its client.

If I recall correctly then Stratum was supposed to be this API. Did it ever take off?

**Tags:** development, api

> **Comments:**
> **username_0**: Also on bitciontalk - https://bitcointalk.org/index.php?topic=144347.0  
> **username_1**: I'm not sure how you want it to be trustless if you don't want to validate anything locally?  
> **username_0**: @PieterWuille - I am willing to trust that a remote node is not lying to me (I need to carefully choose that node/s). However, I do not want that node to know my private keys - instead, I'll sign transactions locally and send the signed tx to the node.  
> **username_0**: See also http://bitcoin.stackexchange.com/questions/7855/sending-bitcoins-programatically-without-running-a-node  

---

## 5 answers

### Answer by username_5 on 2013-06-11. Score: 5 | Accepted answer

The BOP Enterprise Bitcoin Server is an open source full node implementation with remote (that is client side) wallet. The server downloads the block chain does the transaction and block validation and routes transactions signed at the client.

The client connects to the server via a message bus. There is a Java and other APIs available with added client side features. Source code: <https://github.com/bitsofproof/supernode>

Commercial support and hosted instances available at <http://bitsofproof.com>

> **Comments:**
> **username_6**: BOP is not yet "enterprise grade". In fact I could not even compile it on my new Win64 system. I feel it is a bit unstable as of now. Hopefully this is improved.  
> **username_7**: but the original question specified "without blockchain"  

---

### Answer by username_0 on 2013-02-16. Score: 2

There are quite a few answers in the [bitcointalk thread](https://bitcointalk.org/index.php?topic=144347.0). This is what I consider to be the best option:

1. Using blockchain.info for queries
2. [Using bitcoinj to sign transactions](https://bitcoin.stackexchange.com/questions/7708/how-do-i-create-an-offline-transaction-in-java-to-broadcast-via-blockchain-info)
3. Using blockchain.info broadcast API to broadcast transactions

[This class](https://github.com/blockchain/My-Wallet-Android/blob/master/src/piuk/MyRemoteWallet.java) from the the android version of My Wallet is supposed to implement this scheme.


---

### Answer by username_2 on 2018-09-24. Score: 2

> **There is a simple and customized Git repo available (Node.js).**

[Github Repository Link](https://github.com/Blank101/bitcoin-transaction)

This code allows you to do things such as:

* balance - Retrieves the balance of a wallet.
* fees - Gets a list of
  current fees based on the BitCoin network going rate.
* utxo - Pull a
  list of unspent transaction outputs.
* pushtx - Push a raw transaction
  onto the blockchain.


---

### Answer by username_3 on 2015-06-09. Score: 1

[bitcore-wallet-service](https://github.com/bitpay/bitcore-wallet-service#security-considerations) by Bitpay seems to satisfy your conditions, in that it does not require you to log in or send the private key.


---

### Answer by username_4 on 2013-02-15. Score: 0

As a client that doesn't download the whole blockchain, you must trust the bitcoin network more than one that does. That being said, there is only one question you absolutely need the blockchain to answer:

"How much money do I have?"

Such clients are called [SPV](https://en.bitcoin.it/wiki/Thin_Client_Security#Simplified_Payment_Verification_.28SPV.29), which was a method described in the original bitcoin whitepaper. [Electrum](http://electrum.org/) is one such client.

It doesn't have an API, but it is [open source](https://github.com/spesmilo/electrum), so, if you want, you could write a python wrapper for it.

> **Comments:**
> **username_0**: SPV still requires downloading headers. I am seeking an API that 1. Requires you trust something (e.g. that the server won't lie to you regarding how much money you have) 2. But that will not require you to download anything and 3. will not require your private keys, so will not be able to steal from you.  
> **username_4**: So, you're looking for an API that does everything but the signing for you, right?  
> **username_0**: The API should include a client library that does the signing. The remote API should indeed do everything except the signing.  
> **username_3**: What do you mean Electrum doesn't have an API? What is [Electrum-server](https://github.com/spesmilo/electrum-server) then offering?  
> **username_4**: @JanusTroelsen It offers an undocumented interface.  

---

