user23128:             string url = @"https://api.bitfinex.com/v1/balances";
            string paramDict = "{\"request\": \"/v1/balances\",\"nonce\": \"" + GetNonce() * 10000 + "\"}";
            string payload = Convert.ToBase64String(Encoding.ASCII.GetBytes(paramDict));
            string signature = BitConverter.ToString(hmac.ComputeHash(Encoding.ASCII.GetBytes(payload))).Replace("-","").ToLower();

            var headers = new Dictionary<string, string>
            {
                {"X-BFX-APIKEY",key},
                {"X-BFX-PAYLOAD",payload},
                {"X-BFX-SIGNATURE",signature}
            };


            var request = WebRequest.Create(new Uri(url)) as HttpWebRequest;
            if (request == null)
                throw new Exception("Non HTTP WebRequest");

            var data = System.Text.Encoding.ASCII.GetBytes(paramDict);
            request.Method = "POST";
            request.Timeout = 30000;
            request.ContentLength = data.Length;
            foreach (var a in headers)
            {
                request.Headers.Add(a.Key, a.Value);
            }

            var write = request.GetRequestStream();
            write.Write(data, 0, data.Length);

            var respone = request.GetResponse() as HttpWebResponse;

This is my code. Maybe you can see where I made an error. As for me, API is normal made.
When I run this code it returns an HTTP 400 error code.

user23128: string Query()
        {
            string url = "https://api.bitfinex.com/v1/balances";
            string paramDict = "{\"request\":\"\\/v1\\/balances\",\"nonce\":\"" + GetNonce() * 100000 + "\"}";
            string payload = EncodeTo64(paramDict);
            string message = payload;
            string skey = secret;
            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
            byte[] keyByte = encoding.GetBytes(skey);
            HMACSHA384 hmacsha384 = new HMACSHA384(keyByte);
            byte[] messageBytes = encoding.GetBytes(message);
            byte[] hashmessage = hmacsha384.ComputeHash(messageBytes);
            string signature = this.ByteToString(hashmessage);
            var headers = new Dictionary<string, string>
            {
                {"X-BFX-APIKEY",key},
                {"X-BFX-PAYLOAD",payload},
                {"X-BFX-SIGNATURE",signature}
            };
            var request = WebRequest.Create(new Uri(url)) as HttpWebRequest;
            if (request == null)
                throw new Exception("Non HTTP WebRequest");

            var data = encoding.GetBytes(paramDict);
            request.Method = "POST";
            request.Timeout = 30000;
            request.ContentLength = data.Length;
            foreach (var a in headers)
            {
                request.Headers.Add(a.Key, a.Value);
            }

            var write = request.GetRequestStream();
            write.Write(data, 0, data.Length);

            var respone = request.GetResponse() as HttpWebResponse;

            return null;
        }

this is new code to fix error with HMACSHA384
 string ByteToString(byte[] buff)
        {
            string sbinary = "";

            for (int i = 0; i < buff.Length; i++)
            {
                sbinary += buff[i].ToString("X2"); // hex format
            }
            return (sbinary);
        }

and some more fixes.
long GetNonce()
        {
            return nonce++;
        }

        static public string EncodeTo64(string toEncode)
        {
            byte[] toEncodeAsBytes
                  = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);
            string returnValue
                  = System.Convert.ToBase64String(toEncodeAsBytes);
            return returnValue;
        }

oh and last fix to prove the error
    string signature = this.ByteToString(hashmessage).ToLower();


23128: <pre><code>            string url = @"https://api.bitfinex.com/v1/balances";
            string paramDict = "{\"request\": \"/v1/balances\",\"nonce\": \"" + GetNonce() * 10000 + "\"}";
            string payload = Convert.ToBase64String(Encoding.ASCII.GetBytes(paramDict));
            string signature = BitConverter.ToString(hmac.ComputeHash(Encoding.ASCII.GetBytes(payload))).Replace("-","").ToLower();

            var headers = new Dictionary&lt;string, string&gt;
            {
                {"X-BFX-APIKEY",key},
                {"X-BFX-PAYLOAD",payload},
                {"X-BFX-SIGNATURE",signature}
            };


            var request = WebRequest.Create(new Uri(url)) as HttpWebRequest;
            if (request == null)
                throw new Exception("Non HTTP WebRequest");

            var data = System.Text.Encoding.ASCII.GetBytes(paramDict);
            request.Method = "POST";
            request.Timeout = 30000;
            request.ContentLength = data.Length;
            foreach (var a in headers)
            {
                request.Headers.Add(a.Key, a.Value);
            }

            var write = request.GetRequestStream();
            write.Write(data, 0, data.Length);

            var respone = request.GetResponse() as HttpWebResponse;
</code></pre>

<p>This is my code. Maybe you can see where I made an error. As for me, API is normal made.</p>

<p>When I run this code it returns an HTTP 400 error code.</p>
 23128: <pre><code>string Query()
        {
            string url = "https://api.bitfinex.com/v1/balances";
            string paramDict = "{\"request\":\"\\/v1\\/balances\",\"nonce\":\"" + GetNonce() * 100000 + "\"}";
            string payload = EncodeTo64(paramDict);
            string message = payload;
            string skey = secret;
            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
            byte[] keyByte = encoding.GetBytes(skey);
            HMACSHA384 hmacsha384 = new HMACSHA384(keyByte);
            byte[] messageBytes = encoding.GetBytes(message);
            byte[] hashmessage = hmacsha384.ComputeHash(messageBytes);
            string signature = this.ByteToString(hashmessage);
            var headers = new Dictionary&lt;string, string&gt;
            {
                {"X-BFX-APIKEY",key},
                {"X-BFX-PAYLOAD",payload},
                {"X-BFX-SIGNATURE",signature}
            };
            var request = WebRequest.Create(new Uri(url)) as HttpWebRequest;
            if (request == null)
                throw new Exception("Non HTTP WebRequest");

            var data = encoding.GetBytes(paramDict);
            request.Method = "POST";
            request.Timeout = 30000;
            request.ContentLength = data.Length;
            foreach (var a in headers)
            {
                request.Headers.Add(a.Key, a.Value);
            }

            var write = request.GetRequestStream();
            write.Write(data, 0, data.Length);

            var respone = request.GetResponse() as HttpWebResponse;

            return null;
        }
</code></pre>

<p>this is new code to fix error with HMACSHA384</p>

<pre><code> string ByteToString(byte[] buff)
        {
            string sbinary = "";

            for (int i = 0; i &lt; buff.Length; i++)
            {
                sbinary += buff[i].ToString("X2"); // hex format
            }
            return (sbinary);
        }
</code></pre>

<p>and some more fixes.</p>

<pre><code>long GetNonce()
        {
            return nonce++;
        }

        static public string EncodeTo64(string toEncode)
        {
            byte[] toEncodeAsBytes
                  = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);
            string returnValue
                  = System.Convert.ToBase64String(toEncodeAsBytes);
            return returnValue;
        }
</code></pre>

<p>oh and last fix to prove the error</p>

<pre><code>    string signature = this.ByteToString(hashmessage).ToLower();
</code></pre>
