{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"10ca15bf-9d45-4f47-b0b3-4c3ec9a46e1f","name":"NovaBtc public API","description":"## Introduction\n\nWelcome to the API Documentation for our financial services platform. This document provides comprehensive details on how to interact with our API to perform a wide range of operations, including managing fiat and crypto withdrawals, retrieving requisites, handling exchanges, and more.\n\n## Authentication\n\nOur API uses token-based authentication to ensure secure access. Each request must include a valid token in the header. The token can be obtained through our authentication endpoint.\n\nAuthenticated requests must include both `APIKey` and `APISign` HTTP header in the request payload.\n\nTo construct the signature, use the following format:\n\n`\"#{canonical_verb}|#{canonical_uri}|#{canonical_query}|#{access_key}\"`\n\n**where:**\n\n- **canonical_verb**: HTTP request method (e.g., GET, POST, etc.)\n    \n- **canonical_uri**: request path starting from the API root URL.\n    \n- **canonical_query**: input parameters. For GET requests, these are query parameters; for POST and other methods, these are body parameters.\n    \n- **access_key**: access key associated with the API request.\n    \n\nSignature should be coded with `HmacSHA256` algorithm and subscribed by `secret_key`\n\n## Code example\n\n``` python\nimport hmac\nimport hashlib\nimport requests\nfrom urllib.parse import urlencode\n# Configuration variables\nhttp_method = \"POST\"  # or \"POST\", \"PUT\", etc.\ncanonical_uri = \"/api/v2/deposit_addresses\"  # example endpoint path\naccess_key = \"tGhT343HpEYExsGzJ4qNbMLTTFAwTy3OKd2WGIxc\"\nsecret_key = \"SB9S1L3IO4EHs9xQvsQFnhxnDwiWSzabGLiNNdGr\"\n# Function to flatten an object (to be used for POST/PUT/PATCH/DELETE requests)\ndef flatten_object(obj, parent_key='', res={}):\n    for key in obj:\n        prop_name = f\"{parent_key}_{key}\" if parent_key else key\n        if isinstance(obj[key], dict):\n            flatten_object(obj[key], prop_name, res)\n        else:\n            res[prop_name] = obj[key]\n    return res\n# Function to convert object to query string\ndef object_to_query_string(obj):\n    flat_object = flatten_object(obj)\n    sorted_keys = sorted(flat_object.keys())\n    query_params = [\n        f\"{key}={flat_object[key]}\" for key in sorted_keys\n    ]\n    return '&'.join(query_params)\n# Prepare the message to sign based on HTTP method\nif http_method == \"GET\":\n    # For GET request, use query parameters from the URL (if any)\n    query_params = {\n        \"amount\": \"0.05\",\n        \"input_asset\": \"btc\",\n        \"output_asset\": \"xrp\"\n    }\n    canonical_query = object_to_query_string(query_params)\n    canonical_string = f\"{http_method}|{canonical_uri}|{canonical_query}\"\nelif http_method in [\"POST\", \"PUT\", \"PATCH\", \"DELETE\"]:\n    # For POST/PUT/PATCH/DELETE requests, use the body of the request\n    request_body = {\n        \"dchain\": \"usdc\"\n    }\n    canonical_query = object_to_query_string(request_body)\n    canonical_string = f\"{http_method}|{canonical_uri}|{canonical_query}\"\n# Generate the HMAC SHA256 signature\nsignature = hmac.new(\n    secret_key.encode('utf-8'),\n    canonical_string.encode('utf-8'),\n    hashlib.sha256\n).hexdigest()\n# Prepare the headers\nheaders = {\n    \"accept\": 'application/json',\n    \"APIKey\": access_key,\n    \"APISign\": signature\n}\n# Define the full URL (assuming 'https://api.example.com' is the base URL)\nurl = \"https://api.novabtc.io\" + canonical_uri\n# Send the GET or POST request\nif http_method == \"GET\":\n    response = requests.get(url, headers=headers, params=query_params)  # Use params for GET requests\nelse:\n    response = requests.request(\n        http_method,\n        url,\n        headers=headers,\n        json=request_body\n    )  # Use json for POST/PUT/PATCH/DELETE\n# Check the response\nprint(response.status_code)\nprint(response.text)\n\n ```\n\n## Websockets\n\n### Description\n\nUpdates on system objects can be received through a WebSocket connection.\n\n### Connection URL\n\n**WebSocket URL:** wss://api.novabtc.io\n\n**SocketIO Path**: `/zsu/ws/v1`\n\n### Authentication\n\nTo connect, you need to use `api_key`, `api_secret` (which can be obtained when generating a token in your account api_keys page), `user_uuid` (which can be obtained by requesting `/api/v2/members/me` as the `uuid` attribute), and `api_sign` - this is an HMAC signature created based on `canonicalString`. More details in the example.\n\n### Example Connection in Python\n\nHere is an example of connecting to the WebSocket server in Python using the `python-socketio[client]` library:\n\n``` python\nimport socketio\nimport hmac\nimport hashlib\nSERVER_URL = 'wss://api.novabtc.io'\nAPI_KEY = 'kjdh723ncs73ncdsnc72ncs73kds32L3skD2'\nAPI_SECRET = 'GJSsaK3PpwOjgLK2lkPmQ5TZRtF2pPoQBZ9yyuAa'\nUSER_UUID = 'novabtcz1agv'\ndef generate_hmac(canonical_string: str, secret: str) -> str:\n    return hmac.new(secret.encode(), canonical_string.encode(), hashlib.sha256).hexdigest()\ncanonical_string = f'{USER_UUID}|{API_KEY}'\napi_sign = generate_hmac(canonical_string, API_SECRET)\nsio = socketio.Client()\n@sio.event\ndef connect():\n    print(f'Connected to: {SERVER_URL}')\n    print(f'With this api_key: {API_KEY}')\n@sio.event\ndef disconnect():\n    print('Disconnected')\n@sio.event\ndef close(data):\n    print(f'Connection closed: {data}')\n@sio.event\ndef connect_error(data):\n    print(f'Connection error: {data}')\n@sio.on('account')\ndef on_account(data):\n    print('Message from server (account):', data)\n@sio.on('deposit_address')\ndef on_deposit_address(data):\n    print('Message from server (deposit_address):', data)\n@sio.on('deposit')\ndef on_deposit(data):\n    print('Message from server (deposit):', data)\n@sio.on('withdrawal')\ndef on_withdrawal(data):\n    print('Message from server (withdrawal):', data)\nurl = f\"{SERVER_URL}?api_key={API_KEY}&api_sign={api_sign}\"\nsio.connect(url, transports=['websocket'], socketio_path='/zsu/ws/v1')\nsio.wait()\n\n ```\n\n### Possible Subscription Objects\n\n- customer\n    \n- deposit\n    \n- order\n    \n- withdrawal\n    \n- trade\n    \n- deposit_address\n    \n- account\n    \n\n### Example Response\n\n**Example data for the** `account` object received from the server:\n\n``` json\n{\n  \"version\": \"1\",\n  \"action\": \"update\",\n  \"object\": {\n    \"aml_locked\": \"0.0\",\n    \"balance\": \"0.0\",\n    \"bonus\": \"0.0\",\n    \"coin_type\": \"crypto\",\n    \"currency\": \"usdt\",\n    \"launchpad\": \"0.0\",\n    \"locked\": \"0.0\",\n    \"name\": \"Tether USD\",\n    \"savings\": \"0.0\",\n    \"stacking\": \"0.0\",\n    \"tag\": null,\n    \"total\": \"0.0\"\n  }\n}\n\n ```\n\nThis example demonstrates how a client can connect to the WebSocket server and process the messages received from it. Use the appropriate `api_key`, `api_secret`, and `user_uuid` for your connection.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"20449810","team":5276333,"collectionId":"10ca15bf-9d45-4f47-b0b3-4c3ec9a46e1f","publishedId":"2sB2cbZJCK","public":true,"publicUrl":"https://docs.novabtc.io","privateUrl":"https://go.postman.co/documentation/20449810-10ca15bf-9d45-4f47-b0b3-4c3ec9a46e1f","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":"NovaBTC API Documentation"}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2025-04-23T09:18:50.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"NovaBTC API Documentation","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/6315ffb40cf691acffdfcbb36f80e8a9c64e7c127dbc407838793dbfd7c36236","favicon":"https://novabtc.io/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://docs.novabtc.io/view/metadata/2sB2cbZJCK"}