{"id":15021114,"url":"https://github.com/btschwertfeger/python-kraken-sdk","last_synced_at":"2025-04-04T17:04:44.258Z","repository":{"id":45571596,"uuid":"510751854","full_name":"btschwertfeger/python-kraken-sdk","owner":"btschwertfeger","description":"Command-line tool and SDK to access the Kraken Cryptocurrency Exchange API (Spot, NFT \u0026 Futures, REST and Websocket API)","archived":false,"fork":false,"pushed_at":"2025-03-14T07:18:47.000Z","size":1621,"stargazers_count":59,"open_issues_count":2,"forks_count":22,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-28T16:07:32.440Z","etag":null,"topics":["bitcoin","command-line","cryptocurrency","exchange","futures","futures-market","futures-trading","kraken","kraken-exchange","market-data","nft","python","python-trading","spot-market","trading","trading-api","trading-bot","trading-client","websocket"],"latest_commit_sha":null,"homepage":"https://python-kraken-sdk.readthedocs.io/en/stable","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/btschwertfeger.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION","codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-05T13:38:44.000Z","updated_at":"2025-03-23T21:46:20.000Z","dependencies_parsed_at":"2023-01-31T07:45:33.631Z","dependency_job_id":"f83d1b03-9d28-40b4-8dab-b12964402fb0","html_url":"https://github.com/btschwertfeger/python-kraken-sdk","commit_stats":{"total_commits":249,"total_committers":6,"mean_commits":41.5,"dds":0.570281124497992,"last_synced_commit":"a6ea433074d415e90cf0fa7840547aca6850f16c"},"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-kraken-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-kraken-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-kraken-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btschwertfeger%2Fpython-kraken-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btschwertfeger","download_url":"https://codeload.github.com/btschwertfeger/python-kraken-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247217172,"owners_count":20903008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","command-line","cryptocurrency","exchange","futures","futures-market","futures-trading","kraken","kraken-exchange","market-data","nft","python","python-trading","spot-market","trading","trading-api","trading-bot","trading-client","websocket"],"created_at":"2024-09-24T19:56:09.163Z","updated_at":"2025-04-04T17:04:44.226Z","avatar_url":"https://github.com/btschwertfeger.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eFutures and Spot REST and Websocket API Python SDK for the Kraken Cryptocurrency Exchange 🐙\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub](https://badgen.net/badge/icon/github?icon=github\u0026label)](https://github.com/btschwertfeger/python-kraken-sdk)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Generic badge](https://img.shields.io/badge/python-3.11+-blue.svg)](https://shields.io/)\n[![Downloads](https://static.pepy.tech/personalized-badge/python-kraken-sdk?period=total\u0026units=abbreviation\u0026left_color=grey\u0026right_color=orange\u0026left_text=downloads)](https://pepy.tech/project/python-kraken-sdk)\n\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![Typing](https://img.shields.io/badge/typing-mypy-informational)](https://mypy-lang.org/)\n[![CI/CD](https://github.com/btschwertfeger/python-kraken-sdk/actions/workflows/cicd.yaml/badge.svg?branch=master)](https://github.com/btschwertfeger/python-kraken-sdk/actions/workflows/cicd.yaml)\n[![codecov](https://codecov.io/gh/btschwertfeger/python-kraken-sdk/branch/master/badge.svg)](https://app.codecov.io/gh/btschwertfeger/python-kraken-sdk)\n\n[![OpenSSF ScoreCard](https://img.shields.io/ossf-scorecard/github.com/btschwertfeger/python-kraken-sdk?label=openssf%20scorecard\u0026style=flat)](https://securityscorecards.dev/viewer/?uri=github.com/btschwertfeger/python-kraken-sdk)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8673/badge)](https://www.bestpractices.dev/projects/8673)\n\n[![release](https://shields.io/github/release-date/btschwertfeger/python-kraken-sdk)](https://github.com/btschwertfeger/python-kraken-sdk/releases)\n[![release](https://img.shields.io/pypi/v/python-kraken-sdk)](https://pypi.org/project/python-kraken-sdk/)\n[![DOI](https://zenodo.org/badge/510751854.svg)](https://zenodo.org/badge/latestdoi/510751854)\n[![Documentation Status Stable](https://readthedocs.org/projects/python-kraken-sdk/badge/?version=stable)](https://python-kraken-sdk.readthedocs.io/en/stable)\n\n\u003c/div\u003e\n\n\u003e ⚠️ This is an unofficial collection of REST and websocket clients for Spot and\n\u003e Futures trading on the Kraken cryptocurrency exchange using Python. Payward\n\u003e Ltd. and Kraken are in no way associated with the authors of this package and\n\u003e documentation.\n\u003e\n\u003e Please note that this project is independent and not endorsed by Kraken or\n\u003e Payward Ltd. Users should be aware that they are using third-party software,\n\u003e and the authors of this project are not responsible for any issues, losses, or\n\u003e risks associated with its usage.\n\n## 📌 Disclaimer\n\nThere is no guarantee that this software will work flawlessly at this or later\ntimes. Of course, no responsibility is taken for possible profits or losses.\nThis software probably has some errors in it, so use it at your own risk. Also\nno one should be motivated or tempted to invest assets in speculative forms of\ninvestment. By using this software you release the author(s) from any liability\nregarding the use of this software.\n\n---\n\n## Features\n\nGeneral:\n\n- Command-line interface\n- Access both public and private, REST and websocket endpoints\n- Responsive error handling and custom exceptions\n- Extensive example scripts (see `/examples` and `/tests`)\n- Tested using the [pytest](https://docs.pytest.org/en/7.3.x/) framework\n- Releases are permanently archived at [Zenodo](https://zenodo.org/badge/latestdoi/510751854)\n\nAvailable Clients:\n\n- Spot REST Clients (sync and async)\n- Spot Websocket Client (using Websocket API v2)\n- Spot Orderbook Client (using Websocket API v2)\n- Futures REST Clients (sync and async)\n- Futures Websocket Client\n\nDocumentation:\n\n- [https://python-kraken-sdk.readthedocs.io/en/stable](https://python-kraken-sdk.readthedocs.io/en/stable)\n- [https://python-kraken-sdk.readthedocs.io/en/latest](https://python-kraken-sdk.readthedocs.io/en/latest)\n\nProjects using this SDK:\n\n- https://github.com/btschwertfeger/kraken-infinity-grid\n- https://github.com/btschwertfeger/kraken-rebalance-bot\n\n---\n\n## ❗️ Attention\n\n**ONLY** tagged releases are available at PyPI. So the content of the master may\nnot match with the content of the latest release. - Please have a look at the\nrelease specific READMEs and changelogs.\n\nIt is also recommended to _pin the used version_ to avoid unexpected behavior on\nnew releases.\n\n---\n\n## Table of Contents\n\n- [ Installation and setup ](#installation)\n- [ Command-line interface ](#cliusage)\n- [ Spot Clients ](#spotusage)\n- [ Futures Clients ](#futuresusage)\n- [ Troubleshooting ](#trouble)\n- [ Contributions ](#contribution)\n- [ Notes ](#notes)\n- [ Considerations ](#considerations)\n- [ References ](#references)\n\n\u003ca name=\"installation\"\u003e\u003c/a\u003e\n\n# 🛠 Installation and setup\n\n### 1. Install the package into the desired environment\n\n```bash\npython3 -m pip install python-kraken-sdk\n```\n\n### 2. Register at [Kraken](https://www.kraken.com) and generate API keys\n\n- Spot Trading: https://www.kraken.com/u/security/api\n- Futures Trading: https://futures.kraken.com/trade/settings/api (see _[help](https://docs.futures.kraken.com/#introduction-generate-api-keys)_)\n- Futures Sandbox: https://demo-futures.kraken.com/settings/api\n\n### 3. Start using the provided example scripts\n\n### 4. Error handling\n\nIf any unexpected behavior occurs, please check \u003cb style=\"color: yellow\"\u003eyour\nAPI permissions\u003c/b\u003e, \u003cb style=\"color: yellow\"\u003erate limits\u003c/b\u003e, update the\npython-kraken-sdk, see the [Troubleshooting](#trouble) section, and if the error\npersists please open an issue.\n\n\u003ca name=\"cliusage\"\u003e\u003c/a\u003e\n\n# 📍 Command-line interface\n\nThe python-kraken-sdk provides a command-line interface to access the Kraken API\nusing basic instructions while performing authentication tasks in the\nbackground. The Spot and Futures API are accessible and follow the pattern\n`kraken {spot,futures} [OPTIONS] URL`. See examples below.\n\n```bash\n# get server time\nkraken spot https://api.kraken.com/0/public/Time\n{'unixtime': 1716707589, 'rfc1123': 'Sun, 26 May 24 07:13:09 +0000'}\n\n# get user's balances\nkraken spot --api-key=\u003capi-key\u003e --secret-key=\u003csecret-key\u003e -X POST https://api.kraken.com/0/private/Balance\n{'ATOM': '17.28229999', 'BCH': '0.0000077100', 'ZUSD': '1000.0000'}\n\n# get user's trade balances\nkraken spot --api-key=\u003capi-key\u003e --secret-key=\u003csecret-key\u003e -X POST https://api.kraken.com/0/private/TradeBalance --data '{\"asset\": \"DOT\"}'\n{'eb': '2.8987347115', 'tb': '1.1694303513', 'm': '0.0000000000', 'uv': '0', 'n': '0.0000000000', 'c': '0.0000000000', 'v': '0.0000000000', 'e': '1.1694303513', 'mf': '1.1694303513'}\n\n# get 1D candles for a futures instrument\nkraken futures https://futures.kraken.com/api/charts/v1/spot/PI_XBTUSD/1d\n{'candles': [{'time': 1625616000000, 'open': '34557.84000000000', 'high': '34803.20000000000', 'low': '33816.32000000000', 'close': '33880.22000000000', 'volume': '0' ...\n\n# get user's open futures positions\nkraken futures --api-key=\u003capi-key\u003e --secret-key=\u003csecret-key\u003e https://futures.kraken.com/derivatives/api/v3/openpositions\n{'result': 'success', 'openPositions': [], 'serverTime': '2024-05-26T07:15:38.91Z'}\n```\n\n... All endpoints of the Kraken Spot and Futurs API can be accessed like that.\n\n\u003ca name=\"spotusage\"\u003e\u003c/a\u003e\n\n# 📍 Spot Clients\n\nThe python-kraken-sdk provides lots of functions to easily access most of the\nREST and websocket endpoints of the Kraken Cryptocurrency Exchange API. Since\nthese endpoints and their parameters may change, all implemented endpoints are\ntested on a regular basis.\n\nThe Kraken Spot API can be accessed by executing requests to the endpoints\ndirectly using the `request` method provided by any client. This is demonstrated\nbelow.\n\nSee https://docs.kraken.com/api/docs/guides/global-intro for information about\nthe available endpoints and their usage.\n\n### `SpotClient`\n\nThe Spot client provides access to all un-and authenticated endpoints of\nKraken's Spot API.\n\n```python\nfrom kraken.spot import SpotClient\n\nclient = SpotClient(key=\"\u003cyour-api-key\u003e\", secret=\"\u003cyour-secret-key\u003e\")\nprint(client.request(\"POST\", \"/0/private/Balance\"))\n```\n\n### `SpotAsyncClient`\n\nThe async Spot client allows for asynchronous access to Kraken's Spot API\nendpoints. Below are two examples demonstrating its usage.\n\nUsing SpotAsyncClient without a context manager; In this example, the client is\nmanually closed after the request is made.\n\n```python\nimport asyncio\nfrom kraken.spot import SpotAsyncClient\n\nasync def main():\n    client = SpotAsyncClient(key=\"\u003cyour-api-key\u003e\", secret=\"\u003cyour-secret-key\u003e\")\n    try:\n        response = await client.request(\"POST\", \"/0/private/Balance\")\n        print(response)\n    finally:\n        await client.close()\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\nUsing SpotAsyncClient as a context manager; This example demonstrates the use of\nthe context manager, which ensures the client is automatically closed after the\nrequest is completed.\n\n```python\nimport asyncio\nfrom kraken.spot import SpotAsyncClient\n\nasync def main():\n    async with SpotAsyncClient(key=\"\u003cyour-api-key\u003e\", secret=\"\u003cyour-secret-key\u003e\") as client:\n        response = await client.request(\"POST\", \"/0/private/Balance\")\n        print(response)\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n\u003ca name=\"spotws\"\u003e\u003c/a\u003e\n\n### `SpotWSClient` (Websocket API)\n\nKraken offers two versions of their websocket API (V1 and V2). Since V2 is\noffers more possibilities, is way faster and easier to use, only the never\nversion is supported by this SDK.\n\nThe official documentation for can be found at:\n\n- https://docs.kraken.com/api/docs/guides/global-intro\n- https://docs.kraken.com/websockets-v2\n\nNote that authenticated Spot websocket clients can also un-/subscribe from/to\npublic feeds.\n\nThe example below can be found in an extended way in\n`examples/spot_ws_examples.py`.\n\n```python\nimport asyncio\nfrom kraken.spot import SpotWSClient\n\nclass Client(SpotWSClient):\n    \"\"\"Can be used to create a custom trading strategy\"\"\"\n\n    async def on_message(self, message):\n        \"\"\"Receives the websocket messages\"\"\"\n        if message.get(\"method\") == \"pong\" \\\n            or message.get(\"channel\") == \"heartbeat\":\n            return\n\n        print(message)\n        # Here we can access lots of methods, for example to create an order:\n        # if self.is_auth:  # only if the client is authenticated …\n        #     await self.send_message(\n        #         message={\n        #             \"method\": \"add_order\",\n        #             \"params\": {\n        #                 \"limit_price\": 1234.56,\n        #                 \"order_type\": \"limit\",\n        #                 \"order_userref\": 123456789,\n        #                 \"order_qty\": 1.0,\n        #                 \"side\": \"buy\",\n        #                 \"symbol\": \"BTC/USD\",\n        #                 \"validate\": True,\n        #             },\n        #         }\n        #     )\n        # … it is also possible to call regular REST endpoints\n        # but using the websocket messages is more efficient.\n        # You can also un-/subscribe here using self.subscribe/self.unsubscribe.\n\nasync def main():\n    try:\n        # Public/unauthenticated websocket client\n        client = Client()  # only use this one if you don't need private feeds\n        await client.start()\n        await client.subscribe(\n            params={\"channel\": \"ticker\", \"symbol\": [\"BTC/USD\", \"DOT/USD\"]}\n        )\n        await client.subscribe(\n            params={\"channel\": \"book\", \"depth\": 25, \"symbol\": [\"BTC/USD\"]}\n        )\n        # wait because unsubscribing is faster than unsubscribing … (just for that example)\n        await asyncio.sleep(3)\n        # print(client.active_public_subscriptions) # to list active subscriptions\n        await client.unsubscribe(\n            params={\"channel\": \"ticker\", \"symbol\": [\"BTC/USD\", \"DOT/USD\"]}\n        )\n        # …\n\n        # AS default, the authenticated client starts two websocket connections,\n        # one for authenticated and one for public messages. If there is no need\n        # for a public connection, it can be disabled using the ``no_public``\n        # parameter.\n        client_auth = Client(key=\"api-key\", secret=\"secret-key\", no_public=True)\n        await client_auth.start()\n        await client_auth.subscribe(params={\"channel\": \"balances\"})\n\n        while not client.exception_occur and not client_auth.exception_occur:\n            await asyncio.sleep(6)\n    finally:\n        await client.close()\n        await client_auth.close()\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n\u003ca name=\"futuresusage\"\u003e\u003c/a\u003e\n\n# 📍 Futures Clients\n\nThe Kraken Spot API can be accessed by executing requests to the endpoints\ndirectly using the `request` method provided by any client. This is demonstrated\nbelow.\n\nSee https://docs.kraken.com/api/docs/guides/global-intro for information about\nthe available endpoints and their usage.\n\n### `FuturesClient`\n\nThe simple Futures client provides access to all un-and authenticated endpoints.\n\n```python\nfrom kraken.futures import FuturesClient\n\nclient = FuturesClient(key=\"\u003cyour-api-key\u003e\", secret=\"\u003cyour-secret-key\u003e\")\nprint(client.request(\"GET\", \"/derivatives/api/v3/accounts\"))\n```\n\n### `FuturesAsyncClient`\n\nThe async Futures client allows for asynchronous access to Kraken's Futures\nendpoints. Below are two examples demonstrating its usage.\n\nUsing FuturesAsyncClient without a context manager; In this example, the client\nis manually closed after the request is made.\n\n```python\nimport asyncio\nfrom kraken.futures import FuturesAsyncClient\n\nasync def main():\n    client = FuturesAsyncClient(key=\"\u003cyour-api-key\u003e\", secret=\"\u003cyour-secret-key\u003e\")\n    try:\n        response = await client.request(\"GET\", \"/derivatives/api/v3/accounts\")\n        print(response)\n    finally:\n        await client.close()\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\nUsing FuturesAsyncClient as context manager; This example demonstrates the use\nof the context manager, which ensures the client is automatically closed after\nthe request is completed.\n\n```python\nimport asyncio\nfrom kraken.futures import FuturesAsyncClient\n\nasync def main():\n    async with FuturesAsyncClient(key=\"\u003cyour-api-key\u003e\", secret=\"\u003cyour-secret-key\u003e\") as client:\n        response = await client.request(\"GET\", \"/derivatives/api/v3/accounts\")\n        print(response)\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n\u003ca name=\"futuresws\"\u003e\u003c/a\u003e\n\n### `FuturesWSClient` (Websocket API)\n\nNot only REST, also the websocket API for Kraken Futures is available. Examples\nare shown below and demonstrated in `examples/futures_ws_examples.py`.\n\n- https://docs.futures.kraken.com/#websocket-api\n\nNote: Authenticated Futures websocket clients can also un-/subscribe from/to\npublic feeds.\n\n```python\nimport asyncio\nfrom kraken.futures import FuturesWSClient\n\nclass Client(FuturesWSClient):\n\n    async def on_message(self, event):\n        print(event)\n\nasync def main():\n    try:\n        # Public/unauthenticated websocket connection\n        client = Client()\n        await client.start()\n\n        products = [\"PI_XBTUSD\", \"PF_ETHUSD\"]\n\n        # subscribe to a public websocket feed\n        await client.subscribe(feed=\"ticker\", products=products)\n        # await client.subscribe(feed=\"book\", products=products)\n        # …\n\n        # unsubscribe from a public websocket feed\n        # await client.unsubscribe(feed=\"ticker\", products=products)\n\n        # Private/authenticated websocket connection (+public)\n        client_auth = Client(key=\"key-key\", secret=\"secret-key\")\n        await client_auth.start()\n\n        # print(client_auth.get_available_private_subscription_feeds())\n\n        # subscribe to a private/authenticated websocket feed\n        await client_auth.subscribe(feed=\"fills\")\n        await client_auth.subscribe(feed=\"open_positions\")\n        await client_auth.subscribe(feed=\"open_orders\")\n        # …\n\n        # unsubscribe from a private/authenticated websocket feed\n        await client_auth.unsubscribe(feed=\"fills\")\n\n        while not client.exception_occur and not client_auth.exception_occur:\n            await asyncio.sleep(6)\n    finally:\n        await client.close()\n        await client_auth.close()\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n---\n\n\u003ca name=\"contribution\"\u003e\u003c/a\u003e\n\n# 🆕 Contributions\n\n… are welcome - but:\n\n- First check if there is an existing issue or PR that addresses your\n  problem/solution. If not - create one first - before creating a PR.\n- Typo fixes, project configuration, CI, documentation or style/formatting PRs\n  will be rejected. Please create an issue for that.\n- PRs must provide a reasonable, easy to understand and maintain solution for an\n  existing problem. You may want to propose a solution when creating the issue\n  to discuss the approach before creating a PR.\n- Please have a look at [CONTRIBUTION.md](./CONTRIBUTING.md).\n\n---\n\n\u003ca name=\"trouble\"\u003e\u003c/a\u003e\n\n# 🚨 Troubleshooting\n\n- Check if you downloaded and installed the **latest version** of the\n  python-kraken-sdk.\n- Check the **permissions of your API keys** and the required permissions on the\n  respective endpoints.\n- If you get some Cloudflare or **rate limit errors**, please check your Kraken\n  Tier level and maybe apply for a higher rank if required.\n- **Use different API keys for different algorithms**, because the nonce\n  calculation is based on timestamps and a sent nonce must always be the highest\n  nonce ever sent of that API key. Having multiple algorithms using the same\n  keys will result in invalid nonce errors.\n- Always keep an eye on https://status.kraken.com/ when encountering\n  connectivity problems.\n\n---\n\n\u003ca name=\"notes\"\u003e\u003c/a\u003e\n\n# 📝 Notes\n\nThe versioning scheme follows the pattern `v\u003cMajor\u003e.\u003cMinor\u003e.\u003cPatch\u003e`. Here's\nwhat each part signifies:\n\n- **Major**: This denotes significant changes that may introduce new features or\n  modify existing ones. It's possible for these changes to be breaking, meaning\n  backward compatibility is not guaranteed. To avoid unexpected behavior, it's\n  advisable to specify at least the major version when pinning dependencies.\n- **Minor**: This level indicates additions of new features or extensions to\n  existing ones. Typically, these changes do not break existing implementations.\n- **Patch**: Here, you'll find bug fixes, documentation updates, and changes\n  related to continuous integration (CI). These updates are intended to enhance\n  stability and reliability without altering existing functionality.\n\nCoding standards are not always followed to make arguments and function names as\nsimilar as possible to those of the Kraken API documentations.\n\n\u003ca name=\"considerations\"\u003e\u003c/a\u003e\n\n# Considerations\n\nThe tool aims to be fast, easy to use and maintain. In the past, lots of clients\nwere implemented, that provided functions for almost all available endpoints of\nthe Kraken API. The effort to maintain this collection grew to a level where it\nwas not possible to check various changelogs to apply new updates on a regular\nbasis. Instead, it was decided to concentrate on the `request` functions of\nthe `SpotClient`, `SpotAsyncClient`, `FuturesClient` and the\n`FuturesAsyncClient` (as well as their websocket client implementations). All\nthose clients named \"User\", \"Trade\", \"Market\", \"Funding\" and so on will no\nlonger be extended, but maintained to a certain degree.\n\n\u003ca name=\"references\"\u003e\u003c/a\u003e\n\n# 🔭 References\n\n- https://python-kraken-sdk.readthedocs.io/en/stable\n- https://docs.kraken.com/api/\n- https://docs.kraken.com/api/docs/guides/global-intro\n- https://support.kraken.com/hc/en-us/sections/360012894412-Futures-API\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtschwertfeger%2Fpython-kraken-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbtschwertfeger%2Fpython-kraken-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtschwertfeger%2Fpython-kraken-sdk/lists"}