<?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=Vbmithr</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=Vbmithr"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Vbmithr"/>
	<updated>2026-04-15T17:37:46Z</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=33751</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=33751"/>
		<updated>2012-12-14T13:24:50Z</updated>

		<summary type="html">&lt;p&gt;Vbmithr: /* arbitrage */&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 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>Vbmithr</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=33750</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=33750"/>
		<updated>2012-12-14T13:24:33Z</updated>

		<summary type="html">&lt;p&gt;Vbmithr: /* arbitrage */&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 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>Vbmithr</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/HTTP&amp;diff=31899</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=31899"/>
		<updated>2012-10-20T12:26:01Z</updated>

		<summary type="html">&lt;p&gt;Vbmithr: /* Python */&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], [https://rubygems.org/gems/guten-mtgox guten-mtgox] 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;
== 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;
== 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;
&lt;br /&gt;
 &#039;&#039;&#039;basically the base64 string should contain:&#039;&#039;&#039;&lt;br /&gt;
* the binary representation of the api key id&lt;br /&gt;
* binary hmac-sha512 signature&lt;br /&gt;
* json data&lt;br /&gt;
&lt;br /&gt;
api key looks like that: 12345678-abcd-1234-abcd-50286e649d5c&lt;br /&gt;
&lt;br /&gt;
it&#039;s actually hexadecimal, it should be converted to binary&lt;br /&gt;
&lt;br /&gt;
hash should then be appended (binary too) and then encode everything in base64&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning : the API is no more accepting authentication by login/pass ( since 2012 march 1 ) , you _need_ to use an API key.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== perl ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT! This is a simplified perl module simply returning user info not a full API, it is shown simply for illustrative purposes for those wishing to developing there own modules from scratch.. or bots.. or other&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT! This requires you compiled perl libwww with https support&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
use Time::HiRes qw(gettimeofday);&lt;br /&gt;
use MIME::Base64;&lt;br /&gt;
use Digest::SHA qw(hmac_sha512);&lt;br /&gt;
&lt;br /&gt;
use JSON;&lt;br /&gt;
use LWP::UserAgent;&lt;br /&gt;
&lt;br /&gt;
use Data::Dumper;&lt;br /&gt;
&lt;br /&gt;
my $lwp = LWP::UserAgent-&amp;gt;new;&lt;br /&gt;
$lwp-&amp;gt;agent(&amp;quot;perl $]&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
my $json = JSON-&amp;gt;new-&amp;gt;allow_nonref;&lt;br /&gt;
&lt;br /&gt;
my $secret = &#039;_MTGOX API SECRET GET YOURS AT https://classic.mtgox.com/support/tradeAPI&#039;;&lt;br /&gt;
my $key = &#039;_MTGOX API KEY GET YOURS AT https://classic.mtgox.com/support/tradeAPI&#039;;&lt;br /&gt;
&lt;br /&gt;
## user code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
my $request = genReq(&#039;/1/generic/private/info&#039;);&lt;br /&gt;
my $res = $lwp-&amp;gt;request($request);&lt;br /&gt;
&lt;br /&gt;
# Check the outcome of the response&lt;br /&gt;
if ($res-&amp;gt;is_success) {&lt;br /&gt;
        print Dumper($json-&amp;gt;decode( $res-&amp;gt;content )).&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
else { print $res-&amp;gt;status_line, &amp;quot;\n&amp;quot;; }&lt;br /&gt;
&lt;br /&gt;
exit 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## sub routines and helpers&lt;br /&gt;
&lt;br /&gt;
sub genReq {&lt;br /&gt;
        my ($uri) = shift;&lt;br /&gt;
&lt;br /&gt;
        my $req = HTTP::Request-&amp;gt;new(POST =&amp;gt; &#039;https://mtgox.com/api/&#039;.$uri);&lt;br /&gt;
        $req-&amp;gt;content_type(&#039;application/x-www-form-urlencoded&#039;);&lt;br /&gt;
        $req-&amp;gt;content(&amp;quot;nonce=&amp;quot;.microtime());&lt;br /&gt;
        $req-&amp;gt;header(&#039;Rest-Key&#039; =&amp;gt; $key);&lt;br /&gt;
        $req-&amp;gt;header(&#039;Rest-Sign&#039; =&amp;gt; signReq($req-&amp;gt;content(),$secret));&lt;br /&gt;
&lt;br /&gt;
        return $req;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
sub signReq {&lt;br /&gt;
        my ($content,$secret) = @_;&lt;br /&gt;
        return encode_base64(hmac_sha512($content,decode_base64($secret)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub microtime { return sprintf &amp;quot;%d%06d&amp;quot;, gettimeofday; }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;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_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 ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from urllib import urlencode&lt;br /&gt;
import urllib2&lt;br /&gt;
import time&lt;br /&gt;
from hashlib import sha512&lt;br /&gt;
from hmac import HMAC&lt;br /&gt;
import base64&lt;br /&gt;
import json&lt;br /&gt;
def get_nonce():&lt;br /&gt;
    return int(time.time()*100000)&lt;br /&gt;
&lt;br /&gt;
def sign_data(secret, data):&lt;br /&gt;
    return base64.b64encode(str(HMAC(secret, data, sha512).digest()))&lt;br /&gt;
      &lt;br /&gt;
class requester:&lt;br /&gt;
    def __init__(self, auth_key, auth_secret):&lt;br /&gt;
        self.auth_key = auth_key&lt;br /&gt;
        self.auth_secret = base64.b64decode(auth_secret)&lt;br /&gt;
        &lt;br /&gt;
    def build_query(self, req={}):&lt;br /&gt;
        req[&amp;quot;nonce&amp;quot;] = get_nonce()&lt;br /&gt;
        post_data = urlencode(req)&lt;br /&gt;
        headers = {}&lt;br /&gt;
        headers[&amp;quot;User-Agent&amp;quot;] = &amp;quot;GoxApi&amp;quot;&lt;br /&gt;
        headers[&amp;quot;Rest-Key&amp;quot;] = self.auth_key&lt;br /&gt;
        headers[&amp;quot;Rest-Sign&amp;quot;] = sign_data(self.auth_secret, post_data)&lt;br /&gt;
        return (post_data, headers)&lt;br /&gt;
        &lt;br /&gt;
    def perform(self, path, args):&lt;br /&gt;
        data, headers = self.build_query(args)&lt;br /&gt;
        req = urllib2.Request(&amp;quot;https://mtgox.com/api/0/&amp;quot;+path, data, headers)&lt;br /&gt;
        res = urllib2.urlopen(req, data)&lt;br /&gt;
        return json.load(res)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Node.js ===&lt;br /&gt;
Generic [[Node.js Example]] trading library (supports MtGox and Bitfloor): https://github.com/bitfloor/trader.nodejs&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
basic [[Java Example]] on https://gist.github.com/2396722 hoping for many java forks and pull requests on github&lt;br /&gt;
&lt;br /&gt;
XChange API : https://github.com/timmolter/XChange&lt;br /&gt;
&lt;br /&gt;
=== Javascript Firefox addon ===&lt;br /&gt;
* [https://github.com/joric/mtgox-ticker] firefox ticker addon&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[MtGox|Mt. Gox]]&lt;/div&gt;</summary>
		<author><name>Vbmithr</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=MtGox/API/Streaming&amp;diff=31255</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=31255"/>
		<updated>2012-09-26T14:23:03Z</updated>

		<summary type="html">&lt;p&gt;Vbmithr: put one more level of section for outgoing direct 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;
==command line connecting example==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
wssh websocket.mtgox.com:80/mtgox&lt;br /&gt;
wssh websocket.mtgox.com:80/mtgox | grep trade&lt;br /&gt;
wssh websocket.mtgox.com:80/mtgox | grep depth &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
find wssh ( web socket command line client ) here : https://github.com/progrium/wssh&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;
| 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;
&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>Vbmithr</name></author>
	</entry>
</feed>