<?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=Seventoes</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=Seventoes"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Seventoes"/>
	<updated>2026-05-17T15:28:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=35351</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=35351"/>
		<updated>2013-01-21T05:26:09Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: oops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
&lt;br /&gt;
* Host: &#039;&#039;&#039;socketio.mtgox.com&#039;&#039;&#039;&lt;br /&gt;
* Port: &#039;&#039;&#039;443&#039;&#039;&#039;&lt;br /&gt;
* Namespace: &#039;&#039;&#039;/mtgox&#039;&#039;&#039; (Including beginning slash)&lt;br /&gt;
&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==the Currency parameter ==&lt;br /&gt;
use : &lt;br /&gt;
websocket.mtgox.com:80/mtgox?Currency=EUR&lt;br /&gt;
&lt;br /&gt;
 and the websocket will give you updates in EUR currency&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| result || The response for op:call operations&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;
| properties || &amp;quot;market&amp;quot;: the trade ate the whole order, &amp;quot;limit&amp;quot;: the trade ate the order partially - some of the original order still exists&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
| total_volume_int || total volume at this price, after applying the depth update, can be used as a starting point before applying subsequent updates.&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;
=== op:result ===&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Valid states are: pending, post-pending, open, executing, invalid, or stop.&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==== wallet ====&lt;br /&gt;
&lt;br /&gt;
Updates to the user&#039;s wallet balance.&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;lt;USER CHANNEL GUID&amp;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;wallet&amp;quot;,&lt;br /&gt;
    &amp;quot;wallet&amp;quot;: {&lt;br /&gt;
        &amp;quot;op&amp;quot;: &amp;lt;UPDATE SOURCE&amp;gt;,&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            ...&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;info&amp;quot;: &amp;lt;UPDATE INFO&amp;gt;,&lt;br /&gt;
        &amp;quot;ref&amp;quot;: &amp;lt;REFERENCE CODE&amp;gt;,&lt;br /&gt;
        &amp;quot;balance&amp;quot;: {&lt;br /&gt;
            ...&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;...&amp;quot; values above are normal &#039;amount&#039; type dictionaries containing &amp;quot;currency&amp;quot;, &amp;quot;value&amp;quot;, &amp;quot;value_int&amp;quot;, and &amp;quot;display&amp;quot;.&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| UPDATE SOURCE || Cause of the balance update. Can be: in, out, earned, spent, withdraw, or deposit&lt;br /&gt;
|-&lt;br /&gt;
| UPDATE INFO || Human readable string describing the update. Same string you see in the account history on mtgox.com&lt;br /&gt;
|-&lt;br /&gt;
| REFERENCE CODE || Reference code for bank transfers. &amp;quot;null&amp;quot; if this isn&#039;t a bank transfer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Description of the different source types:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Source !! Description&lt;br /&gt;
|-&lt;br /&gt;
| deposit  || Account deposits&lt;br /&gt;
|-&lt;br /&gt;
| withdraw || Account withdrawals&lt;br /&gt;
|-&lt;br /&gt;
| earned || Amount of USD gained from a trade&lt;br /&gt;
|-&lt;br /&gt;
| spent || Amount of USD used for a trade&lt;br /&gt;
|-&lt;br /&gt;
| in || Amount of BTC gained from a trade&lt;br /&gt;
|-&lt;br /&gt;
| out || Amount of BTC used for a trade&lt;br /&gt;
|-&lt;br /&gt;
| fee || MtGox fees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== trade ====&lt;br /&gt;
&lt;br /&gt;
Trades that happen on behalf of a user whose private channel you&#039;re subscribed to issue trade messages with the same format as the [[MtGox/API/Streaming#Trade|public trades channel]] does. If you&#039;re subscribed to both, be careful not to take both into account during calculations, it might cause some hard to track down issues&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
==== unsubscribe ====&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
==== mtgox.subscribe ====&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the [[MtGox/API/HTTP/v1|HTTP API version 1]] methods can be called. Responses are [[MtGox/API/Streaming#op:result|op:result]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
A Java example:&lt;br /&gt;
https://github.com/timmolter/XChange&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
* https://github.com/goteppo/ArBit&lt;br /&gt;
* https://github.com/vbmithr/breakbot&lt;br /&gt;
&lt;br /&gt;
=== websocket tools ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
https://github.com/progrium/wssh&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;wssh websocket.mtgox.com:80/mtgox | grep depth 1&amp;gt;&amp;gt;depth.txt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[MtGox/API/HTTP/v1]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=35350</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=35350"/>
		<updated>2013-01-21T05:25:53Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Connecting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
&lt;br /&gt;
* Host: &#039;&#039;&#039;socket.io.mtgox.com&#039;&#039;&#039;&lt;br /&gt;
* Port: &#039;&#039;&#039;443&#039;&#039;&#039;&lt;br /&gt;
* Namespace: &#039;&#039;&#039;/mtgox&#039;&#039;&#039; (Including beginning slash)&lt;br /&gt;
&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==the Currency parameter ==&lt;br /&gt;
use : &lt;br /&gt;
websocket.mtgox.com:80/mtgox?Currency=EUR&lt;br /&gt;
&lt;br /&gt;
 and the websocket will give you updates in EUR currency&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| result || The response for op:call operations&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;
| properties || &amp;quot;market&amp;quot;: the trade ate the whole order, &amp;quot;limit&amp;quot;: the trade ate the order partially - some of the original order still exists&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
| total_volume_int || total volume at this price, after applying the depth update, can be used as a starting point before applying subsequent updates.&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;
=== op:result ===&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Valid states are: pending, post-pending, open, executing, invalid, or stop.&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==== wallet ====&lt;br /&gt;
&lt;br /&gt;
Updates to the user&#039;s wallet balance.&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;lt;USER CHANNEL GUID&amp;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;wallet&amp;quot;,&lt;br /&gt;
    &amp;quot;wallet&amp;quot;: {&lt;br /&gt;
        &amp;quot;op&amp;quot;: &amp;lt;UPDATE SOURCE&amp;gt;,&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            ...&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;info&amp;quot;: &amp;lt;UPDATE INFO&amp;gt;,&lt;br /&gt;
        &amp;quot;ref&amp;quot;: &amp;lt;REFERENCE CODE&amp;gt;,&lt;br /&gt;
        &amp;quot;balance&amp;quot;: {&lt;br /&gt;
            ...&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;...&amp;quot; values above are normal &#039;amount&#039; type dictionaries containing &amp;quot;currency&amp;quot;, &amp;quot;value&amp;quot;, &amp;quot;value_int&amp;quot;, and &amp;quot;display&amp;quot;.&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| UPDATE SOURCE || Cause of the balance update. Can be: in, out, earned, spent, withdraw, or deposit&lt;br /&gt;
|-&lt;br /&gt;
| UPDATE INFO || Human readable string describing the update. Same string you see in the account history on mtgox.com&lt;br /&gt;
|-&lt;br /&gt;
| REFERENCE CODE || Reference code for bank transfers. &amp;quot;null&amp;quot; if this isn&#039;t a bank transfer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Description of the different source types:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Source !! Description&lt;br /&gt;
|-&lt;br /&gt;
| deposit  || Account deposits&lt;br /&gt;
|-&lt;br /&gt;
| withdraw || Account withdrawals&lt;br /&gt;
|-&lt;br /&gt;
| earned || Amount of USD gained from a trade&lt;br /&gt;
|-&lt;br /&gt;
| spent || Amount of USD used for a trade&lt;br /&gt;
|-&lt;br /&gt;
| in || Amount of BTC gained from a trade&lt;br /&gt;
|-&lt;br /&gt;
| out || Amount of BTC used for a trade&lt;br /&gt;
|-&lt;br /&gt;
| fee || MtGox fees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== trade ====&lt;br /&gt;
&lt;br /&gt;
Trades that happen on behalf of a user whose private channel you&#039;re subscribed to issue trade messages with the same format as the [[MtGox/API/Streaming#Trade|public trades channel]] does. If you&#039;re subscribed to both, be careful not to take both into account during calculations, it might cause some hard to track down issues&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
==== unsubscribe ====&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
==== mtgox.subscribe ====&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the [[MtGox/API/HTTP/v1|HTTP API version 1]] methods can be called. Responses are [[MtGox/API/Streaming#op:result|op:result]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
A Java example:&lt;br /&gt;
https://github.com/timmolter/XChange&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
* https://github.com/goteppo/ArBit&lt;br /&gt;
* https://github.com/vbmithr/breakbot&lt;br /&gt;
&lt;br /&gt;
=== websocket tools ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
https://github.com/progrium/wssh&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;wssh websocket.mtgox.com:80/mtgox | grep depth 1&amp;gt;&amp;gt;depth.txt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[MtGox/API/HTTP/v1]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v1&amp;diff=25066</id>
		<title>MtGox/API/HTTP/v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v1&amp;diff=25066"/>
		<updated>2012-04-04T00:36:57Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* App activation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Note: All API methods require a valid User-Agent header.&#039;&#039;&#039;&lt;br /&gt;
== HTTP API version 1 methods ==&lt;br /&gt;
&lt;br /&gt;
=== Multi Currency Ticker ===&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
=== Multi Currency depth ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
=== Multi currency trades ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cancelled Trades ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
=== Full Depth ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
=== Private info ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
=== idKey ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/idkey&lt;br /&gt;
&lt;br /&gt;
Returns the idKey used to subscribe to a user&#039;s private updates channel in the websocket API. The key is valid for 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== Your open orders ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
Returns information about your current open orders. Valid order statuses are: pending, executing, post-pending, open, stop, and invalid.&lt;br /&gt;
&lt;br /&gt;
=== Your trade history ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/trades&lt;br /&gt;
 &lt;br /&gt;
Returns all of your trades. Does not include fees.&lt;br /&gt;
&lt;br /&gt;
=== Submit an order ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask) (easier to remember: &#039;&#039;&#039;b&#039;&#039;&#039;id == &#039;&#039;&#039;b&#039;&#039;&#039;uy, ask == sell)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
=== Currency information ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
=== HOTP key ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developers )&lt;br /&gt;
&lt;br /&gt;
=== App activation ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/api/activate&lt;br /&gt;
&lt;br /&gt;
parameters:&lt;br /&gt;
* &#039;&#039;&#039;key&#039;&#039;&#039; - Activation key&lt;br /&gt;
* &#039;&#039;&#039;name&#039;&#039;&#039; - Device name&lt;br /&gt;
* &#039;&#039;&#039;app&#039;&#039;&#039; - App ID&lt;br /&gt;
&lt;br /&gt;
used in mobile apps to obtain an API key/secret pair. Contact MagicalTux on freenode to obtain an app ID. Activation key comes from the user&#039;s account, Settings &amp;gt; Access &amp;gt; Application Access.&lt;br /&gt;
&lt;br /&gt;
=== Merchant System ===&lt;br /&gt;
&lt;br /&gt;
==== Order Creation ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/merchant/order/create&lt;br /&gt;
&lt;br /&gt;
===== Required Parameters: =====&lt;br /&gt;
* &#039;&#039;&#039;currency&#039;&#039;&#039;: &#039;&#039;&amp;lt;currency&amp;gt;&#039;&#039; (for now only BTC is supported)&lt;br /&gt;
* &#039;&#039;&#039;amount&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as float&amp;gt;&#039;&#039;&lt;br /&gt;
or&lt;br /&gt;
* &#039;&#039;&#039;amount_int&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as int&amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;return_success&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; Where to redirect the user on payment success&lt;br /&gt;
* &#039;&#039;&#039;return_failure&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; Where to redirect the user on cancellation&lt;br /&gt;
&lt;br /&gt;
===== Optional Parameters: =====&lt;br /&gt;
* &#039;&#039;&#039;description&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; A small description that will appear on the payment page (defaults to &amp;quot;Payment to &amp;lt;user_login&amp;gt;&amp;quot;)&lt;br /&gt;
* &#039;&#039;&#039;ipn&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; URL that will be called by our services once the payment is complete (more below)&lt;br /&gt;
* &#039;&#039;&#039;data&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; Custom data returned by the IPN&lt;br /&gt;
&lt;br /&gt;
===== Returns =====&lt;br /&gt;
* &#039;&#039;&#039;transaction&#039;&#039;&#039;: &#039;&#039;&amp;lt;uuid&amp;gt;&#039;&#039; A unique transaction ID&lt;br /&gt;
* &#039;&#039;&#039;payment_url&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; URL on which to redirect the user&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== IPN ====&lt;br /&gt;
The IPN (Instant payment notification) is a mechanism that POST data about a successful payment an a custom URL located on your website right after the payment as been validated. It is signed with your API key.&lt;br /&gt;
Your website is supposed then to either acknowledge the IPN by returning &amp;quot;[OK]&amp;quot; as is. Anything else will be counted as an error and the system will try sending the IPN back every 30 minutes until it succeed.&lt;br /&gt;
&lt;br /&gt;
===== Content =====&lt;br /&gt;
&lt;br /&gt;
The IPN POST data will always contain the following:&lt;br /&gt;
* &#039;&#039;&#039;id&#039;&#039;&#039;: &#039;&#039;&amp;lt;uuid&amp;gt;&#039;&#039; The transaction ID generated by the initial call&lt;br /&gt;
* &#039;&#039;&#039;payment_id&#039;&#039;&#039;: &#039;&#039;&amp;lt;uuid&amp;gt;&#039;&#039; The payment ID&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &#039;&#039;&amp;lt;enum&amp;gt;&#039;&#039; Either &#039;&#039;&#039;paid&#039;&#039;&#039;, &#039;&#039;&#039;partial&#039;&#039;&#039;, &#039;&#039;&#039;cancelled&#039;&#039;&#039; or &#039;&#039;&#039;closed&#039;&#039;&#039; (4th one shouldn&#039;t happen)&lt;br /&gt;
&lt;br /&gt;
If the status is &#039;&#039;&#039;partial&#039;&#039;&#039;, the user choose to pay without a MtGox account and bitcoins where detected on the network, we then send you an IPN telling you the amount of bitcoins pending and valid, pending bitcoins have less than 6 confirmations so it is up to you to accept or not the transaction based on that value. Your merchant account will be credited only after the 6 confirmations on our end.&lt;br /&gt;
&lt;br /&gt;
Additional content of the &#039;&#039;&#039;partial&#039;&#039;&#039; IPN:&lt;br /&gt;
* &#039;&#039;&#039;amount_pending&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as int&amp;gt;&#039;&#039; The amount still pending confirmations&lt;br /&gt;
* &#039;&#039;&#039;amount_valid&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as int&amp;gt;&#039;&#039; The amount of bitcoins for which we had 6 confirmations&lt;br /&gt;
* &#039;&#039;&#039;amount_total&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as int&amp;gt;&#039;&#039; The total amount, pending and valid, on the payment address&lt;br /&gt;
&lt;br /&gt;
If the status is &#039;&#039;&#039;paid&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;amount&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as int&amp;gt;&#039;&#039; The amount paid by the user&lt;br /&gt;
* &#039;&#039;&#039;currency&#039;&#039;&#039;: &#039;&#039;&amp;lt;currency&amp;gt;&#039;&#039; The currency used to pay (should always be BTC for now)&lt;br /&gt;
* &#039;&#039;&#039;method&#039;&#039;&#039;: &#039;&#039;&amp;lt;enum&amp;gt;&#039;&#039; The payment method, for now MTGOXBTC&lt;br /&gt;
* &#039;&#039;&#039;date&#039;&#039;&#039;: &#039;&#039;&amp;lt;date&amp;gt;&#039;&#039; The payment date&lt;br /&gt;
&lt;br /&gt;
If data was provided in the initial call:&lt;br /&gt;
* &#039;&#039;&#039;data&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; The data provided when creating the transaction&lt;br /&gt;
&lt;br /&gt;
===== Signature =====&lt;br /&gt;
&lt;br /&gt;
IPNs are now signed with the user secret like the original query to prevent fraudulents IPNs&lt;br /&gt;
Two headers are added to the request:&lt;br /&gt;
* &#039;&#039;&#039;HTTP_REST_KEY&#039;&#039;&#039;: &#039;&#039;&amp;lt;uuid&amp;gt;&#039;&#039; The ReST key used for the query&lt;br /&gt;
* &#039;&#039;&#039;HTTP_REST_SIGN&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; The IPN signature&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HTTP_REST_SIGN&#039;&#039;&#039; is a base64 encoded sha512 HMAC of the post data using your ReST secret as a key.&lt;br /&gt;
&lt;br /&gt;
See below for examples:&lt;br /&gt;
&lt;br /&gt;
==== PHP ====&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_is_valid_ipn() {&lt;br /&gt;
    $secret = &#039;&#039;;&lt;br /&gt;
    $raw_post_data = file_get_contents(&amp;quot;php://input&amp;quot;);&lt;br /&gt;
    $good_sign = hash_hmac(&#039;sha512&#039;, $raw_post_data, base64_decode($secret), true);&lt;br /&gt;
    $sign = base64_decode($_SERVER[&#039;HTTP_REST_SIGN&#039;]);&lt;br /&gt;
    return ($sign == $good_sign);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== bitcoin_dealer (trading script) ===&lt;br /&gt;
&lt;br /&gt;
python (django) : https://github.com/rokj/bitcoin_dealer&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v1&amp;diff=25065</id>
		<title>MtGox/API/HTTP/v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v1&amp;diff=25065"/>
		<updated>2012-04-04T00:36:35Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Add app activation API&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Note: All API methods require a valid User-Agent header.&#039;&#039;&#039;&lt;br /&gt;
== HTTP API version 1 methods ==&lt;br /&gt;
&lt;br /&gt;
=== Multi Currency Ticker ===&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
=== Multi Currency depth ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
=== Multi currency trades ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cancelled Trades ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
=== Full Depth ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
=== Private info ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
=== idKey ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/idkey&lt;br /&gt;
&lt;br /&gt;
Returns the idKey used to subscribe to a user&#039;s private updates channel in the websocket API. The key is valid for 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== Your open orders ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
Returns information about your current open orders. Valid order statuses are: pending, executing, post-pending, open, stop, and invalid.&lt;br /&gt;
&lt;br /&gt;
=== Your trade history ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/trades&lt;br /&gt;
 &lt;br /&gt;
Returns all of your trades. Does not include fees.&lt;br /&gt;
&lt;br /&gt;
=== Submit an order ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask) (easier to remember: &#039;&#039;&#039;b&#039;&#039;&#039;id == &#039;&#039;&#039;b&#039;&#039;&#039;uy, ask == sell)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
=== Currency information ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
=== HOTP key ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developers )&lt;br /&gt;
&lt;br /&gt;
=== App activation ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/api/activate&lt;br /&gt;
&lt;br /&gt;
parameters:&lt;br /&gt;
* key - Activation key&lt;br /&gt;
* name - Device name&lt;br /&gt;
* app - App ID&lt;br /&gt;
&lt;br /&gt;
used in mobile apps to obtain an API key/secret pair. Contact MagicalTux on freenode to obtain an app ID. Activation key comes from the user&#039;s account, Settings &amp;gt; Access &amp;gt; Application Access.&lt;br /&gt;
&lt;br /&gt;
=== Merchant System ===&lt;br /&gt;
&lt;br /&gt;
==== Order Creation ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/merchant/order/create&lt;br /&gt;
&lt;br /&gt;
===== Required Parameters: =====&lt;br /&gt;
* &#039;&#039;&#039;currency&#039;&#039;&#039;: &#039;&#039;&amp;lt;currency&amp;gt;&#039;&#039; (for now only BTC is supported)&lt;br /&gt;
* &#039;&#039;&#039;amount&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as float&amp;gt;&#039;&#039;&lt;br /&gt;
or&lt;br /&gt;
* &#039;&#039;&#039;amount_int&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as int&amp;gt;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;return_success&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; Where to redirect the user on payment success&lt;br /&gt;
* &#039;&#039;&#039;return_failure&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; Where to redirect the user on cancellation&lt;br /&gt;
&lt;br /&gt;
===== Optional Parameters: =====&lt;br /&gt;
* &#039;&#039;&#039;description&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; A small description that will appear on the payment page (defaults to &amp;quot;Payment to &amp;lt;user_login&amp;gt;&amp;quot;)&lt;br /&gt;
* &#039;&#039;&#039;ipn&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; URL that will be called by our services once the payment is complete (more below)&lt;br /&gt;
* &#039;&#039;&#039;data&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; Custom data returned by the IPN&lt;br /&gt;
&lt;br /&gt;
===== Returns =====&lt;br /&gt;
* &#039;&#039;&#039;transaction&#039;&#039;&#039;: &#039;&#039;&amp;lt;uuid&amp;gt;&#039;&#039; A unique transaction ID&lt;br /&gt;
* &#039;&#039;&#039;payment_url&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; URL on which to redirect the user&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== IPN ====&lt;br /&gt;
The IPN (Instant payment notification) is a mechanism that POST data about a successful payment an a custom URL located on your website right after the payment as been validated. It is signed with your API key.&lt;br /&gt;
Your website is supposed then to either acknowledge the IPN by returning &amp;quot;[OK]&amp;quot; as is. Anything else will be counted as an error and the system will try sending the IPN back every 30 minutes until it succeed.&lt;br /&gt;
&lt;br /&gt;
===== Content =====&lt;br /&gt;
&lt;br /&gt;
The IPN POST data will always contain the following:&lt;br /&gt;
* &#039;&#039;&#039;id&#039;&#039;&#039;: &#039;&#039;&amp;lt;uuid&amp;gt;&#039;&#039; The transaction ID generated by the initial call&lt;br /&gt;
* &#039;&#039;&#039;payment_id&#039;&#039;&#039;: &#039;&#039;&amp;lt;uuid&amp;gt;&#039;&#039; The payment ID&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &#039;&#039;&amp;lt;enum&amp;gt;&#039;&#039; Either &#039;&#039;&#039;paid&#039;&#039;&#039;, &#039;&#039;&#039;partial&#039;&#039;&#039;, &#039;&#039;&#039;cancelled&#039;&#039;&#039; or &#039;&#039;&#039;closed&#039;&#039;&#039; (4th one shouldn&#039;t happen)&lt;br /&gt;
&lt;br /&gt;
If the status is &#039;&#039;&#039;partial&#039;&#039;&#039;, the user choose to pay without a MtGox account and bitcoins where detected on the network, we then send you an IPN telling you the amount of bitcoins pending and valid, pending bitcoins have less than 6 confirmations so it is up to you to accept or not the transaction based on that value. Your merchant account will be credited only after the 6 confirmations on our end.&lt;br /&gt;
&lt;br /&gt;
Additional content of the &#039;&#039;&#039;partial&#039;&#039;&#039; IPN:&lt;br /&gt;
* &#039;&#039;&#039;amount_pending&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as int&amp;gt;&#039;&#039; The amount still pending confirmations&lt;br /&gt;
* &#039;&#039;&#039;amount_valid&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as int&amp;gt;&#039;&#039; The amount of bitcoins for which we had 6 confirmations&lt;br /&gt;
* &#039;&#039;&#039;amount_total&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as int&amp;gt;&#039;&#039; The total amount, pending and valid, on the payment address&lt;br /&gt;
&lt;br /&gt;
If the status is &#039;&#039;&#039;paid&#039;&#039;&#039;:&lt;br /&gt;
* &#039;&#039;&#039;amount&#039;&#039;&#039;: &#039;&#039;&amp;lt;amount as int&amp;gt;&#039;&#039; The amount paid by the user&lt;br /&gt;
* &#039;&#039;&#039;currency&#039;&#039;&#039;: &#039;&#039;&amp;lt;currency&amp;gt;&#039;&#039; The currency used to pay (should always be BTC for now)&lt;br /&gt;
* &#039;&#039;&#039;method&#039;&#039;&#039;: &#039;&#039;&amp;lt;enum&amp;gt;&#039;&#039; The payment method, for now MTGOXBTC&lt;br /&gt;
* &#039;&#039;&#039;date&#039;&#039;&#039;: &#039;&#039;&amp;lt;date&amp;gt;&#039;&#039; The payment date&lt;br /&gt;
&lt;br /&gt;
If data was provided in the initial call:&lt;br /&gt;
* &#039;&#039;&#039;data&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; The data provided when creating the transaction&lt;br /&gt;
&lt;br /&gt;
===== Signature =====&lt;br /&gt;
&lt;br /&gt;
IPNs are now signed with the user secret like the original query to prevent fraudulents IPNs&lt;br /&gt;
Two headers are added to the request:&lt;br /&gt;
* &#039;&#039;&#039;HTTP_REST_KEY&#039;&#039;&#039;: &#039;&#039;&amp;lt;uuid&amp;gt;&#039;&#039; The ReST key used for the query&lt;br /&gt;
* &#039;&#039;&#039;HTTP_REST_SIGN&#039;&#039;&#039;: &#039;&#039;&amp;lt;string&amp;gt;&#039;&#039; The IPN signature&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HTTP_REST_SIGN&#039;&#039;&#039; is a base64 encoded sha512 HMAC of the post data using your ReST secret as a key.&lt;br /&gt;
&lt;br /&gt;
See below for examples:&lt;br /&gt;
&lt;br /&gt;
==== PHP ====&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_is_valid_ipn() {&lt;br /&gt;
    $secret = &#039;&#039;;&lt;br /&gt;
    $raw_post_data = file_get_contents(&amp;quot;php://input&amp;quot;);&lt;br /&gt;
    $good_sign = hash_hmac(&#039;sha512&#039;, $raw_post_data, base64_decode($secret), true);&lt;br /&gt;
    $sign = base64_decode($_SERVER[&#039;HTTP_REST_SIGN&#039;]);&lt;br /&gt;
    return ($sign == $good_sign);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== bitcoin_dealer (trading script) ===&lt;br /&gt;
&lt;br /&gt;
python (django) : https://github.com/rokj/bitcoin_dealer&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Promotional_graphics&amp;diff=24659</id>
		<title>Promotional graphics</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Promotional_graphics&amp;diff=24659"/>
		<updated>2012-03-14T22:54:24Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Remove a link, graphics hosted on megaupload which got fed&amp;#039;d&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitcoin-related graphics used for promoting bitcoin either for online use, retail display or other promotional purpose.&lt;br /&gt;
&lt;br /&gt;
==Bitcoin Accepted Here==&lt;br /&gt;
[[{{ns:file}}:BC_Rnd_64px.png‎]]&lt;br /&gt;
[[{{ns:file}}:BC 64px.png‎]]&lt;br /&gt;
[[{{ns:file}}:BC nBG 64px.png‎]]&lt;br /&gt;
[[{{ns:file}}:BC RnBG 64px.png‎]]&lt;br /&gt;
&lt;br /&gt;
==Logos==&lt;br /&gt;
[[{{ns:file}}:BC Logo .png‎]]&lt;br /&gt;
[[{{ns:file}}:BC Logotype.png‎]]&lt;br /&gt;
[[{{ns:file}}:BC Logotype Reverse.png]]&lt;br /&gt;
[[{{ns:file}}:Bitcoin euro.png]]&lt;br /&gt;
[[{{ns:file}}:Bitcoin.png]]&lt;br /&gt;
&lt;br /&gt;
==Love Bitcoin Graphics==&lt;br /&gt;
[[{{ns:file}}:Lv BCorg 128px.png]]&lt;br /&gt;
[[{{ns:file}}:WeLv BC 48px.png]]&lt;br /&gt;
[[{{ns:file}}:WeLv BC 128px.png]]&lt;br /&gt;
[[{{ns:file}}:WeLv BC Badge 128px.png]]&lt;br /&gt;
&lt;br /&gt;
==Ƀ Another Bitcoin Identity==&lt;br /&gt;
* [[{{ns:file}}:CircleBitcoin.png]] &lt;br /&gt;
* [[{{ns:file}}:Pennant.png]]&lt;br /&gt;
* [[{{ns:file}}:RibbonDonateBitcoin.png]]&lt;br /&gt;
* [[{{ns:file}}:GoldenAcceptedHereBitcoin.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;This graphic elements are available in SVG format on the dedicated [http://www.ecogex.com/bitcoin/ project page].&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=64.msg7415#msg7415 New icon/logo] (SVG of the gold bitcoin / logo)&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=4331.0 Bigger &amp;quot;B&amp;quot; versions of Bitcoin logotypes]&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=9562.20 Ƀ Another Bitcoin identity]&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=1631.0 More Bitcoin logos, buttons, and also some other graphics]&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=45.msg479#msg479 Make your &amp;quot;we accept Bitcoin&amp;quot; logo]&lt;br /&gt;
* [http://img340.imageshack.us/img340/7210/onwhitem.jpg Bitcoin Decentralized P2P Currency logo]&lt;br /&gt;
* [http://agora.io/wp-content/uploads/2011/03/BitcoinFreeMoney250x100.png Liberty starts with free money logo]&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=6412.0 Made a Bitcoin icon, PDF included]&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=6455.0 In cryptography we trust (yet another Bitcoin icon)]&lt;br /&gt;
* [http://bitbash.blogspot.com/2011/04/bitcoin-icons.html Bitcoin icons] from Bitbash&lt;br /&gt;
* [http://lts.cr/d8d Bitcoin Graphics] zip&lt;br /&gt;
* [http://www.promotionalcodes.org.uk/26970/what-is-bitcoin/ What is Bitcoin? (Infographic)] &lt;br /&gt;
* [http://carbonism.deviantart.com/gallery carbonism&#039;s deviantART gallery]&lt;br /&gt;
* [http://handsomecode.tumblr.com/post/6565610892/designing-a-better-bitcoin-identity Handsome Code Better Bitcoin]&lt;br /&gt;
* [https://bitcointalk.org/index.php?topic=32273.0 Public Domain Bitcoin Icons/Graphics for you!]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24486</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24486"/>
		<updated>2012-03-06T12:28:34Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Add trade message info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| result || The response for op:call operations&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
=== op:result ===&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Valid states are: pending, post-pending, open, executing, invalid, or stop.&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==== wallet ====&lt;br /&gt;
&lt;br /&gt;
Updates to the user&#039;s wallet balance.&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;lt;USER CHANNEL GUID&amp;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;wallet&amp;quot;,&lt;br /&gt;
    &amp;quot;wallet&amp;quot;: {&lt;br /&gt;
        &amp;quot;op&amp;quot;: &amp;lt;UPDATE SOURCE&amp;gt;,&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            ...&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;info&amp;quot;: &amp;lt;UPDATE INFO&amp;gt;,&lt;br /&gt;
        &amp;quot;ref&amp;quot;: &amp;lt;REFERENCE CODE&amp;gt;,&lt;br /&gt;
        &amp;quot;balance&amp;quot;: {&lt;br /&gt;
            ...&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;...&amp;quot; values above are normal &#039;amount&#039; type dictionaries containing &amp;quot;currency&amp;quot;, &amp;quot;value&amp;quot;, &amp;quot;value_int&amp;quot;, and &amp;quot;display&amp;quot;.&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| UPDATE SOURCE || Cause of the balance update. Can be: in, out, earned, spent, withdraw, or deposit&lt;br /&gt;
|-&lt;br /&gt;
| UPDATE INFO || Human readable string describing the update. Same string you see in the account history on mtgox.com&lt;br /&gt;
|-&lt;br /&gt;
| REFERENCE CODE || Reference code for bank transfers. &amp;quot;null&amp;quot; if this isn&#039;t a bank transfer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Description of the different source types:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Source !! Description&lt;br /&gt;
|-&lt;br /&gt;
| deposit  || Account deposits&lt;br /&gt;
|-&lt;br /&gt;
| withdraw || Account withdrawals&lt;br /&gt;
|-&lt;br /&gt;
| earned || Amount of USD gained from a trade&lt;br /&gt;
|-&lt;br /&gt;
| spent || Amount of USD used for a trade&lt;br /&gt;
|-&lt;br /&gt;
| in || Amount of BTC gained from a trade&lt;br /&gt;
|-&lt;br /&gt;
| out || Amount of BTC used for a trade&lt;br /&gt;
|-&lt;br /&gt;
| fee || MtGox fees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== trade ====&lt;br /&gt;
&lt;br /&gt;
Trades that happen on behalf of a user whose private channel you&#039;re subscribed to issue trade messages with the same format as the [[MtGox/API/Streaming#Trade|public trades channel]] does. If you&#039;re subscribed to both, be careful not to take both into account during calculations, it might cause some hard to track down issues&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the [[MtGox/API/HTTP/v1|HTTP API version 1]] methods can be called. Responses are [[MtGox/API/Streaming#op:result|op:result]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24485</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24485"/>
		<updated>2012-03-06T11:49:09Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Add wallet update description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| result || The response for op:call operations&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
=== op:result ===&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Valid states are: pending, post-pending, open, executing, invalid, or stop.&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==== wallet ====&lt;br /&gt;
&lt;br /&gt;
Updates to the user&#039;s wallet balance.&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;lt;USER CHANNEL GUID&amp;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;wallet&amp;quot;,&lt;br /&gt;
    &amp;quot;wallet&amp;quot;: {&lt;br /&gt;
        &amp;quot;op&amp;quot;: &amp;lt;UPDATE SOURCE&amp;gt;,&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            ...&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;info&amp;quot;: &amp;lt;UPDATE INFO&amp;gt;,&lt;br /&gt;
        &amp;quot;ref&amp;quot;: &amp;lt;REFERENCE CODE&amp;gt;,&lt;br /&gt;
        &amp;quot;balance&amp;quot;: {&lt;br /&gt;
            ...&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;...&amp;quot; values above are normal &#039;amount&#039; type dictionaries containing &amp;quot;currency&amp;quot;, &amp;quot;value&amp;quot;, &amp;quot;value_int&amp;quot;, and &amp;quot;display&amp;quot;.&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| UPDATE SOURCE || Cause of the balance update. Can be: in, out, earned, spent, withdraw, or deposit&lt;br /&gt;
|-&lt;br /&gt;
| UPDATE INFO || Human readable string describing the update. Same string you see in the account history on mtgox.com&lt;br /&gt;
|-&lt;br /&gt;
| REFERENCE CODE || Reference code for bank transfers. &amp;quot;null&amp;quot; if this isn&#039;t a bank transfer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Description of the different source types:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Source !! Description&lt;br /&gt;
|-&lt;br /&gt;
| deposit  || Account deposits&lt;br /&gt;
|-&lt;br /&gt;
| withdraw || Account withdrawals&lt;br /&gt;
|-&lt;br /&gt;
| earned || Amount of USD gained from a trade&lt;br /&gt;
|-&lt;br /&gt;
| spent || Amount of USD used for a trade&lt;br /&gt;
|-&lt;br /&gt;
| in || Amount of BTC gained from a trade&lt;br /&gt;
|-&lt;br /&gt;
| out || Amount of BTC used for a trade&lt;br /&gt;
|-&lt;br /&gt;
| fee || MtGox fees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the [[MtGox/API/HTTP/v1|HTTP API version 1]] methods can be called. Responses are [[MtGox/API/Streaming#op:result|op:result]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v1&amp;diff=24404</id>
		<title>MtGox/API/HTTP/v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v1&amp;diff=24404"/>
		<updated>2012-03-03T05:07:50Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Add order statuses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== HTTP API version 1 methods ==&lt;br /&gt;
&lt;br /&gt;
=== Multi Currency Ticker ===&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
=== Multi Currency depth ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
=== Multi currency trades ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cancelled Trades ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
=== Full Depth ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
=== Private info ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
=== idKey ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/idkey&lt;br /&gt;
&lt;br /&gt;
Returns the idKey used to subscribe to a user&#039;s private updates channel in the websocket API. The key is valid for 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== Your open orders ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
Returns information about your current open orders. Valid order statuses are: pending, executing, post-pending, open, stop, and invalid.&lt;br /&gt;
&lt;br /&gt;
=== Submit an order ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask) (easier to remember: &#039;&#039;&#039;b&#039;&#039;&#039;id == &#039;&#039;&#039;b&#039;&#039;&#039;uy, ask == sell)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
=== Currency information ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
=== HOTP key ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developers )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== bitcoin_dealer (trading script) ===&lt;br /&gt;
&lt;br /&gt;
python (django) : https://github.com/rokj/bitcoin_dealer&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24403</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24403"/>
		<updated>2012-03-03T05:06:47Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Add missing order status&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| result || The response for op:call operations&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
=== op:result ===&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Valid states are: pending, post-pending, open, executing, invalid, or stop.&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the [[MtGox/API/HTTP/v1|HTTP API version 1]] methods can be called. Responses are [[MtGox/API/Streaming#op:result|op:result]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24351</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24351"/>
		<updated>2012-02-29T15:32:57Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Incoming Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| result || The response for op:call operations&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
=== op:result ===&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Can be pending, post-pending, open, executing, or invalid&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the [[MtGox/API/HTTP/v1|HTTP API version 1]] methods can be called. Responses are [[MtGox/API/Streaming#op:result|op:result]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24349</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24349"/>
		<updated>2012-02-29T15:07:59Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Authenticated commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
=== op:result ===&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Can be pending, post-pending, open, executing, or invalid&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the [[MtGox/API/HTTP/v1|HTTP API version 1]] methods can be called. Responses are [[MtGox/API/Streaming#op:result|op:result]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24348</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24348"/>
		<updated>2012-02-29T15:07:30Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Authenticated commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
=== op:result ===&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Can be pending, post-pending, open, executing, or invalid&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the [[MtGox/API/HTTP/v1|HTTP API version 1]] methods can be called. Responses are [[MtGox/API/Streaming#op:result|op:private]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24347</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24347"/>
		<updated>2012-02-29T15:06:55Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
=== op:result ===&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Can be pending, post-pending, open, executing, or invalid&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the [[MtGox/API/HTTP/v1|HTTP API version 1]] methods can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24346</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24346"/>
		<updated>2012-02-29T15:06:41Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
=== Result ===&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Can be pending, post-pending, open, executing, or invalid&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the [[MtGox/API/HTTP/v1|HTTP API version 1]] methods can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24341</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24341"/>
		<updated>2012-02-29T13:53:57Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Add link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
==== Result ====&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Can be pending, post-pending, open, executing, or invalid&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the [[MtGox/API/HTTP/v1|HTTP API version 1]] methods can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24340</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24340"/>
		<updated>2012-02-29T13:52:21Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Oops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
==== Result ====&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Can be pending, post-pending, open, executing, or invalid&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the request, and the request text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24339</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24339"/>
		<updated>2012-02-29T13:43:57Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* user_order */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
==== Result ====&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Can be pending, post-pending, open, executing, or invalid&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24338</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24338"/>
		<updated>2012-02-29T13:42:22Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Private per-account messages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
==== Result ====&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==== user_order ====&lt;br /&gt;
&lt;br /&gt;
user_order is sent when a the status of a user&#039;s order is changed.&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;lt;USER CHANNEL GUID&amp;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;user_order&amp;quot;.&lt;br /&gt;
    &amp;quot;user_order&amp;quot;: {&lt;br /&gt;
        &amp;quot;amount&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;1.00000000\U00a0BTC&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;1.00000000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;100000000&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
        &amp;quot;date&amp;quot;: &amp;quot;1330522328&amp;quot;,&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;BTC&amp;quot;,&lt;br /&gt;
        &amp;quot;oid&amp;quot;: &amp;lt;ORDER GUID&amp;gt;,&lt;br /&gt;
        &amp;quot;price&amp;quot;: {&lt;br /&gt;
            &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;,&lt;br /&gt;
            &amp;quot;display&amp;quot;: &amp;quot;$10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;10.00000&amp;quot;,&lt;br /&gt;
            &amp;quot;value_int&amp;quot;: &amp;quot;1000000&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        &amp;quot;status&amp;quot;: &amp;lt;ORDER STATUS&amp;gt;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;lt;ORDER TYPE&amp;gt;,&lt;br /&gt;
    };&lt;br /&gt;
}&amp;lt;/source&amp;gt;&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;
| USER CHANNEL GUID || GUID of private user channel&lt;br /&gt;
|-&lt;br /&gt;
| ORDER GUID || GUID of order&lt;br /&gt;
|-&lt;br /&gt;
| ORDER STATUS || New status of the order. Can be pending, post-pending, open, or invalid&lt;br /&gt;
|-&lt;br /&gt;
| ORDER TYPE || bid or ask&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When an order is cancelled, the &amp;quot;user_order&amp;quot; field only contains the &amp;quot;oid&amp;quot;, and none of the other fields.&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24337</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24337"/>
		<updated>2012-02-29T13:24:50Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Account-related private channels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
==== Result ====&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
=== Private per-account messages ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v1&amp;diff=24319</id>
		<title>MtGox/API/HTTP/v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v1&amp;diff=24319"/>
		<updated>2012-02-28T13:53:10Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* idKey */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== HTTP API version 1 methods ==&lt;br /&gt;
&lt;br /&gt;
=== Multi Currency Ticker ===&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
=== Multi Currency depth ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
=== Multi currency trades ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cancelled Trades ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
=== Full Depth ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
=== Private info ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
=== idKey ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/idkey&lt;br /&gt;
&lt;br /&gt;
Returns the idKey used to subscribe to a user&#039;s private updates channel in the websocket API. The key is valid for 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== Your open orders ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
returns information about your current open orders&lt;br /&gt;
&lt;br /&gt;
=== Submit an order ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask) (easier to remember: &#039;&#039;&#039;b&#039;&#039;&#039;id == &#039;&#039;&#039;b&#039;&#039;&#039;uy, ask == sell)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
=== Currency information ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
=== HOTP key ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developers )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== bitcoin_dealer (trading script) ===&lt;br /&gt;
&lt;br /&gt;
python (django) : https://github.com/rokj/bitcoin_dealer&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24318</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24318"/>
		<updated>2012-02-28T13:52:52Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Account-related private channels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
==== Result ====&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
== Account-related private channels ==&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to [[MtGox/API/HTTP/v1#idKey|generic/private/idkey]] in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24317</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24317"/>
		<updated>2012-02-28T13:51:56Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
==== Result ====&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;result&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
== Account-related private channels ==&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to generic/private/idkey in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24316</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24316"/>
		<updated>2012-02-28T13:51:30Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
==== Result ====&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    id:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    op:result,&lt;br /&gt;
    result: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API. &amp;lt;REQUEST ID&amp;gt; is the ID chosen by you when the request was sent.&lt;br /&gt;
&lt;br /&gt;
== Account-related private channels ==&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to generic/private/idkey in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24315</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24315"/>
		<updated>2012-02-28T13:38:01Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Add op:result info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|-&lt;br /&gt;
| result || The result of a websocket-encapsulated [[MtGox/API/HTTP/v1|version 1 HTTP API]] request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
==== Result ====&lt;br /&gt;
&lt;br /&gt;
Output from [[MtGox/API/HTTP/v1|HTTP API version 1]] requests that were sent over the websocket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    id:&amp;lt;REQUEST_ID&amp;gt;,&lt;br /&gt;
    op:result,&lt;br /&gt;
    result: {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;result&amp;quot; contains the result of the call the same as if it were called over the HTTP API.&lt;br /&gt;
&lt;br /&gt;
== Account-related private channels ==&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to generic/private/idkey in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP&amp;diff=24314</id>
		<title>MtGox/API/HTTP</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP&amp;diff=24314"/>
		<updated>2012-02-28T13:21:04Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Two versions of the HTTP API are currently available, see the following pages for details on the methods available for each:&lt;br /&gt;
&lt;br /&gt;
* [[MtGox/API/HTTP/v0|Version 0]]&lt;br /&gt;
* [[MtGox/API/HTTP/v1|Version 1]]&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
All HTTP API requests are sent to URLs beginning with &amp;lt;nowiki&amp;gt;https://mtgox.com/api/*&amp;lt;/nowiki&amp;gt;. It allows placing orders, performing withdrawls, deposits, and other things. All responses are in [http://json.org/ JSON] format.&lt;br /&gt;
&lt;br /&gt;
There is a [https://rubygems.org/gems/mtgox Ruby gem] and a [[Finance::MtGox|Perl module]] available for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
== Cache ==&lt;br /&gt;
&lt;br /&gt;
All API methods are cached for 10 seconds. Do not request results more often than that, you might be blocked by the anti-DDoS filters.&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
&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;
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);&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;
Python version here: https://bitcointalk.org/index.php?topic=49789.msg592388#msg592388&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=24313</id>
		<title>MtGox/API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=24313"/>
		<updated>2012-02-28T13:20:30Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[MtGox]] API provides methods to access information from the market, place orders, and more.&lt;br /&gt;
&lt;br /&gt;
Two APIs are currently available: &lt;br /&gt;
&lt;br /&gt;
* [[MtGox/API/HTTP|HTTP API]] &lt;br /&gt;
* [[MtGox/API/Streaming|Streaming 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 (100,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;
== Currency Symbols ==&lt;br /&gt;
List of the currency symbols available with the API:&lt;br /&gt;
&lt;br /&gt;
USD, AUD, CAD, CHF, CNY, DKK, EUR, GBP, HKD, JPY, NZD, PLN, RUB, SEK, SGD, THB&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=24312</id>
		<title>MtGox/API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=24312"/>
		<updated>2012-02-28T13:20:10Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[MtGox]] API provides methods to access information from the market, place orders, and more.&lt;br /&gt;
&lt;br /&gt;
Two APIs are currently available: &lt;br /&gt;
&lt;br /&gt;
* [[MtGox/API/HTTP|HTTP API]] &lt;br /&gt;
* [[MtGox/API/Streaming|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 (100,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;
== Currency Symbols ==&lt;br /&gt;
List of the currency symbols available with the API:&lt;br /&gt;
&lt;br /&gt;
USD, AUD, CAD, CHF, CNY, DKK, EUR, GBP, HKD, JPY, NZD, PLN, RUB, SEK, SGD, THB&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Steaming&amp;diff=24311</id>
		<title>MtGox/API/Steaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Steaming&amp;diff=24311"/>
		<updated>2012-02-28T13:18:49Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: moved MtGox/API/Steaming to MtGox/API/Streaming: The API isn&amp;#039;t THAT bad&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[MtGox/API/Streaming]]&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24310</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24310"/>
		<updated>2012-02-28T13:18:49Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: moved MtGox/API/Steaming to MtGox/API/Streaming: The API isn&amp;#039;t THAT bad&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
== Account-related private channels ==&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to generic/private/idkey in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24309</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24309"/>
		<updated>2012-02-28T13:16:32Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
== Account-related private channels ==&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to generic/private/idkey in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24308</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24308"/>
		<updated>2012-02-28T13:15:49Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Ticker===&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Trade===&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
== Account-related private channels ==&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to generic/private/idkey in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24307</id>
		<title>MtGox/API/Streaming</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=24307"/>
		<updated>2012-02-28T13:14:42Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Creation from original API page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
==Connecting==&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
==Handling Events==&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incoming Data==&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==op:subscribe and op:unsubscribe==&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==op:remark==&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==op:private==&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Ticker===&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Trade===&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
== Account-related private channels ==&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to generic/private/idkey in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
==  Outgoing commands==&lt;br /&gt;
=== Direct commands ===&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
=== unsubscribe ===&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
=== mtgox.subscribe ===&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== Authenticated commands ===&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
=== arbitrage ===&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
=== websocket ===&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v1&amp;diff=24306</id>
		<title>MtGox/API/HTTP/v1</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v1&amp;diff=24306"/>
		<updated>2012-02-28T13:11:56Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Creation from original API page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== HTTP API version 1 methods ==&lt;br /&gt;
&lt;br /&gt;
=== Multi Currency Ticker ===&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
=== Multi Currency depth ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
=== Multi currency trades ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cancelled Trades ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
=== Full Depth ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
=== Private info ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
=== idKey ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/idkey&lt;br /&gt;
&lt;br /&gt;
Returns the idKey used to subscribe to a user&#039;s private updates channel. The key is valid for 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== Your open orders ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
returns information about your current open orders&lt;br /&gt;
&lt;br /&gt;
=== Submit an order ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask) (easier to remember: &#039;&#039;&#039;b&#039;&#039;&#039;id == &#039;&#039;&#039;b&#039;&#039;&#039;uy, ask == sell)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
=== Currency information ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
=== HOTP key ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developers )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== bitcoin_dealer (trading script) ===&lt;br /&gt;
&lt;br /&gt;
python (django) : https://github.com/rokj/bitcoin_dealer&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v0&amp;diff=24305</id>
		<title>MtGox/API/HTTP/v0</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v0&amp;diff=24305"/>
		<updated>2012-02-28T13:10:17Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Version 0 of the HTTP API is available at https://mtgox.com/api/0.&lt;br /&gt;
&lt;br /&gt;
== HTTP API version 0 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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 0/getDepth.php ===&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
=== 0/getFunds.php ===&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
=== 0/buyBTC.php ===&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
=== 0/sellBTC.php ===&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
=== 0/getOrders.php ===&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
=== 0/cancelOrder.php ===&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
=== 0/redeemCode.php ===&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
=== 0/withdraw.php ===&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
=== 0/btcAddress.php ===&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
*pass POST data &amp;quot;ipn&amp;quot; to add an url that mtgox will ping whenever this new address receive funds&lt;br /&gt;
description ( see above ) is also required for ipn to work&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
=== 0/history_[CUR].csv ===&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
=== 0/info.php ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
=== 0/ticker ===&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;br /&gt;
&lt;br /&gt;
== Examples &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Shell-type CLI ===&lt;br /&gt;
&lt;br /&gt;
python : http://www.goxsh.info/&lt;br /&gt;
&lt;br /&gt;
=== Perl module ===&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/vEpgw5nW&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
https : http://stackoverflow.com/questions/7046370/https-request-with-boost-asio-and-openssl&lt;br /&gt;
&lt;br /&gt;
https://github.com/sje397/mtgox-plasmoid&lt;br /&gt;
&lt;br /&gt;
module perl : http://search.cpan.org/~mndrix/Finance-MtGox-0.02/&lt;br /&gt;
&lt;br /&gt;
=== PHP Dashboard ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/Lexiks/MyBitBoard&lt;br /&gt;
&lt;br /&gt;
=== Bash trade history ===&lt;br /&gt;
&lt;br /&gt;
bash : https://bitcointalk.org/index.php?topic=39402.0&lt;br /&gt;
&lt;br /&gt;
=== PHP Ticker &amp;amp; BTCGuild mining estimator ===&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/pd0ZR4WY&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v0&amp;diff=24304</id>
		<title>MtGox/API/HTTP/v0</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v0&amp;diff=24304"/>
		<updated>2012-02-28T13:05:19Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== HTTP API version 0 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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 0/getDepth.php ===&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
=== 0/getFunds.php ===&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
=== 0/buyBTC.php ===&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
=== 0/sellBTC.php ===&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
=== 0/getOrders.php ===&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
=== 0/cancelOrder.php ===&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
=== 0/redeemCode.php ===&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
=== 0/withdraw.php ===&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
=== 0/btcAddress.php ===&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
*pass POST data &amp;quot;ipn&amp;quot; to add an url that mtgox will ping whenever this new address receive funds&lt;br /&gt;
description ( see above ) is also required for ipn to work&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
=== 0/history_[CUR].csv ===&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
=== 0/info.php ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
=== 0/ticker ===&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;br /&gt;
&lt;br /&gt;
== Examples &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Shell-type CLI ===&lt;br /&gt;
&lt;br /&gt;
python : http://www.goxsh.info/&lt;br /&gt;
&lt;br /&gt;
=== Perl module ===&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/vEpgw5nW&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
https : http://stackoverflow.com/questions/7046370/https-request-with-boost-asio-and-openssl&lt;br /&gt;
&lt;br /&gt;
https://github.com/sje397/mtgox-plasmoid&lt;br /&gt;
&lt;br /&gt;
module perl : http://search.cpan.org/~mndrix/Finance-MtGox-0.02/&lt;br /&gt;
&lt;br /&gt;
=== PHP Dashboard ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/Lexiks/MyBitBoard&lt;br /&gt;
&lt;br /&gt;
=== Bash trade history ===&lt;br /&gt;
&lt;br /&gt;
bash : https://bitcointalk.org/index.php?topic=39402.0&lt;br /&gt;
&lt;br /&gt;
=== PHP Ticker &amp;amp; BTCGuild mining estimator ===&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/pd0ZR4WY&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v0&amp;diff=24303</id>
		<title>MtGox/API/HTTP/v0</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v0&amp;diff=24303"/>
		<updated>2012-02-28T12:59:11Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== HTTP API version 0 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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 0/getDepth.php ===&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
=== 0/getFunds.php ===&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
=== 0/buyBTC.php ===&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
=== 0/sellBTC.php ===&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
=== 0/getOrders.php ===&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
=== 0/cancelOrder.php ===&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
=== 0/redeemCode.php ===&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
=== 0/withdraw.php ===&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
=== 0/btcAddress.php ===&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
*pass POST data &amp;quot;ipn&amp;quot; to add an url that mtgox will ping whenever this new address receive funds&lt;br /&gt;
description ( see above ) is also required for ipn to work&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
=== 0/history_[CUR].csv ===&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
=== 0/info.php ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
=== 0/ticker ===&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== all api shell type CLI ===&lt;br /&gt;
&lt;br /&gt;
python : http://www.goxsh.info/&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/vEpgw5nW&lt;br /&gt;
&lt;br /&gt;
=== other ===&lt;br /&gt;
&lt;br /&gt;
https : http://stackoverflow.com/questions/7046370/https-request-with-boost-asio-and-openssl&lt;br /&gt;
&lt;br /&gt;
https://github.com/sje397/mtgox-plasmoid&lt;br /&gt;
&lt;br /&gt;
module perl : http://search.cpan.org/~mndrix/Finance-MtGox-0.02/&lt;br /&gt;
&lt;br /&gt;
=== gather data ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/Lexiks/MyBitBoard&lt;br /&gt;
&lt;br /&gt;
=== gettrade ===&lt;br /&gt;
&lt;br /&gt;
bash : https://bitcointalk.org/index.php?topic=39402.0&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/raw.php?i=pmhMXZJu&lt;br /&gt;
&lt;br /&gt;
=== ticker ===&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/pd0ZR4WY&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v0&amp;diff=24302</id>
		<title>MtGox/API/HTTP/v0</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v0&amp;diff=24302"/>
		<updated>2012-02-28T12:58:48Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Add examples section from original API page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== HTTP API version 0 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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 0/getDepth.php ===&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
=== 0/getFunds.php ===&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
=== 0/buyBTC.php ===&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
=== 0/sellBTC.php ===&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
=== 0/getOrders.php ===&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
=== 0/cancelOrder.php ===&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
=== 0/redeemCode.php ===&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
=== 0/withdraw.php ===&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
=== 0/btcAddress.php ===&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
*pass POST data &amp;quot;ipn&amp;quot; to add an url that mtgox will ping whenever this new address receive funds&lt;br /&gt;
description ( see above ) is also required for ipn to work&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
=== 0/history_[CUR].csv ===&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
=== 0/info.php ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
=== 0/ticker ===&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== all api shell type CLI ====&lt;br /&gt;
&lt;br /&gt;
python : http://www.goxsh.info/&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/vEpgw5nW&lt;br /&gt;
&lt;br /&gt;
==== other ====&lt;br /&gt;
&lt;br /&gt;
https : http://stackoverflow.com/questions/7046370/https-request-with-boost-asio-and-openssl&lt;br /&gt;
&lt;br /&gt;
https://github.com/sje397/mtgox-plasmoid&lt;br /&gt;
&lt;br /&gt;
module perl : http://search.cpan.org/~mndrix/Finance-MtGox-0.02/&lt;br /&gt;
&lt;br /&gt;
==== gather data ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/Lexiks/MyBitBoard&lt;br /&gt;
&lt;br /&gt;
==== gettrade ====&lt;br /&gt;
&lt;br /&gt;
bash : https://bitcointalk.org/index.php?topic=39402.0&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/raw.php?i=pmhMXZJu&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/pd0ZR4WY&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v0&amp;diff=24301</id>
		<title>MtGox/API/HTTP/v0</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP/v0&amp;diff=24301"/>
		<updated>2012-02-28T12:57:44Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Creation from original API page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== HTTP API version 0 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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 0/getDepth.php ===&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
=== 0/getFunds.php ===&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
=== 0/buyBTC.php ===&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
=== 0/sellBTC.php ===&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
=== 0/getOrders.php ===&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
=== 0/cancelOrder.php ===&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
=== 0/redeemCode.php ===&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
=== 0/withdraw.php ===&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
=== 0/btcAddress.php ===&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
*pass POST data &amp;quot;ipn&amp;quot; to add an url that mtgox will ping whenever this new address receive funds&lt;br /&gt;
description ( see above ) is also required for ipn to work&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
=== 0/history_[CUR].csv ===&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
=== 0/info.php ===&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
=== 0/ticker ===&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP&amp;diff=24300</id>
		<title>MtGox/API/HTTP</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP&amp;diff=24300"/>
		<updated>2012-02-28T12:55:05Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Add info on response format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Two versions of the HTTP API are currently available, see the following pages for details on the methods available for each:&lt;br /&gt;
&lt;br /&gt;
* [[MtGox/API/HTTP/v0|Version 0]]&lt;br /&gt;
* [[MtGox/API/HTTP/v1|Version 1]]&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
All HTTP API requests are sent to URLs beginning with&amp;lt;nowiki&amp;gt;https://mtgox.com/api/*&amp;lt;/nowiki&amp;gt;. It allows placing orders, performing withdrawls, deposits, and other things. All responses are in [http://json.org/ JSON] format.&lt;br /&gt;
&lt;br /&gt;
There is a [https://rubygems.org/gems/mtgox Ruby gem] and a [[Finance::MtGox|Perl module]] available for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
== Cache ==&lt;br /&gt;
&lt;br /&gt;
All API methods are cached for 10 seconds. Do not request results more often than that, you might be blocked by the anti-DDoS filters.&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
&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;
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);&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;
Python version here: https://bitcointalk.org/index.php?topic=49789.msg592388#msg592388&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP&amp;diff=24299</id>
		<title>MtGox/API/HTTP</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP&amp;diff=24299"/>
		<updated>2012-02-28T12:51:34Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Grammar updates and clarifications&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Two versions of the HTTP API are currently available, see the following pages for details on the methods available for each:&lt;br /&gt;
&lt;br /&gt;
* [[MtGox/API/HTTP/v0|Version 0]]&lt;br /&gt;
* [[MtGox/API/HTTP/v1|Version 1]]&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
All HTTP API requests are sent to URLs beginning with&amp;lt;nowiki&amp;gt;https://mtgox.com/api/*&amp;lt;/nowiki&amp;gt;. It allows placing orders, performing withdrawls, deposits, and other things.  &lt;br /&gt;
&lt;br /&gt;
There is a [https://rubygems.org/gems/mtgox Ruby gem] and a [[Finance::MtGox|Perl module]] available for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
== Cache ==&lt;br /&gt;
&lt;br /&gt;
All API methods are cached for 10 seconds. Do not request results more often than that, you might be blocked by the anti-DDoS filters.&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
&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;
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);&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;
Python version here: https://bitcointalk.org/index.php?topic=49789.msg592388#msg592388&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP&amp;diff=24298</id>
		<title>MtGox/API/HTTP</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP&amp;diff=24298"/>
		<updated>2012-02-28T12:47:50Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Two versions of the HTTP API are currently available:&lt;br /&gt;
&lt;br /&gt;
* [[MtGox/API/HTTP/v0|Version 0]]&lt;br /&gt;
* [[MtGox/API/HTTP/v1|Version 1]]&lt;br /&gt;
&lt;br /&gt;
All HTTP API requests are sent to URLs beginning with&amp;lt;nowiki&amp;gt;https://mtgox.com/api/*&amp;lt;/nowiki&amp;gt;. It allows placing orders, performing withdrawls, deposits, and other things.  &lt;br /&gt;
&lt;br /&gt;
There is a [https://rubygems.org/gems/mtgox|Ruby gem] and a [[Finance::MtGox|Perl module]] available for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
&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;
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);&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;
Python version here: https://bitcointalk.org/index.php?topic=49789.msg592388#msg592388&lt;br /&gt;
&lt;br /&gt;
=== Cache ===&lt;br /&gt;
&lt;br /&gt;
All of the API methods below have cached results, ticker, depth . . . have a 10 seconds cache .&lt;br /&gt;
No need to poll more often, you wont have more results, you could just be blocked by the prolexic anti ddos features.&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP&amp;diff=24297</id>
		<title>MtGox/API/HTTP</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP&amp;diff=24297"/>
		<updated>2012-02-28T12:44:14Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Create&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Two versions of the HTTP API are currently available:&lt;br /&gt;
&lt;br /&gt;
* [[MtGox/API/HTTP/v0|Version 0]]&lt;br /&gt;
* [[MtGox/API/HTTP/v1|Version 1]]&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=24296</id>
		<title>MtGox/API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=24296"/>
		<updated>2012-02-28T12:42:03Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Add details on private channels&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[MtGox]] API provides methods to access information from the market, place orders, and more.&lt;br /&gt;
&lt;br /&gt;
Two APIs are currently available: 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 (100,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;
== Currency Symbols ==&lt;br /&gt;
List of the currency symbols available with the API:&lt;br /&gt;
&lt;br /&gt;
USD, AUD, CAD, CHF, CNY, DKK, EUR, GBP, HKD, JPY, NZD, PLN, RUB, SEK, SGD, THB&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 [https://rubygems.org/gems/mtgox Ruby gem] and [[Finance::MtGox|Perl module]] for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
&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;
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);&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;
Python version here: https://bitcointalk.org/index.php?topic=49789.msg592388#msg592388&lt;br /&gt;
&lt;br /&gt;
=== Cache ===&lt;br /&gt;
&lt;br /&gt;
All of the API methods below have cached results, ticker, depth . . . have a 10 seconds cache .&lt;br /&gt;
No need to poll more often, you wont have more results, you could just be blocked by the prolexic anti ddos features.&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 0===&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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 0/getDepth.php ====&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
==== 0/getFunds.php ====&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
==== 0/buyBTC.php ====&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/sellBTC.php ====&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/getOrders.php ====&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
==== 0/cancelOrder.php ====&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
==== 0/redeemCode.php ====&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
==== 0/withdraw.php ====&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
==== 0/btcAddress.php ====&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
*pass POST data &amp;quot;ipn&amp;quot; to add an url that mtgox will ping whenever this new address receive funds&lt;br /&gt;
description ( see above ) is also required for ipn to work&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
==== 0/history_[CUR].csv ====&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
==== 0/info.php ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
==== 0/ticker ====&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;br /&gt;
&lt;br /&gt;
=== API version 0 examples ===&lt;br /&gt;
&lt;br /&gt;
==== all api shell type CLI ====&lt;br /&gt;
&lt;br /&gt;
python : http://www.goxsh.info/&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/vEpgw5nW&lt;br /&gt;
&lt;br /&gt;
==== other ====&lt;br /&gt;
&lt;br /&gt;
https : http://stackoverflow.com/questions/7046370/https-request-with-boost-asio-and-openssl&lt;br /&gt;
&lt;br /&gt;
https://github.com/sje397/mtgox-plasmoid&lt;br /&gt;
&lt;br /&gt;
module perl : http://search.cpan.org/~mndrix/Finance-MtGox-0.02/&lt;br /&gt;
&lt;br /&gt;
==== gather data ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/Lexiks/MyBitBoard&lt;br /&gt;
&lt;br /&gt;
==== gettrade ====&lt;br /&gt;
&lt;br /&gt;
bash : https://bitcointalk.org/index.php?topic=39402.0&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/raw.php?i=pmhMXZJu&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/pd0ZR4WY&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 1===&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency Ticker ====&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
==== Multi currency trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cancelled Trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
==== Full Depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
==== Private info ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
==== idKey ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/idkey&lt;br /&gt;
&lt;br /&gt;
Returns the idKey used to subscribe to a user&#039;s private updates channel. The key is valid for 24 hours.&lt;br /&gt;
&lt;br /&gt;
==== Your open orders ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
returns information about your current open orders&lt;br /&gt;
&lt;br /&gt;
==== Submit an order ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask) (easier to remember: &#039;&#039;&#039;b&#039;&#039;&#039;id == &#039;&#039;&#039;b&#039;&#039;&#039;uy, ask == sell)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
==== Currency information ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
==== HOTP key ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developpers )&lt;br /&gt;
&lt;br /&gt;
=== API version 1 examples ===&lt;br /&gt;
&lt;br /&gt;
==== bitcoin_dealer (trading script) ====&lt;br /&gt;
&lt;br /&gt;
python (django) : https://github.com/rokj/bitcoin_dealer&lt;br /&gt;
&lt;br /&gt;
== Streaming API ==&lt;br /&gt;
Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
===Connecting===&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
===Handling Events===&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Incoming Data===&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
=== Account-related private channels ===&lt;br /&gt;
&lt;br /&gt;
The streaming API provides a private channel for every user which receives updates for account-related activities like new orders being created. To subscribe, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;key&amp;quot;:&amp;lt;PRIVATE_IDKEY&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRIVATE_IDKEY&amp;gt; is obtained by sending a request to generic/private/idkey in the version 1 API. Either over HTTP or through the websocket using [[#Authenticated_commands|op:call]].&lt;br /&gt;
&lt;br /&gt;
===  Outgoing commands===&lt;br /&gt;
==== Direct commands ====&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
===== unsubscribe =====&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
===== mtgox.subscribe =====&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
==== Authenticated commands ====&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== examples ===&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
A python example :&lt;br /&gt;
https://github.com/3M3RY/python-mtgox&lt;br /&gt;
&lt;br /&gt;
==== arbitrage ====&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
==== websocket ====&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22775</id>
		<title>MtGox/API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22775"/>
		<updated>2012-01-26T08:01:07Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Authenticated commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[MtGox]] API provides methods to access information from the market, place orders, and more.&lt;br /&gt;
&lt;br /&gt;
Two APIs are currently available: 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;
== Currency Symbols ==&lt;br /&gt;
List of the currency symbols available with the API:&lt;br /&gt;
&lt;br /&gt;
USD, AUD, CAD, CHF, CNY, DKK, EUR, GBP, HKD, JPY, NZD, PLN, RUB, SEK, SGD, THB&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 [https://rubygems.org/gems/mtgox Ruby gem] and [[Finance::MtGox|Perl module]] for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
&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;
Python version here: https://bitcointalk.org/index.php?topic=49789.msg592388#msg592388&lt;br /&gt;
&lt;br /&gt;
=== Cache ===&lt;br /&gt;
&lt;br /&gt;
All of the API methods below have cached results, ticker, depth . . . have a 10 seconds cache .&lt;br /&gt;
No need to poll more often, you wont have more results, you could just be blocked by the prolexic anti ddos features.&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 0===&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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 0/getDepth.php ====&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
==== 0/getFunds.php ====&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
==== 0/buyBTC.php ====&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/sellBTC.php ====&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/getOrders.php ====&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
==== 0/cancelOrder.php ====&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
==== 0/redeemCode.php ====&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
==== 0/withdraw.php ====&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
==== 0/btcAddress.php ====&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
==== 0/history_[CUR].csv ====&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
==== 0/info.php ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
==== 0/ticker ====&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;br /&gt;
&lt;br /&gt;
=== API version 0 examples ===&lt;br /&gt;
&lt;br /&gt;
==== all api shell type CLI ====&lt;br /&gt;
&lt;br /&gt;
python : http://www.goxsh.info/&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/vEpgw5nW&lt;br /&gt;
&lt;br /&gt;
==== other ====&lt;br /&gt;
&lt;br /&gt;
https : http://stackoverflow.com/questions/7046370/https-request-with-boost-asio-and-openssl&lt;br /&gt;
&lt;br /&gt;
https://github.com/sje397/mtgox-plasmoid&lt;br /&gt;
&lt;br /&gt;
module perl : http://search.cpan.org/~mndrix/Finance-MtGox-0.02/&lt;br /&gt;
&lt;br /&gt;
==== gather data ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/Lexiks/MyBitBoard&lt;br /&gt;
&lt;br /&gt;
==== gettrade ====&lt;br /&gt;
&lt;br /&gt;
bash : https://bitcointalk.org/index.php?topic=39402.0&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/raw.php?i=pmhMXZJu&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/pd0ZR4WY&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 1===&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency Ticker ====&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
==== Multi currency trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cancelled Trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
==== Full Depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
==== Private info ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
==== Your open orders ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
returns information about your current open orders&lt;br /&gt;
&lt;br /&gt;
==== Submit an order ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
==== Currency information ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
==== HOTP key ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developpers )&lt;br /&gt;
&lt;br /&gt;
== Streaming API ==&lt;br /&gt;
Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
===Connecting===&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
===Handling Events===&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Incoming Data===&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
===  Outgoing commands===&lt;br /&gt;
==== Direct commands ====&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
===== unsubscribe =====&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
===== mtgox.subscribe =====&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
==== Authenticated commands ====&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== examples ===&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
==== arbitrage ====&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
==== websocket ====&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22773</id>
		<title>MtGox/API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22773"/>
		<updated>2012-01-26T07:59:42Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Forgot a parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[MtGox]] API provides methods to access information from the market, place orders, and more.&lt;br /&gt;
&lt;br /&gt;
Two APIs are currently available: 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;
== Currency Symbols ==&lt;br /&gt;
List of the currency symbols available with the API:&lt;br /&gt;
&lt;br /&gt;
USD, AUD, CAD, CHF, CNY, DKK, EUR, GBP, HKD, JPY, NZD, PLN, RUB, SEK, SGD, THB&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 [https://rubygems.org/gems/mtgox Ruby gem] and [[Finance::MtGox|Perl module]] for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
&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;
Python version here: https://bitcointalk.org/index.php?topic=49789.msg592388#msg592388&lt;br /&gt;
&lt;br /&gt;
=== Cache ===&lt;br /&gt;
&lt;br /&gt;
All of the API methods below have cached results, ticker, depth . . . have a 10 seconds cache .&lt;br /&gt;
No need to poll more often, you wont have more results, you could just be blocked by the prolexic anti ddos features.&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 0===&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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 0/getDepth.php ====&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
==== 0/getFunds.php ====&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
==== 0/buyBTC.php ====&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/sellBTC.php ====&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/getOrders.php ====&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
==== 0/cancelOrder.php ====&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
==== 0/redeemCode.php ====&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
==== 0/withdraw.php ====&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
==== 0/btcAddress.php ====&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
==== 0/history_[CUR].csv ====&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
==== 0/info.php ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
==== 0/ticker ====&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;br /&gt;
&lt;br /&gt;
=== API version 0 examples ===&lt;br /&gt;
&lt;br /&gt;
==== all api shell type CLI ====&lt;br /&gt;
&lt;br /&gt;
python : http://www.goxsh.info/&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/vEpgw5nW&lt;br /&gt;
&lt;br /&gt;
==== other ====&lt;br /&gt;
&lt;br /&gt;
https : http://stackoverflow.com/questions/7046370/https-request-with-boost-asio-and-openssl&lt;br /&gt;
&lt;br /&gt;
https://github.com/sje397/mtgox-plasmoid&lt;br /&gt;
&lt;br /&gt;
module perl : http://search.cpan.org/~mndrix/Finance-MtGox-0.02/&lt;br /&gt;
&lt;br /&gt;
==== gather data ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/Lexiks/MyBitBoard&lt;br /&gt;
&lt;br /&gt;
==== gettrade ====&lt;br /&gt;
&lt;br /&gt;
bash : https://bitcointalk.org/index.php?topic=39402.0&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/raw.php?i=pmhMXZJu&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/pd0ZR4WY&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 1===&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency Ticker ====&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
==== Multi currency trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cancelled Trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
==== Full Depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
==== Private info ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
==== Your open orders ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
returns information about your current open orders&lt;br /&gt;
&lt;br /&gt;
==== Submit an order ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
==== Currency information ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
==== HOTP key ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developpers )&lt;br /&gt;
&lt;br /&gt;
== Streaming API ==&lt;br /&gt;
Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
===Connecting===&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
===Handling Events===&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Incoming Data===&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
===  Outgoing commands===&lt;br /&gt;
==== Direct commands ====&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
===== unsubscribe =====&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
===== mtgox.subscribe =====&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
==== Authenticated commands ====&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;,&lt;br /&gt;
    &amp;quot;context&amp;quot;:&amp;quot;mtgox.com&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== examples ===&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
==== arbitrage ====&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
==== websocket ====&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22772</id>
		<title>MtGox/API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22772"/>
		<updated>2012-01-26T07:59:09Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: /* Authenticated commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[MtGox]] API provides methods to access information from the market, place orders, and more.&lt;br /&gt;
&lt;br /&gt;
Two APIs are currently available: 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;
== Currency Symbols ==&lt;br /&gt;
List of the currency symbols available with the API:&lt;br /&gt;
&lt;br /&gt;
USD, AUD, CAD, CHF, CNY, DKK, EUR, GBP, HKD, JPY, NZD, PLN, RUB, SEK, SGD, THB&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 [https://rubygems.org/gems/mtgox Ruby gem] and [[Finance::MtGox|Perl module]] for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
&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;
Python version here: https://bitcointalk.org/index.php?topic=49789.msg592388#msg592388&lt;br /&gt;
&lt;br /&gt;
=== Cache ===&lt;br /&gt;
&lt;br /&gt;
All of the API methods below have cached results, ticker, depth . . . have a 10 seconds cache .&lt;br /&gt;
No need to poll more often, you wont have more results, you could just be blocked by the prolexic anti ddos features.&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 0===&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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 0/getDepth.php ====&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
==== 0/getFunds.php ====&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
==== 0/buyBTC.php ====&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/sellBTC.php ====&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/getOrders.php ====&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
==== 0/cancelOrder.php ====&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
==== 0/redeemCode.php ====&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
==== 0/withdraw.php ====&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
==== 0/btcAddress.php ====&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
==== 0/history_[CUR].csv ====&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
==== 0/info.php ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
==== 0/ticker ====&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;br /&gt;
&lt;br /&gt;
=== API version 0 examples ===&lt;br /&gt;
&lt;br /&gt;
==== all api shell type CLI ====&lt;br /&gt;
&lt;br /&gt;
python : http://www.goxsh.info/&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/vEpgw5nW&lt;br /&gt;
&lt;br /&gt;
==== other ====&lt;br /&gt;
&lt;br /&gt;
https : http://stackoverflow.com/questions/7046370/https-request-with-boost-asio-and-openssl&lt;br /&gt;
&lt;br /&gt;
https://github.com/sje397/mtgox-plasmoid&lt;br /&gt;
&lt;br /&gt;
module perl : http://search.cpan.org/~mndrix/Finance-MtGox-0.02/&lt;br /&gt;
&lt;br /&gt;
==== gather data ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/Lexiks/MyBitBoard&lt;br /&gt;
&lt;br /&gt;
==== gettrade ====&lt;br /&gt;
&lt;br /&gt;
bash : https://bitcointalk.org/index.php?topic=39402.0&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/raw.php?i=pmhMXZJu&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/pd0ZR4WY&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 1===&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency Ticker ====&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
==== Multi currency trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cancelled Trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
==== Full Depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
==== Private info ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
==== Your open orders ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
returns information about your current open orders&lt;br /&gt;
&lt;br /&gt;
==== Submit an order ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
==== Currency information ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
==== HOTP key ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developpers )&lt;br /&gt;
&lt;br /&gt;
== Streaming API ==&lt;br /&gt;
Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
===Connecting===&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
===Handling Events===&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Incoming Data===&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
===  Outgoing commands===&lt;br /&gt;
==== Direct commands ====&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
===== unsubscribe =====&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
===== mtgox.subscribe =====&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
==== Authenticated commands ====&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[#Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== examples ===&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
==== arbitrage ====&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
==== websocket ====&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22771</id>
		<title>MtGox/API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22771"/>
		<updated>2012-01-26T07:58:47Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Add details for HTTP API requests over the websocket&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[MtGox]] API provides methods to access information from the market, place orders, and more.&lt;br /&gt;
&lt;br /&gt;
Two APIs are currently available: 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;
== Currency Symbols ==&lt;br /&gt;
List of the currency symbols available with the API:&lt;br /&gt;
&lt;br /&gt;
USD, AUD, CAD, CHF, CNY, DKK, EUR, GBP, HKD, JPY, NZD, PLN, RUB, SEK, SGD, THB&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 [https://rubygems.org/gems/mtgox Ruby gem] and [[Finance::MtGox|Perl module]] for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
&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;
Python version here: https://bitcointalk.org/index.php?topic=49789.msg592388#msg592388&lt;br /&gt;
&lt;br /&gt;
=== Cache ===&lt;br /&gt;
&lt;br /&gt;
All of the API methods below have cached results, ticker, depth . . . have a 10 seconds cache .&lt;br /&gt;
No need to poll more often, you wont have more results, you could just be blocked by the prolexic anti ddos features.&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 0===&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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 0/getDepth.php ====&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
==== 0/getFunds.php ====&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
==== 0/buyBTC.php ====&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/sellBTC.php ====&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/getOrders.php ====&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
==== 0/cancelOrder.php ====&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
==== 0/redeemCode.php ====&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
==== 0/withdraw.php ====&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
==== 0/btcAddress.php ====&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
==== 0/history_[CUR].csv ====&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
==== 0/info.php ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
==== 0/ticker ====&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;br /&gt;
&lt;br /&gt;
=== API version 0 examples ===&lt;br /&gt;
&lt;br /&gt;
==== all api shell type CLI ====&lt;br /&gt;
&lt;br /&gt;
python : http://www.goxsh.info/&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/vEpgw5nW&lt;br /&gt;
&lt;br /&gt;
==== other ====&lt;br /&gt;
&lt;br /&gt;
https : http://stackoverflow.com/questions/7046370/https-request-with-boost-asio-and-openssl&lt;br /&gt;
&lt;br /&gt;
https://github.com/sje397/mtgox-plasmoid&lt;br /&gt;
&lt;br /&gt;
module perl : http://search.cpan.org/~mndrix/Finance-MtGox-0.02/&lt;br /&gt;
&lt;br /&gt;
==== gather data ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/Lexiks/MyBitBoard&lt;br /&gt;
&lt;br /&gt;
==== gettrade ====&lt;br /&gt;
&lt;br /&gt;
bash : https://bitcointalk.org/index.php?topic=39402.0&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/raw.php?i=pmhMXZJu&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/pd0ZR4WY&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 1===&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency Ticker ====&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
==== Multi currency trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cancelled Trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
==== Full Depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
==== Private info ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
==== Your open orders ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
returns information about your current open orders&lt;br /&gt;
&lt;br /&gt;
==== Submit an order ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
==== Currency information ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
==== HOTP key ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developpers )&lt;br /&gt;
&lt;br /&gt;
== Streaming API ==&lt;br /&gt;
Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
===Connecting===&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
===Handling Events===&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Incoming Data===&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
===  Outgoing commands===&lt;br /&gt;
==== Direct commands ====&lt;br /&gt;
&lt;br /&gt;
Commands that can be sent without authentication&lt;br /&gt;
&lt;br /&gt;
===== unsubscribe =====&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
===== mtgox.subscribe =====&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
==== Authenticated commands ====&lt;br /&gt;
&lt;br /&gt;
These commands require an API key and secret pair to sign requests. Any of the &amp;quot;version 1&amp;quot; requests from the HTTP API can be called. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;call&amp;quot;,&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;BASE-64 ENCODED SIGNED REQUEST&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST ID&amp;gt; can be any string, it&#039;s used to identify the response as belonging to this request when an answer comes back. md5&#039;ing your nonce is a good way to get an id. &amp;quot;call&amp;quot; must be a base-64 encoded string consisting of, in order: an API key, a signed copy of the response, and the response text itself.&lt;br /&gt;
&lt;br /&gt;
The queries themselves look like:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;id&amp;quot;:&amp;lt;REQUEST ID&amp;gt;,&lt;br /&gt;
    &amp;quot;call&amp;quot;:&amp;lt;HTTP API ENDPOINT&amp;gt;,&lt;br /&gt;
    &amp;quot;nonce&amp;quot;:&amp;lt;REQUEST NONCE&amp;gt;,&lt;br /&gt;
    &amp;quot;params&amp;quot;:&amp;lt;REQUEST PARAMETERS&amp;gt;,&lt;br /&gt;
    &amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTTP API ENDPOINT&amp;gt; is the last two path components of any version 1 API endpoint, for example [[Private_info|private/info]], or [[#Cancelled_Trades|public/cancelledtrades]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REQUEST PARAMETERS&amp;gt; is optional for any request that doesn&#039;t have parameters.&lt;br /&gt;
&lt;br /&gt;
The signing process is similar to the HTTP API, but because we can&#039;t send headers in an open websocket, the API key and signed request are simply prepended to the actual query data and base64 encoded. Reference implementations are available at https://github.com/MtGox/websocket&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a sample of how to create a valid request in PHP 5.3:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$nonce = explode(&#039; &#039;, microtime(false));&lt;br /&gt;
$nonce = $nonce[1].substr($nonce[0], 2, 6);&lt;br /&gt;
$id = md5($nonce); // id can be anything to recognize this call&lt;br /&gt;
$query = array(&#039;call&#039; =&amp;gt; $call, &#039;params&#039; =&amp;gt; $params, &#039;item&#039; =&amp;gt; $item, &#039;currency&#039; =&amp;gt; $currency, &#039;id&#039; =&amp;gt; $id, &#039;nonce&#039; =&amp;gt; $nonce);&lt;br /&gt;
$query = json_encode($query);&lt;br /&gt;
// generate signature&lt;br /&gt;
$sign = hash_hmac(&#039;sha512&#039;, $query, base64_decode($apiSecret), true);&lt;br /&gt;
// prefix signature to query&lt;br /&gt;
$query = pack(&#039;H*&#039;, str_replace(&#039;-&#039;,&#039;&#039;,$apiKey)).$sign.$query;&lt;br /&gt;
// send query&lt;br /&gt;
$call = array(&#039;op&#039; =&amp;gt; &#039;call&#039;, &#039;call&#039; =&amp;gt; base64_encode($query), &#039;id&#039; =&amp;gt; $id, &#039;context&#039; =&amp;gt; &#039;mtgox.com&#039;);&lt;br /&gt;
// $call can now be pushed out to the websocket&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== examples ===&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
==== arbitrage ====&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
==== websocket ====&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22770</id>
		<title>MtGox/API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22770"/>
		<updated>2012-01-26T07:35:42Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Highlight stuff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[MtGox]] API provides methods to access information from the market, place orders, and more.&lt;br /&gt;
&lt;br /&gt;
Two APIs are currently available: 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;
== Currency Symbols ==&lt;br /&gt;
List of the currency symbols available with the API:&lt;br /&gt;
&lt;br /&gt;
USD, AUD, CAD, CHF, CNY, DKK, EUR, GBP, HKD, JPY, NZD, PLN, RUB, SEK, SGD, THB&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 [https://rubygems.org/gems/mtgox Ruby gem] and [[Finance::MtGox|Perl module]] for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
&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;
Python version here: https://bitcointalk.org/index.php?topic=49789.msg592388#msg592388&lt;br /&gt;
&lt;br /&gt;
=== Cache ===&lt;br /&gt;
&lt;br /&gt;
All of the API methods below have cached results, ticker, depth . . . have a 10 seconds cache .&lt;br /&gt;
No need to poll more often, you wont have more results, you could just be blocked by the prolexic anti ddos features.&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 0===&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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 0/getDepth.php ====&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
==== 0/getFunds.php ====&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
==== 0/buyBTC.php ====&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/sellBTC.php ====&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/getOrders.php ====&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
==== 0/cancelOrder.php ====&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
==== 0/redeemCode.php ====&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
==== 0/withdraw.php ====&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
==== 0/btcAddress.php ====&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
==== 0/history_[CUR].csv ====&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
==== 0/info.php ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
==== 0/ticker ====&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;br /&gt;
&lt;br /&gt;
=== API version 0 examples ===&lt;br /&gt;
&lt;br /&gt;
==== all api shell type CLI ====&lt;br /&gt;
&lt;br /&gt;
python : http://www.goxsh.info/&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/vEpgw5nW&lt;br /&gt;
&lt;br /&gt;
==== other ====&lt;br /&gt;
&lt;br /&gt;
https : http://stackoverflow.com/questions/7046370/https-request-with-boost-asio-and-openssl&lt;br /&gt;
&lt;br /&gt;
https://github.com/sje397/mtgox-plasmoid&lt;br /&gt;
&lt;br /&gt;
module perl : http://search.cpan.org/~mndrix/Finance-MtGox-0.02/&lt;br /&gt;
&lt;br /&gt;
==== gather data ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/Lexiks/MyBitBoard&lt;br /&gt;
&lt;br /&gt;
==== gettrade ====&lt;br /&gt;
&lt;br /&gt;
bash : https://bitcointalk.org/index.php?topic=39402.0&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/raw.php?i=pmhMXZJu&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/pd0ZR4WY&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 1===&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency Ticker ====&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
==== Multi currency trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cancelled Trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
==== Full Depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
==== Private info ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
==== Your open orders ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
returns information about your current open orders&lt;br /&gt;
&lt;br /&gt;
==== Submit an order ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
==== Currency information ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
==== HOTP key ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developpers )&lt;br /&gt;
&lt;br /&gt;
== Streaming API ==&lt;br /&gt;
Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
===Connecting===&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
===Handling Events===&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Incoming Data===&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
===Possible outgoing commands===&lt;br /&gt;
==== unsubscribe ====&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
    &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
==== mtgox.subscribe ====&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== examples ===&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
==== arbitrage ====&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
==== websocket ====&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22769</id>
		<title>MtGox/API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=MtGox/API&amp;diff=22769"/>
		<updated>2012-01-26T07:34:31Z</updated>

		<summary type="html">&lt;p&gt;Seventoes: Update outgoing websocket commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[MtGox]] API provides methods to access information from the market, place orders, and more.&lt;br /&gt;
&lt;br /&gt;
Two APIs are currently available: 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;
== Currency Symbols ==&lt;br /&gt;
List of the currency symbols available with the API:&lt;br /&gt;
&lt;br /&gt;
USD, AUD, CAD, CHF, CNY, DKK, EUR, GBP, HKD, JPY, NZD, PLN, RUB, SEK, SGD, THB&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 [https://rubygems.org/gems/mtgox Ruby gem] and [[Finance::MtGox|Perl module]] for interacting with the HTTP API.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
&lt;br /&gt;
&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;
Python version here: https://bitcointalk.org/index.php?topic=49789.msg592388#msg592388&lt;br /&gt;
&lt;br /&gt;
=== Cache ===&lt;br /&gt;
&lt;br /&gt;
All of the API methods below have cached results, ticker, depth . . . have a 10 seconds cache .&lt;br /&gt;
No need to poll more often, you wont have more results, you could just be blocked by the prolexic anti ddos features.&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 0===&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;
* data is returned in standard json format like :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279408157,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;0.04951&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;20&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;4951&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;2000000000&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;price_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;trade_type&amp;quot;:&amp;quot;&amp;quot;&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;&lt;br /&gt;
},&lt;br /&gt;
{&amp;quot;date&amp;quot;:1279424586,&amp;quot;price&amp;quot;:&amp;quot;0.05941&amp;quot;,&amp;quot;amount&amp;quot;:&amp;quot;50.01&amp;quot;,&amp;quot;price_int&amp;quot;:&amp;quot;5941&amp;quot;,&amp;quot;amount_int&amp;quot;:&amp;quot;5001000000&amp;quot;,&amp;quot;tid&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;price_currency&amp;quot;:&amp;quot;USD&amp;quot;,&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&amp;quot;trade_type&amp;quot;:&amp;quot;&amp;quot;}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 0/getDepth.php ====&lt;br /&gt;
Get the current Market depth&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=PLN&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=AUD&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/data/getDepth.php?Currency=USD&lt;br /&gt;
&lt;br /&gt;
==== 0/getFunds.php ====&lt;br /&gt;
Get your current balance&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getFunds.php&lt;br /&gt;
&lt;br /&gt;
getfunds is now deprecated since multi currency, please use info.php&lt;br /&gt;
&lt;br /&gt;
==== 0/buyBTC.php ====&lt;br /&gt;
Place an order to Buy BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/buyBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: amount=#&amp;amp;price=#&amp;amp;Currency=PLN&lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/sellBTC.php ====&lt;br /&gt;
Place an order to Sell BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/sellBTC.php&lt;br /&gt;
&lt;br /&gt;
POST data: &amp;amp;amount=#&amp;amp;price=#&amp;amp;Currency=PLN &lt;br /&gt;
&lt;br /&gt;
returns a list of your open orders&lt;br /&gt;
&lt;br /&gt;
you can omit the price to do a market order&lt;br /&gt;
&lt;br /&gt;
==== 0/getOrders.php ====&lt;br /&gt;
Fetch a list of your open Orders&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/getOrders.php&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
status: 1 for active, 2 for not enough funds&lt;br /&gt;
&lt;br /&gt;
==== 0/cancelOrder.php ====&lt;br /&gt;
Cancel an order&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/cancelOrder.php&lt;br /&gt;
&lt;br /&gt;
POST data: oid=#&amp;amp;type=#&lt;br /&gt;
&lt;br /&gt;
oid: Order ID&lt;br /&gt;
&lt;br /&gt;
type: 1 for sell order or 2 for buy order&lt;br /&gt;
&lt;br /&gt;
==== 0/redeemCode.php ====&lt;br /&gt;
Used to redeem a mtgox coupon code&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/redeemCode.php&lt;br /&gt;
&lt;br /&gt;
* call with a post parameter &amp;quot;code&amp;quot; containing the code to redeem&lt;br /&gt;
&lt;br /&gt;
* it will return an array with amount (float amount value of code), currency (3 letters, BTC or USD), reference (the transaction id), and status&lt;br /&gt;
&lt;br /&gt;
==== 0/withdraw.php ====&lt;br /&gt;
withdraw / Send BTC&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/withdraw.php&lt;br /&gt;
&lt;br /&gt;
POST data: group1=BTC&amp;amp;btca=bitcoin_address_to_send_to&amp;amp;amount=#&lt;br /&gt;
&lt;br /&gt;
* pass btca parameter to withdraw to a btc adress&lt;br /&gt;
&lt;br /&gt;
* pass group1 for a coupon : BTC2CODE or USD2CODE&lt;br /&gt;
&lt;br /&gt;
* pass group1=DWUSD&amp;amp;dwaccount=XXX-XXX-XXXX (no btca=xxxxxxx) for a dwolla withdraw&lt;br /&gt;
&lt;br /&gt;
* pass green=1 to use the new greenaddress feature ( see [[GreenAddress]] )&lt;br /&gt;
* return code and status if successful&lt;br /&gt;
&lt;br /&gt;
 To make a withdraw in another Currency , use group1=USD2CODE and add a Currency parameter ( example Currency=EUR to get a mtgox EUR coupon )&lt;br /&gt;
&lt;br /&gt;
==== 0/btcAddress.php ====&lt;br /&gt;
get a bitcoin deposit adress for your account &lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/btcAddress.php&lt;br /&gt;
&lt;br /&gt;
* pass POST data &amp;quot;description&amp;quot; to add a description that will appear in your history when this BTC address receive a deposit&lt;br /&gt;
&lt;br /&gt;
* returns a bitcoin deposit address&lt;br /&gt;
&lt;br /&gt;
==== 0/history_[CUR].csv ====&lt;br /&gt;
&lt;br /&gt;
Allows downloading your activity history for a given currency (BTC or USD for now).&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_BTC.csv&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/history_USD.csv&lt;br /&gt;
&lt;br /&gt;
encoding is utf-8&lt;br /&gt;
&lt;br /&gt;
==== 0/info.php ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/0/info.php&lt;br /&gt;
&lt;br /&gt;
returns info about your account, funds, fees, API privileges, withdraw limits . . . &lt;br /&gt;
&lt;br /&gt;
==== 0/ticker ====&lt;br /&gt;
&lt;br /&gt;
http://mtgox.com/api/0/data/ticker.php&lt;br /&gt;
&lt;br /&gt;
returns the current ticker :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;ticker&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;:5.70653,&lt;br /&gt;
 &amp;quot;low&amp;quot;:5.4145,&lt;br /&gt;
 &amp;quot;avg&amp;quot;:5.561388723,&lt;br /&gt;
 &amp;quot;vwap&amp;quot;:5.610932845,&lt;br /&gt;
 &amp;quot;vol&amp;quot;:55698,&lt;br /&gt;
 &amp;quot;last&amp;quot;:5.56915,&lt;br /&gt;
 &amp;quot;buy&amp;quot;:5.51326,&lt;br /&gt;
 &amp;quot;sell&amp;quot;:5.5672&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 the time frame for high, low, vol, avg, vwap . . . is sliding 24 hours&lt;br /&gt;
&lt;br /&gt;
what is vwap ? &lt;br /&gt;
&lt;br /&gt;
please see http://en.wikipedia.org/wiki/VWAP&lt;br /&gt;
&lt;br /&gt;
=== API version 0 examples ===&lt;br /&gt;
&lt;br /&gt;
==== all api shell type CLI ====&lt;br /&gt;
&lt;br /&gt;
python : http://www.goxsh.info/&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/vEpgw5nW&lt;br /&gt;
&lt;br /&gt;
==== other ====&lt;br /&gt;
&lt;br /&gt;
https : http://stackoverflow.com/questions/7046370/https-request-with-boost-asio-and-openssl&lt;br /&gt;
&lt;br /&gt;
https://github.com/sje397/mtgox-plasmoid&lt;br /&gt;
&lt;br /&gt;
module perl : http://search.cpan.org/~mndrix/Finance-MtGox-0.02/&lt;br /&gt;
&lt;br /&gt;
==== gather data ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/Lexiks/MyBitBoard&lt;br /&gt;
&lt;br /&gt;
==== gettrade ====&lt;br /&gt;
&lt;br /&gt;
bash : https://bitcointalk.org/index.php?topic=39402.0&lt;br /&gt;
&lt;br /&gt;
perl : http://pastebin.com/raw.php?i=pmhMXZJu&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
&lt;br /&gt;
http://pastebin.com/pd0ZR4WY&lt;br /&gt;
&lt;br /&gt;
=== Methods API version 1===&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency Ticker ====&lt;br /&gt;
&lt;br /&gt;
 https://mtgox.com/api/1/BTCUSD/public/ticker&lt;br /&gt;
 https://mtgox.com/api/1/BTCEUR/public/ticker&lt;br /&gt;
&lt;br /&gt;
 returns the current ticker for the selected currency :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;result&amp;quot;:&amp;quot;success&amp;quot;,&lt;br /&gt;
&amp;quot;return&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;high&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.70653&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;570653&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.70653&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;low&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.4145&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;541450&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.41450&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;avg&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.561119626&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556112&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56112&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vwap&amp;quot;: {&amp;quot;value&amp;quot;:&amp;quot;5.610480461&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;561048&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.61048&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;vol&amp;quot;:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;value&amp;quot;:&amp;quot;55829.58960346&amp;quot;,&lt;br /&gt;
  &amp;quot;value_int&amp;quot;:&amp;quot;5582958960346&amp;quot;,&lt;br /&gt;
  &amp;quot;display&amp;quot;:&amp;quot;55,829.58960346\u00a0BTC&amp;quot;,&lt;br /&gt;
  &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;last_local&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last_orig&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;last&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.5594&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;555940&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.55940&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;buy&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.53587&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;553587&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.53587&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;},&lt;br /&gt;
 &amp;quot;sell&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;5.56031&amp;quot;,&amp;quot;value_int&amp;quot;:&amp;quot;556031&amp;quot;,&amp;quot;display&amp;quot;:&amp;quot;$5.56031&amp;quot;,&amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note : last_local include only the last trade in the selected currency, last_orig include data of the original last trade ( currency,price in currency . . . ),last can be a conversion of the last trde in another currency&lt;br /&gt;
&lt;br /&gt;
==== Multi Currency depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/depth?raw&lt;br /&gt;
&lt;br /&gt;
==== Multi currency trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCPLN/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCAUD/public/trades?raw&lt;br /&gt;
&lt;br /&gt;
to get only the trades since a given trade id, you can add the parameter since=&amp;lt;trade_id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/trades?since=0&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCEUR/public/trades?since=1316312781670700&lt;br /&gt;
&lt;br /&gt;
For multi currency,also returns the primary value,&amp;quot;Y&amp;quot; or &amp;quot;N&amp;quot;, the primary currency is always the buyers currency&lt;br /&gt;
&lt;br /&gt;
A trade can appear in more than one currency, to ignore duplicates, use only the trades having primary =Y&lt;br /&gt;
&lt;br /&gt;
example of returned data : &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;date&amp;quot;:1316312781,&lt;br /&gt;
&amp;quot;price&amp;quot;:&amp;quot;3.5599&amp;quot;,&lt;br /&gt;
&amp;quot;amount&amp;quot;:&amp;quot;3.6900096&amp;quot;,&lt;br /&gt;
&amp;quot;price_int&amp;quot;:&amp;quot;355990&amp;quot;,&lt;br /&gt;
&amp;quot;amount_int&amp;quot;:&amp;quot;369000960&amp;quot;,&lt;br /&gt;
&amp;quot;tid&amp;quot;:&amp;quot;1316312781670700&amp;quot;,&lt;br /&gt;
&amp;quot;price_currency&amp;quot;:&amp;quot;EUR&amp;quot;,&lt;br /&gt;
&amp;quot;item&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
&amp;quot;trade_type&amp;quot;:&amp;quot;bid&amp;quot;,&lt;br /&gt;
&amp;quot;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
&amp;quot;properties&amp;quot;:&amp;quot;limit,mixed_currency&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cancelled Trades ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/cancelledtrades&lt;br /&gt;
&lt;br /&gt;
returns a list of all the cancelled trades this last month, list of trade ids in json format .&lt;br /&gt;
&lt;br /&gt;
==== Full Depth ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/public/fulldepth&lt;br /&gt;
&lt;br /&gt;
returns full depth&lt;br /&gt;
&lt;br /&gt;
==== Private info ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/info&lt;br /&gt;
&lt;br /&gt;
returns information about your account, funds, fees, API privileges, withdraw limits . . .&lt;br /&gt;
&lt;br /&gt;
==== Your open orders ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/private/orders&lt;br /&gt;
 &lt;br /&gt;
returns information about your current open orders&lt;br /&gt;
&lt;br /&gt;
==== Submit an order ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/BTCUSD/private/order/add&lt;br /&gt;
&lt;br /&gt;
parameters: &lt;br /&gt;
* type (bid|ask)&lt;br /&gt;
* amount_int &amp;lt;amount as int&amp;gt;&lt;br /&gt;
* price_int &amp;lt;price as int&amp;gt; (can be omitted to place market order)&lt;br /&gt;
 &lt;br /&gt;
submits an order and returns info about success or error&lt;br /&gt;
&lt;br /&gt;
==== Currency information ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/currency&lt;br /&gt;
&lt;br /&gt;
pass parameter ?currency=&amp;lt;currency_symbol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
returns information about a currency ( number of decimals . . . )&lt;br /&gt;
&lt;br /&gt;
==== HOTP key ====&lt;br /&gt;
&lt;br /&gt;
https://mtgox.com/api/1/generic/public/hotp_gen&lt;br /&gt;
&lt;br /&gt;
used to generate a new HOTP key ( useful for developpers )&lt;br /&gt;
&lt;br /&gt;
== Streaming API ==&lt;br /&gt;
Real time streaming data may be obtained over the streaming API, implemented in [http://socket.io/ Socket.io]&amp;lt;ref&amp;gt;Socket.io forum announcement by MagicalTux: https://bitcointalk.org/index.php?topic=14412.msg613271#msg613271&amp;lt;/ref&amp;gt;. The original WebSocket API&amp;lt;ref&amp;gt;Original WebSocket thread: https://bitcointalk.org/index.php?topic=5855.msg86219&amp;lt;/ref&amp;gt; is deprecated as of 11-Nov-2011.&lt;br /&gt;
&lt;br /&gt;
===Connecting===&lt;br /&gt;
The following JavaScript code establishes a connection in the browser:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;https://socketio.mtgox.com/socket.io/socket.io.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    var conn = io.connect(&#039;https://socketio.mtgox.com/mtgox&#039;);&lt;br /&gt;
    conn.on(&#039;message&#039;, function(data) {&lt;br /&gt;
        // Handle incoming data object.&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The session ID expires after 30 seconds&lt;br /&gt;
&lt;br /&gt;
===Handling Events===&lt;br /&gt;
Socket.io exposes a simple interface for handling events. Handling &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; events is shown above, but there are other events that may be handled:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
conn.on(&#039;connect&#039;,    onConnect);&lt;br /&gt;
conn.on(&#039;disconnect&#039;, onDisconnect);&lt;br /&gt;
conn.on(&#039;error&#039;,      onError);&lt;br /&gt;
conn.on(&#039;message&#039;,    onMessage);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Incoming Data===&lt;br /&gt;
Data arrives as a full object instead of as JSON text, eliminating the need to parse the data in the JavaScript handler. Messages that come across the socket to trigger the &amp;lt;tt&amp;gt;message&amp;lt;/tt&amp;gt; event will contain the following minimum components:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;lt;OPERATION_TYPE&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;OPERATION_TYPE&amp;lt;/tt&amp;gt; field may take these values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OPERATION_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subscribe || Notification that the user is subscribed to a channel&lt;br /&gt;
|-&lt;br /&gt;
| unsubscribe || Messages will no longer arrive over the channel&lt;br /&gt;
|-&lt;br /&gt;
| remark || A server message, usually a warning&lt;br /&gt;
|-&lt;br /&gt;
| private || The operation for depth, trade, and ticker messages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:subscribe and op:unsubscribe===&lt;br /&gt;
The subscribe and unsubscribe message data are very simple, containing the channel and the operation.&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;subscribe&amp;quot; OR &amp;quot;unsubscribe&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the channels are:&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&lt;br /&gt;
|-&lt;br /&gt;
| d5f06780-30a8-4a48-a2f8-7ed181b4a13f || Ticker&lt;br /&gt;
|-&lt;br /&gt;
| 24e67e0d-1cad-4cc0-9e7a-f8523ef460fe || Depth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===op:remark===&lt;br /&gt;
The remark operation contains message and success fields.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;remark&amp;quot;,&lt;br /&gt;
  &amp;quot;message&amp;quot;:&amp;lt;MESSAGE FROM THE SERVER&amp;gt;,&lt;br /&gt;
  &amp;quot;success&amp;quot;:&amp;lt;boolean&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===op:private===&lt;br /&gt;
The payloads of the &amp;lt;tt&amp;gt;op:private&amp;lt;/tt&amp;gt; messages contain the real time market information. Each message follows this form:&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;lt;CHANNEL_ID&amp;gt;,&lt;br /&gt;
  &amp;quot;op&amp;quot;:&amp;quot;private&amp;quot;,&lt;br /&gt;
  &amp;quot;private&amp;quot;:&amp;lt;MESSAGE_TYPE&amp;gt;,&lt;br /&gt;
  &amp;lt;MESSAGE_TYPE&amp;gt;:&amp;lt;DATA_PAYLOAD&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;MESSAGE_TYPE&amp;lt;/tt&amp;gt; field may take the values:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! MESSAGE_TYPE !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ticker || Ticker messages&lt;br /&gt;
|-&lt;br /&gt;
| trade || Trades, as they occur&lt;br /&gt;
|-&lt;br /&gt;
| depth || Orders placed or removed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Ticker====&lt;br /&gt;
Ticker messages contain the current inside Bid and Ask as well as daily highs, lows, and volume. The fields contained in the ticker match those defined in the version 1.0 API above. All fields contain &amp;lt;tt&amp;gt;currency&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;display&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;value_int&amp;lt;/tt&amp;gt; entries.&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;avg&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;USD&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;$2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;2.26847&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;226847&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;buy&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;high&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last&amp;quot;:{..},&lt;br /&gt;
    &amp;quot;last_local&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;last_orig&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;low&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;sell&amp;quot;:{...},&lt;br /&gt;
    &amp;quot;vol&amp;quot;:{&lt;br /&gt;
      &amp;quot;currency&amp;quot;:&amp;quot;BTC&amp;quot;,&lt;br /&gt;
      &amp;quot;display&amp;quot;:&amp;quot;118,696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:&amp;quot;118696.02104208&amp;quot;,&lt;br /&gt;
      &amp;quot;value_int&amp;quot;:&amp;quot;11869602104208&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vwap&amp;quot;:{...}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trade====&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;primary&amp;quot;:&amp;quot;Y&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;:&amp;quot;limit, mixed_currency&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;now&amp;quot;:&amp;quot;1323644358437819&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;total_volume_int&amp;quot;:&amp;quot;849766000&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;
===Possible outgoing commands===&lt;br /&gt;
==== unsubscribe ====&lt;br /&gt;
Stop receiving messages from a channel&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     &amp;quot;op&amp;quot;:&amp;quot;unsubscribe&amp;quot;, &lt;br /&gt;
     &amp;quot;channel&amp;quot;:&amp;lt;CHANNEL ID&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Responds with an identical message to confirm&lt;br /&gt;
==== mtgox.subscribe ====&lt;br /&gt;
Subscribe to a channel to start receiving messages from it.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
     &amp;quot;op&amp;quot;: &amp;quot;mtgox.subscribe&amp;quot;,&lt;br /&gt;
     &amp;quot;type&amp;quot;: &amp;quot;ticker&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;quot;type&amp;quot; can be ticker, trades, or depth.&lt;br /&gt;
&lt;br /&gt;
=== examples ===&lt;br /&gt;
&lt;br /&gt;
==== ticker ====&lt;br /&gt;
javascript, using hookio : &lt;br /&gt;
&lt;br /&gt;
http://www.youtube.com/watch?v=KD5ljtNK72U&lt;br /&gt;
&lt;br /&gt;
http://github.com/hookio&lt;br /&gt;
&lt;br /&gt;
http://github.com/cronopio/hook.io-mtgox&lt;br /&gt;
&lt;br /&gt;
Another node.js project, using plain websockets (largely based on cronopio&#039;s work) :&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
==== arbitrage ====&lt;br /&gt;
https://github.com/goteppo/ArBit&lt;br /&gt;
&lt;br /&gt;
==== websocket ====&lt;br /&gt;
https://github.com/cronopio/hook.io-ws&lt;br /&gt;
&lt;br /&gt;
https://github.com/dlanod/node-mtgox-websocket-client&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seventoes</name></author>
	</entry>
</feed>