curl --request GET \
--url https://market-uat.dimetrades.com/api/orderbook/orderbookimport requests
url = "https://market-uat.dimetrades.com/api/orderbook/orderbook"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://market-uat.dimetrades.com/api/orderbook/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://market-uat.dimetrades.com/api/orderbook/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://market-uat.dimetrades.com/api/orderbook/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://market-uat.dimetrades.com/api/orderbook/orderbook")
.asString();require 'uri'
require 'net/http'
url = URI("https://market-uat.dimetrades.com/api/orderbook/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{
"40996685": {
"marketId": "40996685",
"yes_bids": [
[
41,
500
]
],
"no_bids": [
[
59,
500
]
],
"bestYesBid": 41,
"bestNoBid": 59,
"tradedVolume": 2210,
"liquidity": 1000,
"timestamp": 1753776000000
},
"40996686": {
"marketId": "40996686",
"yes_bids": [
[
63,
120
],
[
62,
340
]
],
"no_bids": [
[
37,
90
],
[
36,
210
]
],
"bestYesBid": 63,
"bestNoBid": 37,
"tradedVolume": 18420,
"liquidity": 760,
"timestamp": 1753776000000
}
}Order book snapshots for one or more markets
Returns the complete resting order book for each requested market.
Use this to seed a book before opening a WebSocket, or when you want depth
without holding a connection. For live updates subscribe to
ORDERBOOK_DEPTH instead of polling — the payload is identical, so the same
parsing code handles both.
This is a full snapshot, never a delta
Every response supersedes the last in its entirety. Replace your local book
with what you receive rather than merging into it: a fully consumed price
level simply stops appearing, it is not sent with quantity 0, so a merging
client keeps stale levels forever. The same rule applies to
initial_orderbooks and ORDERBOOK_DEPTH over the WebSocket.
Missing markets are omitted, not an error
Unknown or unresolvable ids are left out of the response object and the
call still returns 200. There is no 404 and no error field naming them —
compare the keys you got back against the ids you asked for. An empty {}
means none of them resolved.
Caching
Snapshots are served from an in-memory cache (60s TTL, 1000-market LRU); a
miss is fetched from the matching engine and cached. So timestamp can be
up to a minute behind wall clock, and two calls a second apart usually
return byte-identical bodies. Do not poll this endpoint for tick-level
freshness — the WebSocket feed is the real-time path.
No authentication
Order book depth is public. No bearer token is required.
curl --request GET \
--url https://market-uat.dimetrades.com/api/orderbook/orderbookimport requests
url = "https://market-uat.dimetrades.com/api/orderbook/orderbook"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://market-uat.dimetrades.com/api/orderbook/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://market-uat.dimetrades.com/api/orderbook/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://market-uat.dimetrades.com/api/orderbook/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://market-uat.dimetrades.com/api/orderbook/orderbook")
.asString();require 'uri'
require 'net/http'
url = URI("https://market-uat.dimetrades.com/api/orderbook/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{
"40996685": {
"marketId": "40996685",
"yes_bids": [
[
41,
500
]
],
"no_bids": [
[
59,
500
]
],
"bestYesBid": 41,
"bestNoBid": 59,
"tradedVolume": 2210,
"liquidity": 1000,
"timestamp": 1753776000000
},
"40996686": {
"marketId": "40996686",
"yes_bids": [
[
63,
120
],
[
62,
340
]
],
"no_bids": [
[
37,
90
],
[
36,
210
]
],
"bestYesBid": 63,
"bestNoBid": 37,
"tradedVolume": 18420,
"liquidity": 760,
"timestamp": 1753776000000
}
}Query Parameters
Comma-separated market ids. A single id is also valid. These are the tradable market ids (outcomes[].id from GET /events/details), not event ids.
^[0-9]+(,[0-9]+)*$Response
Snapshots keyed by market id. Markets that could not be resolved are absent from the object.
The complete resting order book for one market at a point in time.
This is always a full snapshot — never a delta. The same shape is returned by GET /orderbook/orderbook, by the initial_orderbooks WebSocket event, and by every ORDERBOOK_DEPTH push. Each one supersedes the last in its entirety.
Replace your local book with what you receive; do not merge it into what you already hold. A price level that has been fully consumed simply stops appearing in yes_bids / no_bids — it is not sent as a zero-quantity entry — so a client that merges will keep stale levels alive forever.
Prices are in cents, 1–99. YES and NO are complementary: a YES bid at 63 and a NO bid at 37 together price the same contract at 100.
Show child attributes
Show child attributes
{
"marketId": "40996686",
"yes_bids": [[63, 120], [62, 340]],
"no_bids": [[37, 90], [36, 210]],
"bestYesBid": 63,
"bestNoBid": 37,
"tradedVolume": 18420,
"liquidity": 760,
"timestamp": 1753776000000
}
