Auth
You can generate API-keys in you account settings.
For each request you will need API-Signature:
- Calculate signatureText = publicKey + requestUrl + requestBodyString (no separator symbols in-between)
- publicKey - example: b2H9TlfRu6MOgG4m9wvrf9maSUiPsQJEui0JrB
- requestUrl - full url of request, example: https://data.azbit.com/api/orders
- requestBodyString - json request body as a 1-line string, example: {"isBid":true,"currencyPairCode":"ETH_BTC","amount":0.01,"price":0.02}. For GET methods it will be an empty string.
- signatureText = b2H9TlfRu6MOgG4m9wvrf9maSUiPsQJEui0JrBhttps://data.azbit.com/api/orders{"isBid":true,"currencyPairCode":"ETH_BTC","amount":0.01,"price":0.02}
- signatureText for GET method = b2H9TlfRu6MOgG4m9wvrf9maSUiPsQJEui0JrBhttps://data.azbit.com/api/orders
Convert signatureText as UTF8-string to bytes
Compute HMACSHA256 hash from signatureText-bytes
Convert hash-bytes to HEX-string
Example in JS code:
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>
let signature = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(publicKey + requestUrl + requestBodyString, privateKey));
Example in C# code:
string signature = new HMACSHA256(Encoding.UTF8.GetBytes(privateKey))
.ComputeHash(Encoding.UTF8.GetBytes(publicKey + requestUrl + requestBodyString))
.Aggregate(new StringBuilder(), (sb, b) => sb.AppendFormat("{0:x2}", b), (sb) => sb.ToString());
API-Signature should look like this: b7238692e0537d3a7fd13faff266d315e3185247e1644c1155f60e6d4e4e445d
- Add headers to each request: "API-Signature" - your signature "API-PublicKey" - your public key
A User-Agent header is required
Requests are served through Cloudflare, which refuses a request that sends no User-Agent with
403 and a body reading error code: 1010. That is not an authentication or signature failure —
it never reaches the exchange. Send any non-empty User-Agent (identifying your bot is helpful when
we have to look a request up).
Checking what a key can do
GET /api/user/api-keys/current reports the permissions of the key making the request, so you never
have to attempt a withdrawal to find out whether the key is allowed one:
{
"publicKey": "b2H9TlfRu6MOgG4m9wvrf9maSUiPsQJEui0JrB",
"userId": "0f5c...",
"description": "market maker",
"dateCreated": "2026-08-01T10:00:00+00:00",
"canTrade": true,
"canReadUserInfo": true,
"canWithdraw": false,
"ipWhitelist": ["203.0.113.10"]
}
Each permission is set per key in account settings — withdrawal can be switched off for one key while
another keeps it. An empty ipWhitelist means the key may be used from anywhere; when it is not
empty, a request from any other address is refused with 403.
GET /api/user/profile returns just { "userId": "..." }, for clients that need their account id
before they have placed any order.