Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
Introduction
Welcome to Blockchain.com's Exchange API and developer documentation. These documents detail and give examples of various functionality offered by the API such as receiving real time market data, requesting balance information and performing trades.
To get started
- Create or log into your existing Blockchain.com Exchange account
- Select API from the drop down menu
- Fill out form and click “Create New API Key Now”
Once generated you can view your keys under API Settings. Please be aware that the API key can only be used once it was verified via email.
The API key must be set via the X-API-Token header.
The base URL to be used for all calls is https://api.blockchain.com/v3/exchange
Autogenerated clients for this API can be found here.
Base URLs:
Authentication
- API Key (ApiKeyAuth)
- Parameter Name: X-API-Token, in: header.
Market data
Retrieve current prices and markets
getL2OrderBook
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/l2/{symbol} \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/l2/{symbol} HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/l2/{symbol}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/l2/{symbol}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/l2/{symbol}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/l2/{symbol}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/l2/{symbol}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/l2/{symbol}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /l2/{symbol}
L2 Order Book
Level 2 Order Book data is available through the l2 channel. Each entry in bids and asks arrays is a price level, along with its price (px), quantity (qty) and number of orders (num) attributes.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| symbol | path | symbol | true | Symbol |
Example responses
200 Response
{
"symbol": "BTC-USD",
"bids": [
{
"px": "8723.45",
"qty": "1.45",
"num": "1"
}
],
"asks": [
{
"px": "8723.45",
"qty": "1.45",
"num": "1"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | OrderBook |
getL3OrderBook
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/l3/{symbol} \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/l3/{symbol} HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/l3/{symbol}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/l3/{symbol}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/l3/{symbol}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/l3/{symbol}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/l3/{symbol}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/l3/{symbol}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /l3/{symbol}
L3 Order Book
Level 3 Order Book data is available through the l3 channel. Each entry in bids and asks arrays is an order, along with its id (id), price (px) and quantity (qty) attributes. In contrast to the L2 order book, the L3 order book contains all individual orders without aggregation.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| symbol | path | symbol | true | Symbol |
Example responses
200 Response
{
"symbol": "BTC-USD",
"bids": [
{
"px": "8723.45",
"qty": "1.45",
"num": "1"
}
],
"asks": [
{
"px": "8723.45",
"qty": "1.45",
"num": "1"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | OrderBook |
getTickers
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/tickers \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/tickers HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/tickers',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/tickers',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/tickers', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/tickers', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/tickers");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/tickers", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /tickers
Price
Example responses
200 Response
[
{
"symbol": "BTC-USD",
"price_24h": "4998.0",
"volume_24h": "0.3015",
"last_trade_price": "5000.0"
}
]
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | Inline |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [PriceEvent] | false | none | none |
| » symbol | symbol | false | none | Blockchain symbol identifier |
| » price_24h | number(double) | false | none | none |
| » volume_24h | number(double) | false | none | none |
| » last_trade_price | number(double) | false | none | none |
getTickerBySymbol
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/tickers/{symbol} \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/tickers/{symbol} HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/tickers/{symbol}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/tickers/{symbol}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/tickers/{symbol}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/tickers/{symbol}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/tickers/{symbol}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/tickers/{symbol}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /tickers/{symbol}
Price
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| symbol | path | symbol | true | Symbol |
Example responses
200 Response
{
"symbol": "BTC-USD",
"price_24h": "4998.0",
"volume_24h": "0.3015",
"last_trade_price": "5000.0"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | PriceEvent |
getSymbols
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/symbols \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/symbols HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/symbols',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/symbols',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/symbols', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/symbols', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/symbols");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/symbols", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /symbols
Symbols
When the symbol is not halted the auction data in the message may be blank. When a symbol is in a halt state the auction data will populate as the book builds. When an opening time has been chosen, the auction-time field will show the opening time. Subsequent updates will be sent only if the symbol status changes in any way.
Example responses
200 Response
{
"property1": {
"base_currency": "BTC-USD",
"base_currency_scale": 8,
"counter_currency": "BTC-USD",
"counter_currency_scale": 2,
"min_price_increment": 10,
"min_price_increment_scale": 0,
"min_order_size": 10,
"min_order_size_scale": 2,
"max_order_size": 0,
"max_order_size_scale": 8,
"lot_size": 5,
"lot_size_scale": 2,
"status": "open",
"id": 1,
"auction_price": 0,
"auction_size": 0,
"auction_time": "1530",
"imbalance": 0
},
"property2": {
"base_currency": "BTC-USD",
"base_currency_scale": 8,
"counter_currency": "BTC-USD",
"counter_currency_scale": 2,
"min_price_increment": 10,
"min_price_increment_scale": 0,
"min_order_size": 10,
"min_order_size_scale": 2,
"max_order_size": 0,
"max_order_size_scale": 8,
"lot_size": 5,
"lot_size_scale": 2,
"status": "open",
"id": 1,
"auction_price": 0,
"auction_size": 0,
"auction_time": "1530",
"imbalance": 0
}
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | Inline |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » additionalProperties | SymbolStatus | false | none | none |
| »» base_currency | symbol | false | none | Blockchain symbol identifier |
| »» base_currency_scale | integer | false | none | The number of decimals the currency can be split in |
| »» counter_currency | symbol | false | none | Blockchain symbol identifier |
| »» counter_currency_scale | integer | false | none | The number of decimals the currency can be split in |
| »» min_price_increment | integer(int64) | false | none | The price of the instrument must be a multiple of min_price_increment * (10^-min_price_increment_scale) |
| »» min_price_increment_scale | integer | false | none | none |
| »» min_order_size | integer(int64) | false | none | The minimum quantity for an order for this instrument must be min_order_size*(10^-min_order_size_scale) |
| »» min_order_size_scale | integer | false | none | none |
| »» max_order_size | integer(int64) | false | none | The maximum quantity for an order for this instrument is max_order_size*(10^-max_order_size_scale). If this equal to zero, there is no limit |
| »» max_order_size_scale | integer | false | none | none |
| »» lot_size | integer(int64) | false | none | none |
| »» lot_size_scale | integer | false | none | none |
| »» status | string | false | none | Symbol status; open, close, suspend, halt, halt-freeze. |
| »» id | integer(int64) | false | none | none |
| »» auction_price | number(double) | false | none | If the symbol is halted and will open on an auction, this will be the opening price. |
| »» auction_size | number(double) | false | none | Opening size |
| »» auction_time | string | false | none | Opening time in HHMM format |
| »» imbalance | number(double) | false | none | Auction imbalance. If > 0 then there will be buy orders left over at the auction price. If < 0 then there will be sell orders left over at the auction price. |
Enumerated Values
| Property | Value |
|---|---|
| status | open |
| status | close |
| status | suspend |
| status | halt |
| status | halt-freeze |
getSymbolByName
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/symbols/{symbol} \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/symbols/{symbol} HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/symbols/{symbol}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/symbols/{symbol}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/symbols/{symbol}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/symbols/{symbol}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/symbols/{symbol}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/symbols/{symbol}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /symbols/{symbol}
Symbols
When the symbol is not halted the auction data in the message may be blank. When a symbol is in a halt state the auction data will populate as the book builds. When an opening time has been chosen, the auction-time field will show the opening time. Subsequent updates will be sent only if the symbol status changes in any way.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| symbol | path | symbol | true | Symbol |
Example responses
200 Response
{
"base_currency": "BTC-USD",
"base_currency_scale": 8,
"counter_currency": "BTC-USD",
"counter_currency_scale": 2,
"min_price_increment": 10,
"min_price_increment_scale": 0,
"min_order_size": 10,
"min_order_size_scale": 2,
"max_order_size": 0,
"max_order_size_scale": 8,
"lot_size": 5,
"lot_size_scale": 2,
"status": "open",
"id": 1,
"auction_price": 0,
"auction_size": 0,
"auction_time": "1530",
"imbalance": 0
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | SymbolStatus |
Trading
Post orders and get information about historical trades
getFees
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/fees \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/fees HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/fees',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/fees',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/fees', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/fees', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/fees");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/fees", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /fees
Get current fee level
Example responses
200 Response
{
"makerRate": "0.0014",
"takerRate": "0.0024",
"volumeInUSD": "1500.00"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | Fees |
getOrdersInternal
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/internal/orders \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/internal/orders HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/internal/orders',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/internal/orders',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/internal/orders', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/internal/orders', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/internal/orders");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/internal/orders", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /internal/orders
Get a list of orders directly from the ME
Returns orders as pulled directly from the ME
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| from | query | TimestampEpoch | false | Epoch timestamp in ms |
| orderId | query | integer(int64) | false | Last orderId seen in paginated responses. |
| limit | query | integer(int32) | false | Maximum amount of results to return in a single call. If omitted, 100 results are returned by default. |
Example responses
200 Response
{
"nextOrderId": "11111111",
"orders": [
{
"exOrdId": "11111111",
"clOrdId": "ABC",
"ordType": "MARKET",
"ordStatus": "FILLED",
"side": "BUY",
"price": 0.12345,
"text": "string",
"symbol": "BTC-USD",
"lastShares": "0.5678",
"lastPx": "3500.12",
"leavesQty": "10.0",
"cumQty": "0.123345",
"avgPx": "345.33",
"timestamp": "1592830770594"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | PaginatedOrderSummary |
getOrders
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/orders \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/orders HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/orders',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/orders',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/orders', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/orders', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/orders");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/orders", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /orders
Get a list orders
Returns live and historic orders, defaulting to live orders. Returns at most 100 results, use timestamp to paginate for further results
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| symbol | query | symbol | false | Only return results for this symbol |
| from | query | TimestampEpoch | false | Epoch timestamp in ms |
| to | query | TimestampEpoch | false | Epoch timestamp in ms |
| status | query | OrderStatus | false | Order Status |
| limit | query | integer(int32) | false | Maximum amount of results to return in a single call. If omitted, 100 results are returned by default. |
Enumerated Values
| Parameter | Value |
|---|---|
| status | OPEN |
| status | REJECTED |
| status | CANCELED |
| status | FILLED |
| status | PART_FILLED |
| status | EXPIRED |
| status | PENDING |
Example responses
200 Response
[
{
"exOrdId": "11111111",
"clOrdId": "ABC",
"ordType": "MARKET",
"ordStatus": "FILLED",
"side": "BUY",
"price": 0.12345,
"text": "string",
"symbol": "BTC-USD",
"lastShares": "0.5678",
"lastPx": "3500.12",
"leavesQty": "10.0",
"cumQty": "0.123345",
"avgPx": "345.33",
"timestamp": "1592830770594"
}
]
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | Inline |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [OrderSummary] | false | none | none |
| » exOrdId | ExchangeOrderId(int64) | false | none | The unique order id assigned by the exchange |
| » clOrdId | ClientOrderId | true | none | Reference field provided by client. Cannot exceed 20 characters, only alphanumeric characters are allowed. |
| » ordType | ordType | true | none | none |
| » ordStatus | OrderStatus | true | none | none |
| » side | side | true | none | "buy" for Buy, "sell" for Sell |
| » price | price(double) | false | none | The limit price for the order |
| » text | string | false | none | The reason for rejecting the order, if applicable |
| » symbol | symbol | true | none | Blockchain symbol identifier |
| » lastShares | number(double) | false | none | The executed quantity for the order's last fill |
| » lastPx | number(double) | false | none | The executed price for the last fill |
| » leavesQty | number(double) | false | none | For Open and Partially Filled orders this is the remaining quantity open for execution. For Canceled and Expired orders this is the quantity than was still open before cancellation/expiration. For Rejected order this is equal to orderQty. For other states this is always zero. |
| » cumQty | number(double) | false | none | The quantity of the order which has been filled |
| » avgPx | number(double) | false | none | Calculated the Volume Weighted Average Price of all fills for this order |
| » timestamp | TimestampEpoch(int64) | false | none | Time in ms since 01/01/1970 (epoch) |
Enumerated Values
| Property | Value |
|---|---|
| ordType | MARKET |
| ordType | LIMIT |
| ordType | STOP |
| ordType | STOPLIMIT |
| ordStatus | OPEN |
| ordStatus | REJECTED |
| ordStatus | CANCELED |
| ordStatus | FILLED |
| ordStatus | PART_FILLED |
| ordStatus | EXPIRED |
| ordStatus | PENDING |
| side | BUY |
| side | SELL |
createOrder
Code samples
# You can also use wget
curl -X POST https://api.blockchain.com/v3/exchange/orders \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
POST https://api.blockchain.com/v3/exchange/orders HTTP/1.1
Host: api.blockchain.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"clOrdId": "123456",
"ordType": "LIMIT",
"symbol": "BTC-USD",
"side": "BUY",
"orderQty": "0.1",
"price": "100"
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/orders',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.post 'https://api.blockchain.com/v3/exchange/orders',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.post('https://api.blockchain.com/v3/exchange/orders', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://api.blockchain.com/v3/exchange/orders', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/orders");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.blockchain.com/v3/exchange/orders", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /orders
Add an order
Body parameter
{
"clOrdId": "123456",
"ordType": "LIMIT",
"symbol": "BTC-USD",
"side": "BUY",
"orderQty": "0.1",
"price": "100"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| body | body | BaseOrder | true | Trade |
| » clOrdId | body | ClientOrderId | true | Reference field provided by client. Cannot exceed 20 characters, only alphanumeric characters are allowed. |
| » ordType | body | ordType | true | none |
| » symbol | body | symbol | true | Blockchain symbol identifier |
| » side | body | side | true | "buy" for Buy, "sell" for Sell |
| » orderQty | body | orderQty(double) | true | The order size in the terms of the base currency |
| » timeInForce | body | TimeInForce | false | "GTC" for Good Till Cancel, "IOC" for Immediate or Cancel, "FOK" for Fill or Kill, "GTD" Good Till Date |
| » price | body | price(double) | false | The limit price for the order |
| » expireDate | body | expireDate | false | expiry date in the format YYYYMMDD |
| » minQty | body | minQty(double) | false | The minimum quantity required for an IOC fill |
| » stopPx | body | price(double) | false | The limit price for the order |
Enumerated Values
| Parameter | Value |
|---|---|
| » ordType | MARKET |
| » ordType | LIMIT |
| » ordType | STOP |
| » ordType | STOPLIMIT |
| » side | BUY |
| » side | SELL |
| » timeInForce | GTC |
| » timeInForce | IOC |
| » timeInForce | FOK |
| » timeInForce | GTD |
Example responses
200 Response
{
"exOrdId": "11111111",
"clOrdId": "ABC",
"ordType": "MARKET",
"ordStatus": "FILLED",
"side": "BUY",
"price": 0.12345,
"text": "string",
"symbol": "BTC-USD",
"lastShares": "0.5678",
"lastPx": "3500.12",
"leavesQty": "10.0",
"cumQty": "0.123345",
"avgPx": "345.33",
"timestamp": "1592830770594"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | OrderSummary |
deleteAllOrders
Code samples
# You can also use wget
curl -X DELETE https://api.blockchain.com/v3/exchange/orders \
-H 'X-API-Token: API_KEY'
DELETE https://api.blockchain.com/v3/exchange/orders HTTP/1.1
Host: api.blockchain.com
const headers = {
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/orders',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'X-API-Token' => 'API_KEY'
}
result = RestClient.delete 'https://api.blockchain.com/v3/exchange/orders',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'X-API-Token': 'API_KEY'
}
r = requests.delete('https://api.blockchain.com/v3/exchange/orders', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('DELETE','https://api.blockchain.com/v3/exchange/orders', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/orders");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.blockchain.com/v3/exchange/orders", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /orders
Delete all open orders (of a symbol, if specified)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| symbol | query | symbol | false | none |
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | None |
getOrderById
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/orders/{orderId} \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/orders/{orderId} HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/orders/{orderId}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/orders/{orderId}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/orders/{orderId}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/orders/{orderId}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/orders/{orderId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/orders/{orderId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /orders/{orderId}
Get a specific order
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| orderId | path | ExchangeOrderId | true | Order ID |
Example responses
200 Response
{
"exOrdId": "11111111",
"clOrdId": "ABC",
"ordType": "MARKET",
"ordStatus": "FILLED",
"side": "BUY",
"price": 0.12345,
"text": "string",
"symbol": "BTC-USD",
"lastShares": "0.5678",
"lastPx": "3500.12",
"leavesQty": "10.0",
"cumQty": "0.123345",
"avgPx": "345.33",
"timestamp": "1592830770594"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | OrderSummary |
| 404 | Not Found | Not found | None |
deleteOrder
Code samples
# You can also use wget
curl -X DELETE https://api.blockchain.com/v3/exchange/orders/{orderId} \
-H 'X-API-Token: API_KEY'
DELETE https://api.blockchain.com/v3/exchange/orders/{orderId} HTTP/1.1
Host: api.blockchain.com
const headers = {
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/orders/{orderId}',
{
method: 'DELETE',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'X-API-Token' => 'API_KEY'
}
result = RestClient.delete 'https://api.blockchain.com/v3/exchange/orders/{orderId}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'X-API-Token': 'API_KEY'
}
r = requests.delete('https://api.blockchain.com/v3/exchange/orders/{orderId}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('DELETE','https://api.blockchain.com/v3/exchange/orders/{orderId}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/orders/{orderId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.blockchain.com/v3/exchange/orders/{orderId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /orders/{orderId}
Cancel a trade
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| orderId | path | ExchangeOrderId | true | Order ID |
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | None |
getTrades
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/trades \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/trades HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/trades',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/trades',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/trades', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/trades', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/trades");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/trades", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /trades
Get a list of filled orders
Returns filled orders, including partial fills. Returns at most 100 results, use timestamp to paginate for further results
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| symbol | query | symbol | false | Only return results for this symbol |
| from | query | TimestampEpoch | false | Epoch timestamp in ms |
| to | query | TimestampEpoch | false | Epoch timestamp in ms |
| limit | query | integer(int32) | false | Maximum amount of results to return in a single call. If omitted, 100 results are returned by default. |
Example responses
200 Response
[
{
"exOrdId": "11111111",
"clOrdId": "ABC",
"ordType": "MARKET",
"ordStatus": "FILLED",
"side": "BUY",
"price": 0.12345,
"text": "string",
"symbol": "BTC-USD",
"lastShares": "0.5678",
"lastPx": "3500.12",
"leavesQty": "10.0",
"cumQty": "0.123345",
"avgPx": "345.33",
"timestamp": "1592830770594"
}
]
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | Inline |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [OrderSummary] | false | none | none |
| » exOrdId | ExchangeOrderId(int64) | false | none | The unique order id assigned by the exchange |
| » clOrdId | ClientOrderId | true | none | Reference field provided by client. Cannot exceed 20 characters, only alphanumeric characters are allowed. |
| » ordType | ordType | true | none | none |
| » ordStatus | OrderStatus | true | none | none |
| » side | side | true | none | "buy" for Buy, "sell" for Sell |
| » price | price(double) | false | none | The limit price for the order |
| » text | string | false | none | The reason for rejecting the order, if applicable |
| » symbol | symbol | true | none | Blockchain symbol identifier |
| » lastShares | number(double) | false | none | The executed quantity for the order's last fill |
| » lastPx | number(double) | false | none | The executed price for the last fill |
| » leavesQty | number(double) | false | none | For Open and Partially Filled orders this is the remaining quantity open for execution. For Canceled and Expired orders this is the quantity than was still open before cancellation/expiration. For Rejected order this is equal to orderQty. For other states this is always zero. |
| » cumQty | number(double) | false | none | The quantity of the order which has been filled |
| » avgPx | number(double) | false | none | Calculated the Volume Weighted Average Price of all fills for this order |
| » timestamp | TimestampEpoch(int64) | false | none | Time in ms since 01/01/1970 (epoch) |
Enumerated Values
| Property | Value |
|---|---|
| ordType | MARKET |
| ordType | LIMIT |
| ordType | STOP |
| ordType | STOPLIMIT |
| ordStatus | OPEN |
| ordStatus | REJECTED |
| ordStatus | CANCELED |
| ordStatus | FILLED |
| ordStatus | PART_FILLED |
| ordStatus | EXPIRED |
| ordStatus | PENDING |
| side | BUY |
| side | SELL |
getFills
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/fills \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/fills HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/fills',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/fills',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/fills', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/fills', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/fills");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/fills", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /fills
Get a list of fills
Returns individual fills. Returns at most 1000 results, use timestamp and execId to navigate
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| symbol | query | symbol | false | Only return results for this symbol |
| from | query | TimestampEpoch | false | Epoch timestamp in ms |
| fromExecId | query | ExecId | false | List from ExecId onwards |
| to | query | TimestampEpoch | false | Epoch timestamp in ms |
| toExecId | query | ExecId | false | List from ExecId backwards |
| limit | query | integer(int32) | false | Maximum amount of results to return in a single call. If omitted, 100 results are returned by default. |
Example responses
200 Response
[
{
"exOrdId": "11111111",
"tradeId": "11111111",
"execId": "11111111",
"side": "BUY",
"symbol": "BTC-USD",
"price": 0.12345,
"qty": "10.23",
"fee": "10.23",
"timestamp": "1592830770594"
}
]
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | Inline |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [Fill] | false | none | none |
| » exOrdId | ExchangeOrderId(int64) | true | none | The unique order id assigned by the exchange |
| » tradeId | TradeId(int64) | true | none | The unique trade id assigned by the exchange |
| » execId | ExecId(int64) | true | none | The unique execution report id assigned by the exchange |
| » side | side | true | none | "buy" for Buy, "sell" for Sell |
| » symbol | symbol | true | none | Blockchain symbol identifier |
| » price | price(double) | true | none | The limit price for the order |
| » qty | number(double) | true | none | The trade size in the terms of the base currency |
| » fee | number(double) | true | none | The fee charged for this fill |
| » timestamp | TimestampEpoch(int64) | true | none | Time in ms since 01/01/1970 (epoch) |
Enumerated Values
| Property | Value |
|---|---|
| side | BUY |
| side | SELL |
Payments
Get account status and initiate deposits and withdrawals
getAccounts
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/accounts \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/accounts HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/accounts',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/accounts',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/accounts', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/accounts', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/accounts");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/accounts", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /accounts
Receive current account balances
Example responses
200 Response
{
"primary": [
{
"currency": "BTC",
"balance": "0.00366963",
"available": "0.00266963",
"balance_local": "38.746779155",
"available_local": "28.188009155",
"rate": "10558.77"
}
],
"property1": [
{
"currency": "BTC",
"balance": "0.00366963",
"available": "0.00266963",
"balance_local": "38.746779155",
"available_local": "28.188009155",
"rate": "10558.77"
}
],
"property2": [
{
"currency": "BTC",
"balance": "0.00366963",
"available": "0.00266963",
"balance_local": "38.746779155",
"available_local": "28.188009155",
"rate": "10558.77"
}
]
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | BalanceMap |
getAccountByTypeAndCurrency
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/accounts/{account}/{currency} \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/accounts/{account}/{currency} HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/accounts/{account}/{currency}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/accounts/{account}/{currency}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/accounts/{account}/{currency}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/accounts/{account}/{currency}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/accounts/{account}/{currency}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/accounts/{account}/{currency}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /accounts/{account}/{currency}
Receive current account balances
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| account | path | string | true | Account |
| currency | path | currency | true | Currency |
Example responses
200 Response
{
"currency": "BTC",
"balance": "0.00366963",
"available": "0.00266963",
"balance_local": "38.746779155",
"available_local": "28.188009155",
"rate": "10558.77"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | Balance |
getDepositAddress
Code samples
# You can also use wget
curl -X POST https://api.blockchain.com/v3/exchange/deposits/{currency} \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
POST https://api.blockchain.com/v3/exchange/deposits/{currency} HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/deposits/{currency}',
{
method: 'POST',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.post 'https://api.blockchain.com/v3/exchange/deposits/{currency}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.post('https://api.blockchain.com/v3/exchange/deposits/{currency}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://api.blockchain.com/v3/exchange/deposits/{currency}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/deposits/{currency}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.blockchain.com/v3/exchange/deposits/{currency}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /deposits/{currency}
Get a deposit address. Currently only crypto currencies are supported
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| currency | path | currency | true | Currency |
Example responses
200 Response
{
"type": "string",
"address": "string"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | DepositAddressCrypto |
getDeposits
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/deposits \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/deposits HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/deposits',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/deposits',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/deposits', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/deposits', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/deposits");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/deposits", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /deposits
Get a list of deposits
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| from | query | TimestampEpoch | false | Epoch timestamp in ms |
| to | query | TimestampEpoch | false | Epoch timestamp in ms |
Example responses
200 Response
[
{
"depositId": "string",
"amount": "12.23",
"currency": "BTC",
"address": "string",
"txHash": "string",
"state": "REJECTED",
"timestamp": "1592830770594"
}
]
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | Inline |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [DepositInfo] | false | none | none |
| » depositId | DepositId | true | none | Unique ID for this withdrawal |
| » amount | number(double) | true | none | The amount that is credited in the currency specified |
| » currency | currency | true | none | none |
| » address | CryptoAddress | true | none | Address to deposit to. If a tag or memo must be used, it is separated by a colon. |
| » txHash | string | false | none | The transaction hash of the transaction that deposited funds |
| » state | string | true | none | none |
| » timestamp | TimestampEpoch(int64) | false | none | Time in ms since 01/01/1970 (epoch) |
Enumerated Values
| Property | Value |
|---|---|
| state | REJECTED |
| state | UNCONFIRMED |
| state | COMPLETED |
getDepositById
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/deposits/{depositId} \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/deposits/{depositId} HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/deposits/{depositId}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/deposits/{depositId}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/deposits/{depositId}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/deposits/{depositId}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/deposits/{depositId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/deposits/{depositId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /deposits/{depositId}
Get status about a deposit
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| depositId | path | string | true | Deposit ID |
Example responses
200 Response
{
"depositId": "string",
"amount": "12.23",
"currency": "BTC",
"address": "string",
"txHash": "string",
"state": "REJECTED",
"timestamp": "1592830770594"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | DepositInfo |
| 404 | Not Found | Not found | None |
getWhitelist
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/whitelist \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/whitelist HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/whitelist',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/whitelist',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/whitelist', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/whitelist', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/whitelist");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/whitelist", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /whitelist
Get a list of all whitelisted withdrawal accounts
Example responses
200 Response
[
{
"whitelistId": "string",
"name": "string",
"currency": "BTC"
}
]
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | Inline |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [WhitelistEntry] | false | none | none |
| » whitelistId | string | false | none | Unique ID for each whitelist entry |
| » name | string | false | none | User specified name for this entry |
| » currency | currency | false | none | none |
getWhitelistByCurrency
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/whitelist/{currency} \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/whitelist/{currency} HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/whitelist/{currency}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/whitelist/{currency}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/whitelist/{currency}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/whitelist/{currency}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/whitelist/{currency}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/whitelist/{currency}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /whitelist/{currency}
Get a list of all whitelisted withdrawal accounts
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| currency | path | currency | true | Currency |
Example responses
200 Response
[
{
"whitelistId": "string",
"name": "string",
"currency": "BTC"
}
]
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | Inline |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [WhitelistEntry] | false | none | none |
| » whitelistId | string | false | none | Unique ID for each whitelist entry |
| » name | string | false | none | User specified name for this entry |
| » currency | currency | false | none | none |
getWithdrawals
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/withdrawals \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/withdrawals HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/withdrawals',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/withdrawals',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/withdrawals', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/withdrawals', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/withdrawals");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/withdrawals", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /withdrawals
Get a list of withdrawals
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| from | query | TimestampEpoch | false | Epoch timestamp in ms |
| to | query | TimestampEpoch | false | Epoch timestamp in ms |
Example responses
200 Response
[
{
"withdrawalId": "string",
"amount": "12.23",
"fee": "0.0005",
"currency": "BTC",
"beneficiary": "string",
"state": "REJECTED",
"timestamp": "1592830770594"
}
]
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | Inline |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [WithdrawalInfo] | false | none | none |
| » withdrawalId | WithdrawalId | false | none | Unique ID for this withdrawal |
| » amount | WithdrawalAmount(double) | true | none | The amount to withdraw in the currency specified |
| » fee | WithdrawalFee(double) | false | none | The amount charged in fees for this withdrawal |
| » currency | currency | true | none | none |
| » beneficiary | WithdrawalBeneficiary | true | none | none |
| » state | WithdrawalStatus | false | none | none |
| » timestamp | TimestampEpoch(int64) | false | none | Time in ms since 01/01/1970 (epoch) |
Enumerated Values
| Property | Value |
|---|---|
| state | REJECTED |
| state | PENDING |
| state | REFUNDED |
| state | FAILED |
| state | COMPLETED |
createWithdrawal
Code samples
# You can also use wget
curl -X POST https://api.blockchain.com/v3/exchange/withdrawals \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
POST https://api.blockchain.com/v3/exchange/withdrawals HTTP/1.1
Host: api.blockchain.com
Content-Type: application/json
Accept: application/json
const inputBody = '{
"amount": "12.23",
"currency": "BTC",
"beneficiary": "string",
"sendMax": true
}';
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/withdrawals',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.post 'https://api.blockchain.com/v3/exchange/withdrawals',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.post('https://api.blockchain.com/v3/exchange/withdrawals', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('POST','https://api.blockchain.com/v3/exchange/withdrawals', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/withdrawals");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.blockchain.com/v3/exchange/withdrawals", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /withdrawals
Request a withdrawal
Call GET /whitelist first to retrieve the ID of the beneficiary. To add a beneficiary to the whitelist, please visit the profile page in the Exchange. This call only works if 2FA is enabled on the account.
Body parameter
{
"amount": "12.23",
"currency": "BTC",
"beneficiary": "string",
"sendMax": true
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| body | body | CreateWithdrawalRequest | true | none |
| » amount | body | WithdrawalAmount(double) | false | The amount to withdraw in the currency specified |
| » currency | body | currency | true | none |
| » beneficiary | body | WithdrawalBeneficiary | true | none |
| » sendMax | body | boolean | false | If set, sends the full available amount, minus fees. Amount may not be specified in that case. |
Example responses
200 Response
{
"withdrawalId": "string",
"amount": "12.23",
"fee": "0.0005",
"currency": "BTC",
"beneficiary": "string",
"state": "REJECTED",
"timestamp": "1592830770594"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | WithdrawalInfo |
getWithdrawalById
Code samples
# You can also use wget
curl -X GET https://api.blockchain.com/v3/exchange/withdrawals/{withdrawalId} \
-H 'Accept: application/json' \
-H 'X-API-Token: API_KEY'
GET https://api.blockchain.com/v3/exchange/withdrawals/{withdrawalId} HTTP/1.1
Host: api.blockchain.com
Accept: application/json
const headers = {
'Accept':'application/json',
'X-API-Token':'API_KEY'
};
fetch('https://api.blockchain.com/v3/exchange/withdrawals/{withdrawalId}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY'
}
result = RestClient.get 'https://api.blockchain.com/v3/exchange/withdrawals/{withdrawalId}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-API-Token': 'API_KEY'
}
r = requests.get('https://api.blockchain.com/v3/exchange/withdrawals/{withdrawalId}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'X-API-Token' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','https://api.blockchain.com/v3/exchange/withdrawals/{withdrawalId}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("https://api.blockchain.com/v3/exchange/withdrawals/{withdrawalId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-API-Token": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.blockchain.com/v3/exchange/withdrawals/{withdrawalId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /withdrawals/{withdrawalId}
Get status about a withdrawal
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| withdrawalId | path | string | true | Withdrawal ID |
Example responses
200 Response
{
"withdrawalId": "string",
"amount": "12.23",
"fee": "0.0005",
"currency": "BTC",
"beneficiary": "string",
"state": "REJECTED",
"timestamp": "1592830770594"
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Success | WithdrawalInfo |
| 404 | Not Found | Not found | None |
Schemas
TimestampEpoch
"1592830770594"
Time in ms since 01/01/1970 (epoch)
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | integer(int64) | false | none | Time in ms since 01/01/1970 (epoch) |
symbol
"BTC-USD"
Blockchain symbol identifier
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | Blockchain symbol identifier |
currency
"BTC"
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | none |
ExchangeOrderId
"11111111"
The unique order id assigned by the exchange
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | integer(int64) | false | none | The unique order id assigned by the exchange |
TradeId
"11111111"
The unique trade id assigned by the exchange
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | integer(int64) | false | none | The unique trade id assigned by the exchange |
ExecId
"11111111"
The unique execution report id assigned by the exchange
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | integer(int64) | false | none | The unique execution report id assigned by the exchange |
ClientOrderId
"ABC"
Reference field provided by client. Cannot exceed 20 characters, only alphanumeric characters are allowed.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | Reference field provided by client. Cannot exceed 20 characters, only alphanumeric characters are allowed. |
WithdrawalId
"string"
Unique ID for this withdrawal
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | Unique ID for this withdrawal |
WithdrawalStatus
"REJECTED"
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| anonymous | REJECTED |
| anonymous | PENDING |
| anonymous | REFUNDED |
| anonymous | FAILED |
| anonymous | COMPLETED |
WithdrawalAmount
"12.23"
The amount to withdraw in the currency specified
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | number(double) | false | none | The amount to withdraw in the currency specified |
WithdrawalFee
"0.0005"
The amount charged in fees for this withdrawal
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | number(double) | false | none | The amount charged in fees for this withdrawal |
WithdrawalBeneficiary
"string"
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | none |
WithdrawalInfo
{
"withdrawalId": "string",
"amount": "12.23",
"fee": "0.0005",
"currency": "BTC",
"beneficiary": "string",
"state": "REJECTED",
"timestamp": "1592830770594"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| withdrawalId | WithdrawalId | false | none | Unique ID for this withdrawal |
| amount | WithdrawalAmount | true | none | The amount to withdraw in the currency specified |
| fee | WithdrawalFee | false | none | The amount charged in fees for this withdrawal |
| currency | currency | true | none | none |
| beneficiary | WithdrawalBeneficiary | true | none | none |
| state | WithdrawalStatus | false | none | none |
| timestamp | TimestampEpoch | false | none | Time in ms since 01/01/1970 (epoch) |
DepositId
"string"
Unique ID for this withdrawal
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | Unique ID for this withdrawal |
CryptoAddress
"string"
Address to deposit to. If a tag or memo must be used, it is separated by a colon.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | Address to deposit to. If a tag or memo must be used, it is separated by a colon. |
DepositAmount
"12.23"
The amount that is credited in the currency specified
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | number(double) | false | none | The amount that is credited in the currency specified |
DepositInfo
{
"depositId": "string",
"amount": "12.23",
"currency": "BTC",
"address": "string",
"txHash": "string",
"state": "REJECTED",
"timestamp": "1592830770594"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| depositId | DepositId | true | none | Unique ID for this withdrawal |
| amount | number(double) | true | none | The amount that is credited in the currency specified |
| currency | currency | true | none | none |
| address | CryptoAddress | true | none | Address to deposit to. If a tag or memo must be used, it is separated by a colon. |
| txHash | string | false | none | The transaction hash of the transaction that deposited funds |
| state | string | true | none | none |
| timestamp | TimestampEpoch | false | none | Time in ms since 01/01/1970 (epoch) |
Enumerated Values
| Property | Value |
|---|---|
| state | REJECTED |
| state | UNCONFIRMED |
| state | COMPLETED |
OrderStatus
"FILLED"
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| anonymous | OPEN |
| anonymous | REJECTED |
| anonymous | CANCELED |
| anonymous | FILLED |
| anonymous | PART_FILLED |
| anonymous | EXPIRED |
| anonymous | PENDING |
TimeInForce
"GTC"
"GTC" for Good Till Cancel, "IOC" for Immediate or Cancel, "FOK" for Fill or Kill, "GTD" Good Till Date
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | "GTC" for Good Till Cancel, "IOC" for Immediate or Cancel, "FOK" for Fill or Kill, "GTD" Good Till Date |
Enumerated Values
| Property | Value |
|---|---|
| anonymous | GTC |
| anonymous | IOC |
| anonymous | FOK |
| anonymous | GTD |
timeInForceStop
"GTC"
"GTC" for Good Till Cancel, "GTD" Good Till Date
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | "GTC" for Good Till Cancel, "GTD" Good Till Date |
Enumerated Values
| Property | Value |
|---|---|
| anonymous | GTC |
| anonymous | GTD |
side
"BUY"
"buy" for Buy, "sell" for Sell
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | "buy" for Buy, "sell" for Sell |
Enumerated Values
| Property | Value |
|---|---|
| anonymous | BUY |
| anonymous | SELL |
orderQty
"10.23"
The order size in the terms of the base currency
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | number(double) | false | none | The order size in the terms of the base currency |
price
0.12345
The limit price for the order
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | number(double) | false | none | The limit price for the order |
expireDate
"20200103"
expiry date in the format YYYYMMDD
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | integer | false | none | expiry date in the format YYYYMMDD |
stopPx
"3500.12"
Price to trigger the stop order
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | number(double) | false | none | Price to trigger the stop order |
minQty
"10.0"
The minimum quantity required for an IOC fill
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | number(double) | false | none | The minimum quantity required for an IOC fill |
execInst
"ALO"
The order is placed with Add Liquidity Only (aka Post Only): it will not match liquidity immediately. It will be rejected instead of matching liquidity in the market.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | The order is placed with Add Liquidity Only (aka Post Only): it will not match liquidity immediately. It will be rejected instead of matching liquidity in the market. |
ordType
"MARKET"
Order type
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| Order type | string | false | none | none |
Enumerated Values
| Property | Value |
|---|---|
| Order type | MARKET |
| Order type | LIMIT |
| Order type | STOP |
| Order type | STOPLIMIT |
BaseOrder
{
"clOrdId": "123456",
"ordType": "LIMIT",
"symbol": "BTC-USD",
"side": "BUY",
"orderQty": "0.1",
"price": "100"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| clOrdId | ClientOrderId | true | none | Reference field provided by client. Cannot exceed 20 characters, only alphanumeric characters are allowed. |
| ordType | ordType | true | none | none |
| symbol | symbol | true | none | Blockchain symbol identifier |
| side | side | true | none | "buy" for Buy, "sell" for Sell |
| orderQty | orderQty | true | none | The order size in the terms of the base currency |
| timeInForce | TimeInForce | false | none | "GTC" for Good Till Cancel, "IOC" for Immediate or Cancel, "FOK" for Fill or Kill, "GTD" Good Till Date |
| price | price | false | none | The limit price for the order |
| expireDate | expireDate | false | none | expiry date in the format YYYYMMDD |
| minQty | minQty | false | none | The minimum quantity required for an IOC fill |
| stopPx | price | false | none | The limit price for the order |
PaginatedOrderSummary
{
"nextOrderId": "11111111",
"orders": [
{
"exOrdId": "11111111",
"clOrdId": "ABC",
"ordType": "MARKET",
"ordStatus": "FILLED",
"side": "BUY",
"price": 0.12345,
"text": "string",
"symbol": "BTC-USD",
"lastShares": "0.5678",
"lastPx": "3500.12",
"leavesQty": "10.0",
"cumQty": "0.123345",
"avgPx": "345.33",
"timestamp": "1592830770594"
}
]
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| nextOrderId | ExchangeOrderId | true | none | The unique order id assigned by the exchange |
| orders | [OrderSummary] | true | none | none |
OrderSummary
{
"exOrdId": "11111111",
"clOrdId": "ABC",
"ordType": "MARKET",
"ordStatus": "FILLED",
"side": "BUY",
"price": 0.12345,
"text": "string",
"symbol": "BTC-USD",
"lastShares": "0.5678",
"lastPx": "3500.12",
"leavesQty": "10.0",
"cumQty": "0.123345",
"avgPx": "345.33",
"timestamp": "1592830770594"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| exOrdId | ExchangeOrderId | false | none | The unique order id assigned by the exchange |
| clOrdId | ClientOrderId | true | none | Reference field provided by client. Cannot exceed 20 characters, only alphanumeric characters are allowed. |
| ordType | ordType | true | none | none |
| ordStatus | OrderStatus | true | none | none |
| side | side | true | none | "buy" for Buy, "sell" for Sell |
| price | price | false | none | The limit price for the order |
| text | string | false | none | The reason for rejecting the order, if applicable |
| symbol | symbol | true | none | Blockchain symbol identifier |
| lastShares | number(double) | false | none | The executed quantity for the order's last fill |
| lastPx | number(double) | false | none | The executed price for the last fill |
| leavesQty | number(double) | false | none | For Open and Partially Filled orders this is the remaining quantity open for execution. For Canceled and Expired orders this is the quantity than was still open before cancellation/expiration. For Rejected order this is equal to orderQty. For other states this is always zero. |
| cumQty | number(double) | false | none | The quantity of the order which has been filled |
| avgPx | number(double) | false | none | Calculated the Volume Weighted Average Price of all fills for this order |
| timestamp | TimestampEpoch | false | none | Time in ms since 01/01/1970 (epoch) |
Fill
{
"exOrdId": "11111111",
"tradeId": "11111111",
"execId": "11111111",
"side": "BUY",
"symbol": "BTC-USD",
"price": 0.12345,
"qty": "10.23",
"fee": "10.23",
"timestamp": "1592830770594"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| exOrdId | ExchangeOrderId | true | none | The unique order id assigned by the exchange |
| tradeId | TradeId | true | none | The unique trade id assigned by the exchange |
| execId | ExecId | true | none | The unique execution report id assigned by the exchange |
| side | side | true | none | "buy" for Buy, "sell" for Sell |
| symbol | symbol | true | none | Blockchain symbol identifier |
| price | price | true | none | The limit price for the order |
| qty | number(double) | true | none | The trade size in the terms of the base currency |
| fee | number(double) | true | none | The fee charged for this fill |
| timestamp | TimestampEpoch | true | none | Time in ms since 01/01/1970 (epoch) |
CancelOrderRequest
{
"action": "CancelOrderRequest",
"orderID": "11111111"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| action | string | true | none | none |
| orderID | ExchangeOrderId | true | none | The unique order id assigned by the exchange |
Enumerated Values
| Property | Value |
|---|---|
| action | CancelOrderRequest |
BalanceMap
{
"primary": [
{
"currency": "BTC",
"balance": "0.00366963",
"available": "0.00266963",
"balance_local": "38.746779155",
"available_local": "28.188009155",
"rate": "10558.77"
}
],
"property1": [
{
"currency": "BTC",
"balance": "0.00366963",
"available": "0.00266963",
"balance_local": "38.746779155",
"available_local": "28.188009155",
"rate": "10558.77"
}
],
"property2": [
{
"currency": "BTC",
"balance": "0.00366963",
"available": "0.00266963",
"balance_local": "38.746779155",
"available_local": "28.188009155",
"rate": "10558.77"
}
]
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| additionalProperties | BalanceList | false | none | none |
| primary | BalanceList | true | none | none |
BalanceList
[
{
"currency": "BTC",
"balance": "0.00366963",
"available": "0.00266963",
"balance_local": "38.746779155",
"available_local": "28.188009155",
"rate": "10558.77"
}
]
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [Balance] | false | none | none |
Balance
{
"currency": "BTC",
"balance": "0.00366963",
"available": "0.00266963",
"balance_local": "38.746779155",
"available_local": "28.188009155",
"rate": "10558.77"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| currency | currency | true | none | none |
| balance | number(double) | true | none | none |
| available | number(double) | true | none | none |
| balance_local | number(double) | true | none | none |
| available_local | number(double) | true | none | none |
| rate | number(double) | true | none | none |
Fees
{
"makerRate": "0.0014",
"takerRate": "0.0024",
"volumeInUSD": "1500.00"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| makerRate | number(double) | true | none | none |
| takerRate | number(double) | true | none | none |
| volumeInUSD | number(double) | true | none | none |
WhitelistEntry
{
"whitelistId": "string",
"name": "string",
"currency": "BTC"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| whitelistId | string | false | none | Unique ID for each whitelist entry |
| name | string | false | none | User specified name for this entry |
| currency | currency | false | none | none |
CreateWithdrawalRequest
{
"amount": "12.23",
"currency": "BTC",
"beneficiary": "string",
"sendMax": true
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| amount | WithdrawalAmount | false | none | The amount to withdraw in the currency specified |
| currency | currency | true | none | none |
| beneficiary | WithdrawalBeneficiary | true | none | none |
| sendMax | boolean | false | none | If set, sends the full available amount, minus fees. Amount may not be specified in that case. |
DepositAddressCrypto
{
"type": "string",
"address": "string"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| type | string | true | none | none |
| address | string | true | none | Address to deposit to. If a tag or memo must be used, it is separated by a colon. |
PriceEvent
{
"symbol": "BTC-USD",
"price_24h": "4998.0",
"volume_24h": "0.3015",
"last_trade_price": "5000.0"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| symbol | symbol | false | none | Blockchain symbol identifier |
| price_24h | number(double) | false | none | none |
| volume_24h | number(double) | false | none | none |
| last_trade_price | number(double) | false | none | none |
PriceEventList
{
"orders": [
{
"symbol": "BTC-USD",
"price_24h": "4998.0",
"volume_24h": "0.3015",
"last_trade_price": "5000.0"
}
]
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| orders | [PriceEvent] | false | none | none |
SymbolStatus
{
"base_currency": "BTC-USD",
"base_currency_scale": 8,
"counter_currency": "BTC-USD",
"counter_currency_scale": 2,
"min_price_increment": 10,
"min_price_increment_scale": 0,
"min_order_size": 10,
"min_order_size_scale": 2,
"max_order_size": 0,
"max_order_size_scale": 8,
"lot_size": 5,
"lot_size_scale": 2,
"status": "open",
"id": 1,
"auction_price": 0,
"auction_size": 0,
"auction_time": "1530",
"imbalance": 0
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| base_currency | symbol | false | none | Blockchain symbol identifier |
| base_currency_scale | integer | false | none | The number of decimals the currency can be split in |
| counter_currency | symbol | false | none | Blockchain symbol identifier |
| counter_currency_scale | integer | false | none | The number of decimals the currency can be split in |
| min_price_increment | integer(int64) | false | none | The price of the instrument must be a multiple of min_price_increment * (10^-min_price_increment_scale) |
| min_price_increment_scale | integer | false | none | none |
| min_order_size | integer(int64) | false | none | The minimum quantity for an order for this instrument must be min_order_size*(10^-min_order_size_scale) |
| min_order_size_scale | integer | false | none | none |
| max_order_size | integer(int64) | false | none | The maximum quantity for an order for this instrument is max_order_size*(10^-max_order_size_scale). If this equal to zero, there is no limit |
| max_order_size_scale | integer | false | none | none |
| lot_size | integer(int64) | false | none | none |
| lot_size_scale | integer | false | none | none |
| status | string | false | none | Symbol status; open, close, suspend, halt, halt-freeze. |
| id | integer(int64) | false | none | none |
| auction_price | number(double) | false | none | If the symbol is halted and will open on an auction, this will be the opening price. |
| auction_size | number(double) | false | none | Opening size |
| auction_time | string | false | none | Opening time in HHMM format |
| imbalance | number(double) | false | none | Auction imbalance. If > 0 then there will be buy orders left over at the auction price. If < 0 then there will be sell orders left over at the auction price. |
Enumerated Values
| Property | Value |
|---|---|
| status | open |
| status | close |
| status | suspend |
| status | halt |
| status | halt-freeze |
OrderBookEntry
{
"px": "8723.45",
"qty": "1.45",
"num": "1"
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| px | number(double) | false | none | none |
| qty | number(double) | false | none | none |
| num | integer(int64) | false | none | Either the quantity of orders on this price level for L2, or the individual order id for L3 |
OrderBook
{
"symbol": "BTC-USD",
"bids": [
{
"px": "8723.45",
"qty": "1.45",
"num": "1"
}
],
"asks": [
{
"px": "8723.45",
"qty": "1.45",
"num": "1"
}
]
}
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| symbol | symbol | false | none | Blockchain symbol identifier |
| bids | [OrderBookEntry] | false | none | none |
| asks | [OrderBookEntry] | false | none | none |
UnauthorizedError
{
"error": "string"
}
API key is missing or invalid
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| error | string | false | none | none |