krakenexapi.api

Raw API

class krakenexapi.api.RawKrakenExAPI(key: Optional[str] = None, secret: Optional[str] = None)[source]

Bases: object

Raw Kraken Exchange API adspter.

api_domain = 'https://api.kraken.com'
load_key(path: Optional[os.PathLike] = None)[source]
nonce() → int[source]
_query_raw(path: str, data: Dict[str, Any], headers: Dict[str, Any], timeout: Optional[Tuple[int, float]] = None) → Dict[str, Any][source]
_sign(api_path: str, data: Dict[str, Any]) → str[source]
query_public(method: str, **kwargs) → Dict[str, Any][source]
query_private(method: str, otp: Optional[str] = None, **kwargs) → Dict[str, Any][source]
krakenexapi.api.NONCE_OFFSET = -1577836800.0

Nonce value offset, nonce value will start from year 2020

krakenexapi.api.API_METHODS_PUBLIC = ['Time', 'SystemStatus', 'Assets', 'AssetPairs', 'Ticker', 'OHLC', 'Depth', 'Trades', 'Spread']

List of allowed public endpoints

krakenexapi.api.API_METHODS_PRIVATE = ['Balance', 'TradeBalance', 'TradeVolume', 'DepositMethods', 'DepositAddresses', 'DepositStatus', 'WithdrawInfo', 'Withdraw', 'WithdrawCancel', 'WithdrawStatus', 'WalletTransfer', 'OpenOrders', 'QueryOrders', 'OpenPositions', 'ClosedOrders', 'QueryOrders', 'QueryTrades', 'TradesHistory', 'AddOrder', 'CancelOrder', 'Ledgers', 'QueryLedgers', 'AddExport', 'RetrieveExport', 'ExportStatus', 'RemoveExport']

List of allowed private endpoints

Notes

The nonce() will use an offset of NONCE_OFFSET for its value - so, the nonce value is comparatively smaller compared to the standard unix timestamp. Try to avoid using the same API key for different applications!

Basic Kraken Exchange API methods

Wraps the endpoints in API_METHODS_PUBLIC and API_METHODS_PRIVATE with simplified parameters and corrected return values. It will try to call rate limit both public and, when provided a tier (verification level), private API endpoints to avoid possible blacklisting. The full description of methods, parameters and return values csn be found in the Official Kraken REST API.

class krakenexapi.api.BasicKrakenExAPI(key: Optional[str] = None, secret: Optional[str] = None, tier: Optional[str] = None)[source]

Bases: krakenexapi.api.BasicKrakenExAPIPublicMethods, krakenexapi.api.BasicKrakenExAPIPrivateUserDataMethods, krakenexapi.api.BasicKrakenExAPIPrivateUserTradingMethods, krakenexapi.api.BasicKrakenExAPIPrivateUserFundingMethods, krakenexapi.api.RawKrakenExAPI

_query_raw(path: str, data: Dict[str, Any], headers: Dict[str, Any], timeout: Optional[Tuple[int, float]] = None) → Dict[str, Any][source]

Public Endpoints

class krakenexapi.api.BasicKrakenExAPIPublicMethods[source]
_get_server_time() → Dict[str, Any][source]
get_server_time() → datetime.datetime[source]
get_system_status()[source]
get_asset_info(asset: Optional[Union[str, List[str]]] = None) → Dict[str, Dict[str, Any]][source]
_get_asset_pairs(pair: Optional[Union[str, List[str]]] = None, info: Optional[str] = None) → Dict[str, Dict[str, Any]][source]
_get_asset_pairs_static_values() → Dict[str, Union[int, float, str]][source]
get_asset_pairs(pair: Optional[Union[str, List[str]]] = None, info: Optional[str] = None) → Dict[str, Dict[str, Any]][source]
_get_ticker_information(pair: Union[str, List[str]]) → Dict[str, Dict[str, Any]][source]
get_ticker_information(pair: Union[str, List[str]]) → Dict[str, Dict[str, Any]][source]
_get_ohlc_data(pair: str, interval: Optional[int] = None, since: Optional[int] = None) → Tuple[List[List[Any]], int][source]
get_ohlc_data(pair: str, interval: Optional[int] = None, since: Optional[int] = None) → Tuple[List[List[Any]], int][source]
_get_order_book(pair: str, count: Optional[int] = None) → Tuple[List, List][source]
get_order_book(pair: str, count: Optional[int] = None) → Tuple[List, List][source]
_get_recent_trades(pair: str, since: Optional[int] = None) → Tuple[List[List[Any]], int][source]
get_recent_trades(pair: str, since: Optional[int] = None) → Tuple[List[List[Any]], int][source]
_get_recent_spread_data(pair: str, since: Optional[int] = None) → Tuple[List[List[Any]], int][source]
get_recent_spread_data(pair: str, since: Optional[int] = None) → Tuple[List[List[Any]], int][source]

Private Endpoints

class krakenexapi.api.BasicKrakenExAPIPrivateUserDataMethods[source]
get_account_balance() → Dict[str, float][source]
get_trade_balance(asset: Optional[str] = None) → Dict[str, float][source]
get_open_orders(trades: Optional[bool] = None, userref: Optional[str] = None) → Dict[str, Dict[str, Any]][source]
get_closed_orders(trades: Optional[bool] = None, userref: Optional[str] = None, start: Optional[Union[int, str]] = None, end: Optional[Union[int, str]] = None, offset: Optional[int] = None, closetime: Optional[str] = None) → Tuple[Dict[str, Dict[str, Any]], int][source]
get_orders_info(txid: Union[str, List[str]], trades: Optional[bool] = None, userref: Optional[str] = None) → Dict[str, Dict[str, Any]][source]
get_trades_history(type: Optional[str] = None, trades: Optional[bool] = None, start: Optional[Union[int, str]] = None, end: Optional[Union[int, str]] = None, offset: Optional[int] = None) → Tuple[Dict[str, Dict[str, Any]], int][source]
get_trades_info(txid: Union[str, List[str]], trades: Optional[bool] = None) → Dict[str, Dict[str, Any]][source]
get_open_positions(txid: Union[str, List[str]], docalcs: Optional[bool] = None, trades: Optional[bool] = None, consolidation: Optional[str] = None) → Dict[str, Dict[str, Any]][source]
get_ledgers_info(asset: Optional[Union[str, List[str]]] = None, type: Optional[str] = None, start: Optional[Union[int, str]] = None, end: Optional[Union[int, str]] = None, offset: Optional[int] = None) → Tuple[Dict[str, Dict[str, Any]], int][source]
get_ledgers(lid: Union[str, List[str]]) → Dict[str, Dict[str, Any]][source]
get_trade_volume(pair: Optional[Union[str, List[str]]] = None, fee_info: Optional[bool] = None) → Dict[str, Any][source]
class krakenexapi.api.BasicKrakenExAPIPrivateUserTradingMethods[source]
class krakenexapi.api.BasicKrakenExAPIPrivateUserFundingMethods[source]

Call Rate Limiting

The Kraken Exchange used different quotas for its API methods, see the article What are the API rate limits?.

class krakenexapi.api._CallRateLimitInfo(limit: float = 1, cost: float = 1, decay: float = 1.0)[source]
decay()[source]
time_to_call(cost: float) → float[source]
can_call(cost: Optional[Union[int, float]] = None) → bool[source]
check(cost: Optional[Union[int, float]] = None) → bool[source]
check_and_wait(cost: Optional[Union[int, float]] = None)[source]
class krakenexapi.api.KrakenExAPICallRateLimiter(tier: Optional[str] = None)[source]
_reset_account_crl()[source]
static _is_private(method: str)[source]
static _get_cost(method: str) → int[source]
check_call(method: str, wait: bool = True) → bool[source]

Exceptions

exception krakenexapi.api.KrakenExAPIError[source]

Bases: Exception

Generic error

exception krakenexapi.api.NoPrivateKey[source]

Bases: krakenexapi.api.KrakenExAPIError

Thrown if trying to use a private Kraken Exchange API without a private key.

exception krakenexapi.api.NoSuchAPIMethod[source]

Bases: krakenexapi.api.KrakenExAPIError

Error thrown if trying to use an invalid API method.