Prediction PnL
curl --request GET \
--url https://calibri.io/api/v2/atlas/account/stats/pnl \
--header 'X-Auth-Apikey: <api-key>'import requests
url = "https://calibri.io/api/v2/atlas/account/stats/pnl"
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/stats/pnl', 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/stats/pnl",
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/stats/pnl"
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/stats/pnl")
.header("X-Auth-Apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/stats/pnl")
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{
"by_currency": [
{
"fees": "4.50",
"legs": 12,
"pnl": "65.50",
"quote_currency": "usdc",
"returned": "520.00",
"staked": "450.00"
}
],
"by_market": [
{
"event_slug": "btc-100k-by-year-end",
"event_title": "Bitcoin price targets",
"legs": 4,
"market_id": "12",
"pnl": "40.00",
"quote_currency": "usdc",
"title": "Will BTC close above $100k on 31 Dec?"
}
],
"capital": [
{
"currency_id": "usdc",
"deposits": "1000.00",
"net_deposits": "750.00",
"withdrawals": "250.00"
}
]
}Account
Prediction PnL
Realized PnL from settled contracts, per-market breakdown, and capital in/out. Open positions are not valued here — mark them client-side against the live price feed. pnl_currency narrows the response to a single collateral currency.
GET
/
api
/
v2
/
atlas
/
account
/
stats
/
pnl
Prediction PnL
curl --request GET \
--url https://calibri.io/api/v2/atlas/account/stats/pnl \
--header 'X-Auth-Apikey: <api-key>'import requests
url = "https://calibri.io/api/v2/atlas/account/stats/pnl"
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/stats/pnl', 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/stats/pnl",
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/stats/pnl"
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/stats/pnl")
.header("X-Auth-Apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/stats/pnl")
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{
"by_currency": [
{
"fees": "4.50",
"legs": 12,
"pnl": "65.50",
"quote_currency": "usdc",
"returned": "520.00",
"staked": "450.00"
}
],
"by_market": [
{
"event_slug": "btc-100k-by-year-end",
"event_title": "Bitcoin price targets",
"legs": 4,
"market_id": "12",
"pnl": "40.00",
"quote_currency": "usdc",
"title": "Will BTC close above $100k on 31 Dec?"
}
],
"capital": [
{
"currency_id": "usdc",
"deposits": "1000.00",
"net_deposits": "750.00",
"withdrawals": "250.00"
}
]
}Authorizations
HMAC-signed API key. Send X-Auth-Apikey, X-Auth-Nonce and X-Auth-Signature.
Response
200 - application/json
Realized totals, one block per collateral currency the member has traded in.
Show child attributes
Show child attributes
Realized PnL per market.
Show child attributes
Show child attributes
Money in versus out, per currency. Deliberately separate from PnL so growth from deposits is never mistaken for performance.
Show child attributes
Show child attributes