Introduction
The Institutional APIs enable you to create and manage multiple subaccounts under one main account. You can use them for different trading strategies per subaccount, to manage trading for your customers, or move assets between your accounts.
Before you start
Before you start integrating, make sure you have:
- Signed up for a Bitvavo corporate account
- Enabled two-factor authentication
- Created an API key and secret with the following permissions:
- Include all subaccounts
- Internal Transfer
- Administrative
You can use the Institutional dashboard at https://account.bitvavo.com/company/orders to manually create subaccounts, add or transfer assets, and check balances.
You can also use this dashboard to create API credentials for your subaccounts.
Authentication
Learn how to authenticate your requests to Bitvavo Institutional APIs.~
Headers
To authenticate requests, you need to add a signature with the following HTTP headers in every request to Bitvavo REST API:
Bitvavo-Access-Key(required): an API Key with the required permissions.Bitvavo-Access-Timestamp(required): a Unix timestamp in milliseconds of the time you make the request.Bitvavo-Access-Signature(required): a HMAC-SHA256 hex-encoded string of the following values:secret: the API secret for yourBitvavo-Access-Key.timestamp: the same Unix timestamp as forBitvavo-Access-Timestamp.method: the HTTP method of the request. For example, GET or POST.path: the API endpoint to which you make the request. For example,/order.body: for the GETmethod, an empty string. For every othermethod, a request body as a string.
Bitvavo-Access-Window(optional): the execution timeout in milliseconds afterBitvavo-Access-Timestamp. The default value is 10000, and the maximum value is 60000.
Create a signature
To create the HMAC-SHA256 hex-encoded Bitvavo-Access-Signature (example shown for POST /v2/subaccounts):
- Prepare the header values. For example:
timestamp: 1548172481125method: POSTpath: /v2/subaccountsbody:{"name":"MY_SUBACCOUNT"}(empty string for GET)
- Concatenate the values without a delimiter:
Concatenated string
1548172481125POST/v2/subaccounts{"name":"MY_SUBACCOUNT"} - Prepare the API
secretfor yourBitvavo-Access-Key. For example:Example API secretbitvavo - Using your API
secret, encode the concatenated string to HMAC-SHA256:Signature encoded with the Example API secretHQBEGVb0mXdRE4gWbmrP09DnYrO03Ca457gxn0OBZ6hMCFgnRJQoJNtsjPvlACPz7FpG51m2tRTQooKi/h2RNdGJuL18EFA3mMgXiG2FT10XoXd8iUxflXJlZ9EUf9OJkyZGM07Q4L7DlOBUZ131GA==
Rate limits
There are limits to the number of API requests that you can make within one minute. Every request is allocated a number of Rate limit weight points which are specified on the page of the individual request.
The calculation for your weight points is the same as for the other REST APIs.