curl --request GET \
--url https://api.numofx.com/v1/integrations/orderbookimport requests
url = "https://api.numofx.com/v1/integrations/orderbook"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.numofx.com/v1/integrations/orderbook', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.numofx.com/v1/integrations/orderbook",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.numofx.com/v1/integrations/orderbook"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.numofx.com/v1/integrations/orderbook")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.numofx.com/v1/integrations/orderbook")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"ticker_id": "<string>",
"timestamp": 123,
"bids": [
[
"<string>",
"<string>"
]
],
"asks": [
[
"<string>",
"<string>"
]
]
}{
"error": "<string>"
}Get orderbook
Resting orders aggregated into price levels in the advertised pair orientation. On cNGN-USDC and cNGN-PERP, bids are orders buying cNGN and asks are orders selling it, priced in USDC per cNGN with quantities in cNGN. Bid prices round down and ask prices round up to 10 decimal places, and quantities round down to 6, so no level shows a better price or more size than is resting. Orders whose prices round to the same level are summed; a level whose quantity rounds to 0 is dropped. At most the first 1000 resting orders per side are read. Responses are cached for up to 5 seconds and carry Cache-Control: public, max-age=5, so polling faster than that returns the same data.
curl --request GET \
--url https://api.numofx.com/v1/integrations/orderbookimport requests
url = "https://api.numofx.com/v1/integrations/orderbook"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.numofx.com/v1/integrations/orderbook', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.numofx.com/v1/integrations/orderbook",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.numofx.com/v1/integrations/orderbook"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.numofx.com/v1/integrations/orderbook")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.numofx.com/v1/integrations/orderbook")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"ticker_id": "<string>",
"timestamp": 123,
"bids": [
[
"<string>",
"<string>"
]
],
"asks": [
[
"<string>",
"<string>"
]
]
}{
"error": "<string>"
}[price, quantity] with the price in USDC per cNGN and the quantity in cNGN.
bids are orders buying cNGN, highest price first; asks are orders selling it, lowest first. This
is the same orientation as GET /v1/book, so nothing needs inverting between the two.
Prices are rounded to 10 decimal places away from the touch — bids down, asks up — and quantities
round down to 6 places, so no level shows a better price or more size than is resting. Orders whose
prices round to the same level are summed into one; a level whose quantity rounds to 0 is dropped.
The service reads at most the first 1000 resting orders per side when building levels.
Responses are cached for up to 5 seconds and carry Cache-Control: public, max-age=5. The cache
key is ticker_id and depth only; other query parameters do not bypass it.Query Parameters
A ticker_id from GET /v1/integrations/tickers: cNGN-USDC or cNGN-PERP, matched exactly. The deprecated USDCcNGN-SPOT and USDCcNGN-PERP are accepted until 2027-01-06 and answered under the canonical ticker_id with Deprecation: true and X-Canonical-Market headers. An unknown value is rejected rather than answered with another market.
Maximum price levels per side.
1 <= x <= 500Response
Aggregated levels, best first
Unix milliseconds at which the book was read.
Levels buying cNGN, highest price first. Empty array, never null, when there are none.
Show child attributes
Show child attributes
Levels selling cNGN, lowest price first. Empty array, never null, when there are none.
Show child attributes
Show child attributes
Was this page helpful?

