curl --request GET \
--url https://calibri.io/api/v2/atlas/account/settled \
--header 'X-Auth-Apikey: <api-key>'import requests
url = "https://calibri.io/api/v2/atlas/account/settled"
headers = {"X-Auth-Apikey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Auth-Apikey': '<api-key>'}};
fetch('https://calibri.io/api/v2/atlas/account/settled', 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://calibri.io/api/v2/atlas/account/settled",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Auth-Apikey: <api-key>"
],
]);
$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://calibri.io/api/v2/atlas/account/settled"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Auth-Apikey", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://calibri.io/api/v2/atlas/account/settled")
.header("X-Auth-Apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/settled")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Auth-Apikey"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"cost": "36.22065000",
"event_id": 14710,
"event_image_url": null,
"event_slug": "btc-updown-5m",
"event_title": "Bitcoin Up or Down 5m",
"fees": "0.72065000",
"market_id": "14738",
"market_title": "Bitcoin Up or Down 5m — 11:15–11:20 UTC",
"payout": "50.00000000",
"quote_currency": "usdc",
"result": "settled_yes",
"settled_at": "2026-09-11T11:21:37.000Z",
"settlement_status": "confirmed",
"side": "yes",
"volume": "50"
}
]Settled markets
Every market you held when it resolved — the position you held, what it cost you (collateral plus fees), and what it paid. A market you lost appears here with a payout of 0, which is why this is not the same as filtering your transactions: a losing position moves no money at settlement and so has no transaction. One row per market, newest first.
curl --request GET \
--url https://calibri.io/api/v2/atlas/account/settled \
--header 'X-Auth-Apikey: <api-key>'import requests
url = "https://calibri.io/api/v2/atlas/account/settled"
headers = {"X-Auth-Apikey": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Auth-Apikey': '<api-key>'}};
fetch('https://calibri.io/api/v2/atlas/account/settled', 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://calibri.io/api/v2/atlas/account/settled",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Auth-Apikey: <api-key>"
],
]);
$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://calibri.io/api/v2/atlas/account/settled"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Auth-Apikey", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://calibri.io/api/v2/atlas/account/settled")
.header("X-Auth-Apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/settled")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Auth-Apikey"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"cost": "36.22065000",
"event_id": 14710,
"event_image_url": null,
"event_slug": "btc-updown-5m",
"event_title": "Bitcoin Up or Down 5m",
"fees": "0.72065000",
"market_id": "14738",
"market_title": "Bitcoin Up or Down 5m — 11:15–11:20 UTC",
"payout": "50.00000000",
"quote_currency": "usdc",
"result": "settled_yes",
"settled_at": "2026-09-11T11:21:37.000Z",
"settlement_status": "confirmed",
"side": "yes",
"volume": "50"
}
]Authorizations
HMAC-signed API key. Send X-Auth-Apikey, X-Auth-Nonce and X-Auth-Signature.
Query Parameters
Markets per page. Defaults to 25, capped at 100.
1 <= x <= 100Page number, from 1. Most recently settled market first.
x >= 1Response
What the position cost: collateral plus the fees charged on the fills.
"36.22065000"
14710
null
The parent event's slug — what the row links to.
"btc-updown-5m"
"Bitcoin Up or Down 5m"
The fee part of cost.
"0.72065000"
"14738"
"Bitcoin Up or Down 5m — 11:15–11:20 UTC"
What it paid. 0 on a market you lost.
"50.00000000"
"usdc"
How the market resolved.
settled_yes, settled_no "settled_yes"
"2026-09-11T11:21:37.000Z"
On-chain settlement state, or null when this holding never touched the chain (a custodial fill has nothing to confirm).
confirmed, pending "confirmed"
The side you held. both when you bought both outcomes of the same market — rare, and reported rather than collapsed to the larger leg.
yes, no, both "yes"
Contracts held at resolution.
"50"