<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ken</id>
	<title>Bitcoin Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ken"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Ken"/>
	<updated>2026-04-06T10:00:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=13661</id>
		<title>MtGox/API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=13661"/>
		<updated>2011-07-26T09:11:52Z</updated>

		<summary type="html">&lt;p&gt;Ken: fixed ticker channel number, fixed ticker specification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[MtGox]] API provides various methods to access different informations from the market, place orders, and more.&lt;br /&gt;
&lt;br /&gt;
Two APIs are available at this point: the HTTP api (available by posting to mtgox.com/code/*) and the websocket API.&lt;br /&gt;
&lt;br /&gt;
==Number Formats==&lt;br /&gt;
&lt;br /&gt;
In the &amp;quot;old API&amp;quot;, currency- and amount-values (price, volume,...) were given as &#039;&#039;&#039;float&#039;&#039;&#039;. These values are likely being deprecated and replaced by fields of the same name with &amp;quot;_int&amp;quot; as suffix. These are &#039;&#039;&#039;fixed-decimal&#039;&#039;&#039;, so you have to move the decimal point yourself (divide). The exponent differs based on the kind of the value.&lt;br /&gt;
&lt;br /&gt;
In order to convert the &#039;&#039;&#039;int&#039;&#039;&#039; to a &#039;&#039;&#039;decimal&#039;&#039;&#039; you can...&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! kind of field !! ...divide by !! ...multiply by&lt;br /&gt;
|-&lt;br /&gt;
| BTC (volume, amount) || 1E8 (10,000,000) || 0.00000001&lt;br /&gt;
|-&lt;br /&gt;
| USD (price) || 1E5 (100,000) || 0.00001&lt;br /&gt;
|-&lt;br /&gt;
| JPY (price) || 1E3 (1,000) || 0.001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Implementation advice: it&#039;s probably best to use &#039;&#039;&#039;int&#039;&#039;&#039; or &#039;&#039;&#039;Decimal&#039;&#039;&#039; (if your language/db offers such a type) in your clients. Using &#039;&#039;&#039;float&#039;&#039;&#039; will likely lead to nasty rounding problems.&lt;br /&gt;
&lt;br /&gt;
== HTTP API ==&lt;br /&gt;
This API is available in &amp;lt;nowiki&amp;gt;https://mtgox.com/api/*&amp;lt;/nowiki&amp;gt;, and provides various informations. It also supports making an order, a withdraw, a deposit, etc.  There is also a [[Finance::MtGox|Perl module]] for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
Authentication is performed by signing each request using HMAC-SHA512. The request must contain an extra value &amp;quot;nonce&amp;quot; which must be an always incrementing numeric value. A reference implementation is provided here:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
function mtgox_query($path, array $req = array()) {&lt;br /&gt;
	// API settings&lt;br /&gt;
	$key = &#039;&#039;;&lt;br /&gt;
	$secret = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// generate a nonce as microtime, with as-string handling to avoid problems with 32bits systems&lt;br /&gt;
	$mt = explode(&#039; &#039;, microtime());&lt;br /&gt;
	$req[&#039;nonce&#039;] = $mt[1].substr($mt[0], 2, 6);&lt;br /&gt;
&lt;br /&gt;
	// generate the POST data string&lt;br /&gt;
	$post_data = http_build_query($req, &#039;&#039;, &#039;&amp;amp;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// generate the extra headers&lt;br /&gt;
	$headers = array(&lt;br /&gt;
		&#039;Rest-Key: &#039;.$key,&lt;br /&gt;
		&#039;Rest-Sign: &#039;.base64_encode(hash_hmac(&#039;sha512&#039;, $post_data, base64_decode($secret), true)),&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// our curl handle (initialize if required)&lt;br /&gt;
	static $ch = null;&lt;br /&gt;
	if (is_null($ch)) {&lt;br /&gt;
		$ch = curl_init();&lt;br /&gt;
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);&lt;br /&gt;
		curl_setopt($ch, CURLOPT_USERAGENT, &#039;Mozilla/4.0 (compatible; MtGox PHP client; &#039;.php_uname(&#039;s&#039;).&#039;; PHP/&#039;.phpversion().&#039;)&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	curl_setopt($ch, CURLOPT_URL, &#039;https://mtgox.com/api/&#039;.$path);&lt;br /&gt;
	curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);&lt;br /&gt;
	curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);&lt;br /&gt;
&lt;br /&gt;
	// run the query&lt;br /&gt;
	$res = curl_exec($ch);&lt;br /&gt;
	if ($res === false) throw new Exception(&#039;Could not get reply: &#039;.curl_error($ch));&lt;br /&gt;
	$dec = json_decode($res, true);&lt;br /&gt;
	if (!$dec) throw new Exception(&#039;Invalid data received, please make sure connection is working and requested API exists&#039;);&lt;br /&gt;
	return $dec;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// example 1: get infos about the account, plus the list of rights we have access to&lt;br /&gt;
var_dump(mtgox_query(&#039;0/info.php&#039;));&lt;br /&gt;
&lt;br /&gt;
// old api (get funds)&lt;br /&gt;
var_dump(mtgox_query(&#039;0/getFunds.php&#039;));&lt;br /&gt;
&lt;br /&gt;
// trade example&lt;br /&gt;
// var_dump(mtgox_query(&#039;0/buyBTC.php&#039;, array(&#039;amount&#039; =&amp;gt; 1, &#039;price&#039; =&amp;gt; 15)));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Methods ===&lt;br /&gt;
&lt;br /&gt;
==== 0/data/getTrades.php ====&lt;br /&gt;
This allows retrieving all trades which happened in the last 24 hours. The returned data is cached and may not reflect latest activity.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* since: Passing a tid in &amp;quot;since&amp;quot; allows retrieving all trades since that trade. The passed id is may not exist. Ie. to get all trades from the very beginning one would just call https://mtgox.com/code/data/getTrades.php?since=0 . since returns only 100 trades, and you can call the method again by passing the latest trade you have imported in since.&lt;br /&gt;
&lt;br /&gt;
==== 0/history_[CUR].csv ====&lt;br /&gt;
Allows downloading the activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
== Websocket API ==&lt;br /&gt;
ported on 7/10/2011 from http://forum.bitcoin.org/index.php?topic=5855.0&lt;br /&gt;
&lt;br /&gt;
===Connecting===&lt;br /&gt;
&lt;br /&gt;
You can connect via: ws://websocket.mtgox.com/mtgox&lt;br /&gt;
&lt;br /&gt;
The WebSocket protocol version used is that described in [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00 draft-ietf-hybi-thewebsocketprotocol-00] (aka draft-00).&lt;br /&gt;
&lt;br /&gt;
===Channels===&lt;br /&gt;
&lt;br /&gt;
The websocket will subscribe you to some channels automatically:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Channel ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| dbf1dee9-4f2e-4a08-8cb7-748919a71b21 || trades (each time a trade happens, you get something here)&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || the mtgox ticker (lots of updates, with often the same data)&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || depth information in realtime (price + amount + type... type=1=Ask, type=2=Bid)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally each user has a &amp;quot;own&amp;quot; channel which streams informations about orders (new order, deleted order, etc) and trades only the user&#039;s trades).&lt;br /&gt;
&lt;br /&gt;
Each message is a JSON-encoded object, with at least &amp;quot;op&amp;quot; element. The &amp;quot;op&amp;quot; element contains the operation to be done (for outgoing messages), or the type of message (for incoming messages).&lt;br /&gt;
&lt;br /&gt;
===Possible outgoing commands===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;unsubscribe&#039;&#039;&#039; Stop receiving messages from a channel (parameter &amp;quot;channel&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Incoming Data===&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;channel&amp;quot;:&amp;quot;d5f06780-30a8-4a48-a2f8-7ed181b4a13f&amp;quot;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;origin&amp;quot;:&amp;quot;broadcast&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;quot;ticker&amp;quot;,&lt;br /&gt;
  &amp;quot;ticker&amp;quot;:{&lt;br /&gt;
    &amp;quot;buy&amp;quot;:0.9515,&lt;br /&gt;
    &amp;quot;high&amp;quot;:1,&lt;br /&gt;
    &amp;quot;low&amp;quot;:0.91,&lt;br /&gt;
    &amp;quot;sell&amp;quot;:0.9697,&lt;br /&gt;
    &amp;quot;vol&amp;quot;:34349&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ticker&#039;&#039;&#039; contains the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Value&lt;br /&gt;
|-&lt;br /&gt;
| buy || highest bid as float&lt;br /&gt;
|-&lt;br /&gt;
| sell || lowest ask as float&lt;br /&gt;
|-&lt;br /&gt;
| high || maximum rate since last close as float&lt;br /&gt;
|-&lt;br /&gt;
| low || minimum rate since last close as float&lt;br /&gt;
|-&lt;br /&gt;
| vol || traded volume since last close&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Trade====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;channel&amp;quot;:&amp;quot;dbf1dee9-4f2e-4a08-8cb7-748919a71b21&amp;quot;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;origin&amp;quot;:&amp;quot;broadcast&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;quot;trade&amp;quot;,&lt;br /&gt;
  &amp;quot;trade&amp;quot;:{&lt;br /&gt;
    &amp;quot;amount&amp;quot;:2.71,&lt;br /&gt;
    &amp;quot;amount_int&amp;quot;:&amp;quot;271000000&amp;quot;,&lt;br /&gt;
    &amp;quot;date&amp;quot;:1310279340,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
    &amp;quot;price&amp;quot;:14.43,&lt;br /&gt;
    &amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
    &amp;quot;price_int&amp;quot;:&amp;quot;1443000&amp;quot;,&lt;br /&gt;
    &amp;quot;tid&amp;quot;:&amp;quot;1310279340877902&amp;quot;,&lt;br /&gt;
    &amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;trade&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;trade&#039;&#039;&#039; contains the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Value&lt;br /&gt;
|-&lt;br /&gt;
| amount || the traded amount in item (BTC), float, deprecated&lt;br /&gt;
|-&lt;br /&gt;
| amount_int || the traded amount * 1E8&lt;br /&gt;
|-&lt;br /&gt;
| date || unix timestamp of trade&lt;br /&gt;
|-&lt;br /&gt;
| item || What was this trade about&lt;br /&gt;
|-&lt;br /&gt;
| price || price per unit, float, deprecated&lt;br /&gt;
|-&lt;br /&gt;
| price_int || price in smallest unit as integer (5 decimals of USD, 3 in case of JPY)&lt;br /&gt;
|-&lt;br /&gt;
| price_currency || currency in which trade was completed&lt;br /&gt;
|-&lt;br /&gt;
| tid || Trade id (big integer, which is in fact trade timestamp in microseconds)&lt;br /&gt;
|-&lt;br /&gt;
| trade_type || Did this trade result from the execution of a bid or a ask?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Depth====&lt;br /&gt;
&lt;br /&gt;
Changes to the market depth data are broadcast so an up-to-date market depth can be kept by clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;channel&amp;quot;:&amp;quot;24e67e0d-1cad-4cc0-9e7a-f8523ef460fe&amp;quot;,&lt;br /&gt;
  &amp;quot;depth&amp;quot;:{&lt;br /&gt;
    &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
    &amp;quot;price&amp;quot;:&amp;quot;14.43&amp;quot;,&lt;br /&gt;
    &amp;quot;price_int&amp;quot;:&amp;quot;1443000&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;:1,&lt;br /&gt;
    &amp;quot;type_str&amp;quot;:&amp;quot;ask&amp;quot;,&lt;br /&gt;
    &amp;quot;volume&amp;quot;:&amp;quot;-2.71&amp;quot;,&lt;br /&gt;
    &amp;quot;volume_int&amp;quot;:&amp;quot;-271000000&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;origin&amp;quot;:&amp;quot;broadcast&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;quot;depth&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;depth&#039;&#039;&#039; contains the following:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Value&lt;br /&gt;
|-&lt;br /&gt;
| currency || the currency affected&lt;br /&gt;
|-&lt;br /&gt;
| item || the item (BTC)&lt;br /&gt;
|-&lt;br /&gt;
| price || price as a float, deprecated&lt;br /&gt;
|-&lt;br /&gt;
| price_int || the price at which volume change happened (5 decimal for USD, 3 for JPY)&lt;br /&gt;
|-&lt;br /&gt;
| type || 1=ask, 2=bid. deprecated, use type_str&lt;br /&gt;
|-&lt;br /&gt;
| type_str || type of order at this depth, either &amp;quot;ask&amp;quot; or &amp;quot;bid&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| volume || the volume change as float, deprecated&lt;br /&gt;
|-&lt;br /&gt;
| volume_int || volume change * 1E8&lt;br /&gt;
|-&lt;br /&gt;
|  || &lt;br /&gt;
|-&lt;br /&gt;
|  || &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Order update (private)====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;channel&amp;quot;:&amp;quot;(partial key)&amp;quot;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;order_upd&amp;quot;:{&lt;br /&gt;
    &amp;quot;amount&amp;quot;:1000,&lt;br /&gt;
    &amp;quot;darkStatus&amp;quot;:0,&lt;br /&gt;
    &amp;quot;date&amp;quot;:1302836027,&lt;br /&gt;
    &amp;quot;oid&amp;quot;:&amp;quot;(oid)&amp;quot;,&lt;br /&gt;
    &amp;quot;price&amp;quot;:0.9899,&amp;quot;status&amp;quot;:1&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;origin&amp;quot;:&amp;quot;broadcast&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;quot;order_upd&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;order_upd&#039;&#039;&#039; cointains the following:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Value&lt;br /&gt;
|-&lt;br /&gt;
| amount || change in volume of the order&lt;br /&gt;
|-&lt;br /&gt;
| darkStatus || &lt;br /&gt;
|-&lt;br /&gt;
| oid || ID of the affected order&lt;br /&gt;
|-&lt;br /&gt;
| price || &lt;br /&gt;
|-&lt;br /&gt;
| status || &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ken</name></author>
	</entry>
</feed>