{"id":22196663,"url":"https://github.com/druids/clj-krakenx","last_synced_at":"2025-03-24T22:40:12.015Z","repository":{"id":57713453,"uuid":"124423098","full_name":"druids/clj-krakenx","owner":"druids","description":"A client for Kraken Bitcoin Exchange API based on clj-http.client","archived":false,"fork":false,"pushed_at":"2018-03-12T13:02:11.000Z","size":37,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-30T02:14:12.223Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/druids.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-08T17:07:59.000Z","updated_at":"2018-03-12T13:02:13.000Z","dependencies_parsed_at":"2022-09-06T02:10:58.545Z","dependency_job_id":null,"html_url":"https://github.com/druids/clj-krakenx","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/druids%2Fclj-krakenx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/druids%2Fclj-krakenx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/druids%2Fclj-krakenx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/druids%2Fclj-krakenx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/druids","download_url":"https://codeload.github.com/druids/clj-krakenx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245366207,"owners_count":20603438,"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":[],"created_at":"2024-12-02T14:16:01.301Z","updated_at":"2025-03-24T22:40:11.994Z","avatar_url":"https://github.com/druids.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"clj-krakenx\n===========\n\nA client for [Kraken Bitcoin Exchange API](https://www.kraken.com/help/api) based on [clj-http.client](https://clojars.org/clj-http).\n\n[![CircleCI](https://circleci.com/gh/druids/clj-krakenx.svg?style=svg)](https://circleci.com/gh/druids/clj-krakenx)\n[![Dependencies Status](https://jarkeeper.com/druids/clj-krakenx/status.png)](https://jarkeeper.com/druids/clj-krakenx)\n[![License](https://img.shields.io/badge/MIT-Clause-blue.svg)](https://opensource.org/licenses/MIT)\n\n\nLeiningen/Boot\n--------------\n\n```clojure\n[clj-krakenx \"0.2.0\"]\n```\n\n\nDocumentation\n-------------\n\nAll functions are designed to return errors instead of throwing exceptions (except `:pre` in a function).\n\nAll API calls return an original HTTP response with another keys:\n- `:krakenx/result` a parsed success response\n- `:krakenx/error` a parsed error response\n- `:krakenx/unmarshal-error` an error message that occurred during unmarshaling invalid JSON\n\nTo be able to run examples this line is needed:\n\n```clojure\n(require '[clj-krakenx.core :as krakenx])\n```\n\n### get-time\n\nReturns server's time\n\n```clojure\n(:krakenx/result (krakenx/get-time)) ;; {:unixtime 1520605639, :rfc1123 \"Fri,  9 Mar 18 14:27:19 +0000\"}\n```\n\nWhen you need to mock a response, you can pass a host to a caller\n\n```clojure\n(krakenx/get-time \"my-mock-domain.localhost\")\n```\n\n\n### get-asset-info\n\nReturns asset information. Request's options can be passed as hash-map. Assets are joined by a comma automatically,\nthus you don't need to do it by a hand.\n\n```clojure\n(:krakenx/result (krakenx/get-asset-info {:asset [\"ZEUR\" \"XETH\"]}))\n;; {:XETH {:aclass \"currency\", :altname \"ETH\", :decimals 10, :display_decimals 5},\n;;  :ZEUR {:aclass \"currency\", :altname \"EUR\", :decimals 4, :display_decimals 2}}\n```\n\nError response example\n\n```clojure\n(:krakenx/error (krakenx/get-asset-info {:asset [\"foo\"]})) ;; [\"EQuery:Unknown asset\"]\n```\n\nOf course a host can by passed as last argument\n\n```clojure\n(krakenx/get-asset-info {:asset [\"ZEUR\" \"XETH\"]} \"my-mock-domain.localhost\"))\n```\n\n\n### get-tradable-asset-pairs\n\nReturns tradable asset pairs. Request's options can be passed as hash-map. Pairs are joined by a comma automatically,\nthus you don't need to do it by a hand.\n\nTo get all tradable asset pairs\n\n```clojure\n(:krakenx/result (krakenx/get-tradable-asset-pairs))\n;; {:EOSETH {:lot_decimals 8, :altname \"EOSETH\", :aclass_base \"currency\", :margin_call 80, :leverage_buy [], ...\n```\n\nTo get margin of XBT/EUR\n```clojure\n(:krakenx/result (krakenx/get-tradable-asset-pairs {:info \"margin\", :pair [\"XXBTZEUR\"]}))\n;; {:XXBTZEUR {:margin_call 80, :margin_level 40}}\n```\n\nOf course a host can by passed as last argument\n\n```clojure\n(:krakenx/result (krakenx/get-tradable-asset-pairs {:info \"margin\", :pair [\"XXBTZEUR\"]} \"my-mock-domain.localhost\"))\n;; {:XXBTZEUR {:margin_call 80, :margin_level 40}}\n```\n\n### get-ticker-information\n\nReturns ticker information\n\n```clojure\n(:krakenx/result (krakenx/get-ticker-info {:pair [\"BTCEUR\"]}))\n;; {:XXBTZEUR {:v [\"4481.33532282\" \"13957.63622703\"], :o \"7748.60000\", ...\n```\n\n\n```clojure\n(:krakenx/result (krakenx/get-ticker-info {:pair [\"BTCEUR\"]}))\n;; {:XXBTZEUR {:v [\"4481.33532282\" \"13957.63622703\"], :o \"7748.60000\", ...\n```\n\nOf course a host can by passed as last argument\n\n```clojure\n(:krakenx/result (krakenx/get-ohlc-data {:pair \"BTCEUR\"} \"my-mock-domain.localhost\"))\n;; {:XXBTZEUR {:v [\"4481.33532282\" \"13957.63622703\"], :o \"7748.60000\", ...\n```\n\n### get-ohlc-data\n\nReturns OHLC data\n\n```clojure\n(:krakenx/result (krakenx/get-ohlc-data {:pair \"BTCEUR\"}))\n;; {:XXBTZEUR [[1519561800 \"7817.4\" \"7817.4\" \"7727.2\" \"7757.9\" \"7767.6\" \"232.23015300\" 1057] [1519563600 \"7755.1\" \"7800.0\" \"7710.0\" \"7718.9\" \"7766.0\" \"223.74132895\" 578], ... \n```\n\nGet OHLC data within interval 30 minutes\n\n```clojure\n(:krakenx/result (krakenx/get-ohlc-data {:pair \"BTCEUR\", :interval 30}))\n;; {:XXBTZEUR [[1519561800 \"7817.4\" \"7817.4\" \"7727.2\" \"7757.9\" \"7767.6\" \"232.23015300\" 1057] [1519563600 \"7755.1\" \"7800.0\" \"7710.0\" \"7718.9\" \"7766.0\" \"223.74132895\" 578], ... \n```\n\n\nOf course a host can by passed as last argument\n\n```clojure\n(:krakenx/result (krakenx/get-ticker-info {:pair [\"BTCEUR\"]} \"my-mock-domain.localhost\"))\n;; {:XXBTZEUR [[1519561800 \"7817.4\" \"7817.4\" \"7727.2\" \"7757.9\" \"7767.6\" \"232.23015300\" 1057] [1519563600 \"7755.1\" \"7800.0\" \"7710.0\" \"7718.9\" \"7766.0\" \"223.74132895\" 578], ... \n```\n\n### get-orderbook\n\nReturns recent trades\n\n```clojure\n(:krakenx/result (krakenx/get-orderbook {:pair \"BTCEUR\"}))\n;; {:XXBTZEUR {:asks [[\"7969.50000\" \"0.159\" 1520858436], ...\n```\n\nGet trade data within since ID\n\n```clojure\n(:krakenx/result (krakenx/get-orderbook {:pair \"BTCEUR\", :count 2}))\n;; {:XXBTZEUR {:asks [[\"7961.50000\" \"0.034\" 1520858689] [\"7962.00000\" \"1.108\" 1520858697]]\n;;             :bids [[\"7959.90000\" \"0.013\" 1520858696] [\"7957.80000\" \"2.046\" 1520858698]]}}\n```\n\n\nOf course a host can by passed as last argument\n\n```clojure\n(:krakenx/result (krakenx/get-orderbook {:pair \"BTCEUR\"} \"my-mock-domain.localhost\"))\n;; {:XXBTZEUR {:asks [[\"7969.50000\" \"0.159\" 1520858436], ...\n```\n\n### get-recent-trades\n\nReturns recent trades\n\n```clojure\n(:krakenx/result (krakenx/get-recent-trades {:pair \"BTCEUR\"}))\n;; {:XXBTZEUR [[\"7979.60000\" \"1.50000000\" 1.5208551442189E9 \"b\" \"m\" \"\"], ...\n```\n\nGet trade data within since ID\n\n```clojure\n(:krakenx/result (krakenx/get-recent-trades {:pair \"BTCEUR\", :since 1504035462}))\n;; {:XXBTZEUR [[\"7979.60000\" \"1.50000000\" 1.5208551442189E9 \"b\" \"m\" \"\"], ...\n```\n\n\nOf course a host can by passed as last argument\n\n```clojure\n(:krakenx/result (krakenx/get-recent-trades {:pair \"BTCEUR\"} \"my-mock-domain.localhost\"))\n;; {:XXBTZEUR [[\"7979.60000\" \"1.50000000\" 1.5208551442189E9 \"b\" \"m\" \"\"], ...\n```\n\n### get-recent-spread-data\n\nReturns recent spread data\n\n```clojure\n(:krakenx/result (krakenx/get-recent-spread-data {:pair \"BTCEUR\"}))\n;; {:XXBTZEUR [[1520858621 \"7949.10000\" \"7950.00000\"], ...\n```\n\nGet spread data within since ID\n\n```clojure\n(:krakenx/result (krakenx/get-recent-spread-data {:pair \"BTCEUR\", :since 1504035462}))\n;; {:XXBTZEUR [[1520858621 \"7949.10000\" \"7950.00000\"], ...\n\n\nOf course a host can by passed as last argument\n\n```clojure\n(:krakenx/result (krakenx/get-recent-spread-data {:pair \"BTCEUR\"} \"my-mock-domain.localhost\"))\n;; {:XXBTZEUR [[1520858621 \"7949.10000\" \"7950.00000\"], ...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdruids%2Fclj-krakenx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdruids%2Fclj-krakenx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdruids%2Fclj-krakenx/lists"}