Fetch the order book
curl --request GET \
--url https://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book \
--header 'Authorization: Bearer <token>'import requests
url = "https://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book', 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://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "Order book fetched successfully",
"data": {
"offering": {
"raise_amount": 40000000,
"offering_status": "OPEN",
"offer_closes_at": "2026-09-30T15:00:00.000Z",
"tranche": "retail",
"tranches": [
{ "key": "retail", "name": "Retail", "size": 40000000 },
{ "key": "institutional", "name": "Institutional", "size": 60000000 }
]
},
"summary": {
"total_demand": 50000000,
"cover_ratio": 1.25,
"commitment_count": 34,
"strike_bid_amount": 0
},
"ladder": [
{ "level": 19, "demand": 30000000, "cumulative": 30000000 },
{ "level": 19.5, "demand": 20000000, "cumulative": 50000000 }
]
}
}
Trade
Fetch the order book
Aggregate demand, cover and the demand ladder
GET
api
/
token
/
{id}
/
book
Fetch the order book
curl --request GET \
--url https://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book \
--header 'Authorization: Bearer <token>'import requests
url = "https://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book', 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://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://ge-exchange-staging-1.herokuapp.com/v1/api/token/{id}/book")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "Order book fetched successfully",
"data": {
"offering": {
"raise_amount": 40000000,
"offering_status": "OPEN",
"offer_closes_at": "2026-09-30T15:00:00.000Z",
"tranche": "retail",
"tranches": [
{ "key": "retail", "name": "Retail", "size": 40000000 },
{ "key": "institutional", "name": "Institutional", "size": 60000000 }
]
},
"summary": {
"total_demand": 50000000,
"cover_ratio": 1.25,
"commitment_count": 34,
"strike_bid_amount": 0
},
"ladder": [
{ "level": 19, "demand": 30000000, "cumulative": 30000000 },
{ "level": 19.5, "demand": 20000000, "cumulative": 50000000 }
]
}
}
The demand behind an offering: total demand, cover against the offer size, the number of bids,
and the ladder of demand by level. Read-only, and the same for both integration models — this
is what you show a user before they bid.
Each tranche of a combined offering is its own book. Omit
tranche and the offering
answers for its default slice, listing the rest in offering.tranches for discovery.
string
required
The id of the offering.
string
Which slice of a combined offering to answer for.
{
"status": "success",
"message": "Order book fetched successfully",
"data": {
"offering": {
"raise_amount": 40000000,
"offering_status": "OPEN",
"offer_closes_at": "2026-09-30T15:00:00.000Z",
"tranche": "retail",
"tranches": [
{ "key": "retail", "name": "Retail", "size": 40000000 },
{ "key": "institutional", "name": "Institutional", "size": 60000000 }
]
},
"summary": {
"total_demand": 50000000,
"cover_ratio": 1.25,
"commitment_count": 34,
"strike_bid_amount": 0
},
"ladder": [
{ "level": 19, "demand": 30000000, "cumulative": 30000000 },
{ "level": 19.5, "demand": 20000000, "cumulative": 50000000 }
]
}
}
Was this page helpful?
