Python client for dYdX (v3 API).
The library is currently tested against Python versions 2.7, 3.4, 3.5, and 3.6
The dydx-v3-python
package is available on PyPI. Install with pip
:
pip install dydx-v3-python
The Client
object can be created with different levels of authentication depending on which features are needed. For more complete examples, see the examples directory, as well as the integration tests.
No authentication information is required to access public endpoints.
from dydx3 import Client
from web3 import Web3
#
# Access public API endpoints.
#
public_client = Client(
host='http://localhost:8080',
)
public_client.public.get_markets()
One of the following is required:
api_key_credentials
eth_private_key
web3
web3_account
web3_provider
#
# Access private API endpoints, without providing a STARK private key.
#
private_client = Client(
host='http://localhost:8080',
api_key_credentials={ 'key': '...', ... },
)
private_client.private.get_orders()
private_client.private.create_order(
# No STARK key, so signatures are required for orders and withdrawals.
signature='...',
# ...
)
#
# Access private API endpoints, with a STARK private key.
#
private_client_with_key = Client(
host='http://localhost:8080',
api_key_credentials={ 'key': '...', ... },
stark_private_key='...',
)
private_client.private.create_order(
# Order will be signed using the provided STARK private key.
# ...
)
One of the following is required:
eth_private_key
web3
web3_account
web3_provider
#
# Onboard a new user or manage API keys, without providing private keys.
#
web3_client = Client(
host='http://localhost:8080',
web3_provider=Web3.HTTPProvider('http://localhost:8545'),
)
web3_client.onboarding.create_user(
stark_public_key='...',
ethereum_address='...',
)
web3_client.api_keys.create_api_key(
ethereum_address='...',
)
#
# Onboard a new user or manage API keys, with private keys.
#
web3_client_with_keys = Client(
host='http://localhost:8080',
stark_private_key='...',
eth_private_key='...',
)
web3_client_with_keys.onboarding.create_user()
web3_client_with_keys.api_keys.create_api_key()