curl --request GET \
--url https://calibri.io/api/v2/atlas/account/wallet/markets/{id} \
--header 'X-Auth-Apikey: <api-key>'import requests
url = "https://calibri.io/api/v2/atlas/account/wallet/markets/{id}"
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/wallet/markets/{id}', 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/wallet/markets/{id}",
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/wallet/markets/{id}"
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/wallet/markets/{id}")
.header("X-Auth-Apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/wallet/markets/{id}")
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{
"blockchain_key": "polygon-mainnet",
"chain_id": 137,
"condition_id": "0x8f3a…",
"conditional_tokens_address": "0x4D97DCd97eC945f40cF65F87097ACe5EA0476045",
"domain_name": "Calibri CTF Prediction Markets",
"exchange_address": "0xB6Ac44d5A6388b8C7511F2fb20C0c03fD0CeDC83",
"no_token_id": "451…",
"owner_address": "0xE1188438C85C98aADFf1a88f97764E607B4978C3",
"proxy_address": "0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD",
"safe_status": "ready",
"session_keys_enabled": true,
"signature_type": 2,
"usdc_address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"yes_token_id": "713…",
"safe_setup": {
"calls": [
{
"data": "0x095ea7b3…",
"hash": "0x9ab1…",
"nonce": 4,
"operation": 0,
"to": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
}
],
"ready": true
}
}{
"errors": [
"account.custody.deposits_disabled"
]
}CTF config for a market
Everything needed to build and sign an order for one market. Check safe_status first: on setup_required an order will rest and then fail to settle.
curl --request GET \
--url https://calibri.io/api/v2/atlas/account/wallet/markets/{id} \
--header 'X-Auth-Apikey: <api-key>'import requests
url = "https://calibri.io/api/v2/atlas/account/wallet/markets/{id}"
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/wallet/markets/{id}', 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/wallet/markets/{id}",
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/wallet/markets/{id}"
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/wallet/markets/{id}")
.header("X-Auth-Apikey", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/wallet/markets/{id}")
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{
"blockchain_key": "polygon-mainnet",
"chain_id": 137,
"condition_id": "0x8f3a…",
"conditional_tokens_address": "0x4D97DCd97eC945f40cF65F87097ACe5EA0476045",
"domain_name": "Calibri CTF Prediction Markets",
"exchange_address": "0xB6Ac44d5A6388b8C7511F2fb20C0c03fD0CeDC83",
"no_token_id": "451…",
"owner_address": "0xE1188438C85C98aADFf1a88f97764E607B4978C3",
"proxy_address": "0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD",
"safe_status": "ready",
"session_keys_enabled": true,
"signature_type": 2,
"usdc_address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"yes_token_id": "713…",
"safe_setup": {
"calls": [
{
"data": "0x095ea7b3…",
"hash": "0x9ab1…",
"nonce": 4,
"operation": 0,
"to": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
}
],
"ready": true
}
}{
"errors": [
"account.custody.deposits_disabled"
]
}Authorizations
HMAC-signed API key. Send X-Auth-Apikey, X-Auth-Nonce and X-Auth-Signature.
Path Parameters
Response
"polygon-mainnet"
137
The market's on-chain condition.
"0x8f3a…"
Gnosis' Conditional Tokens — where your collateral actually sits.
"0x4D97DCd97eC945f40cF65F87097ACe5EA0476045"
The EIP-712 domain name this exchange was DEPLOYED with. Hashed into every order signature, and different per network — sign with the served value, never a hard-coded one, or the signature will not recover.
"Calibri CTF Prediction Markets"
This deployment's CTF Exchange.
"0xB6Ac44d5A6388b8C7511F2fb20C0c03fD0CeDC83"
The same for the NO leg.
"451…"
What owns the Safe: your wallet EOA, or for a passkey member the secp256r1 signer contract. Served so a client can spot that a different wallet is connected — only the owner can sign for the Safe.
"0xE1188438C85C98aADFf1a88f97764E607B4978C3"
Your Safe — the deposit destination and the maker on your orders.
"0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD"
The single field that answers "can this member trade?". setup_required means an order would REST AND THEN FAIL TO SETTLE — worse than being rejected, so do not trade on it.
ready, setup_required, error, unavailable, unlinked "ready"
Whether this deployment has session trading keys switched on.
true
How this account signs orders: 2 = POLY_GNOSIS_SAFE (Safe owned by your wallet), 3 = POLY_1271 (Safe owned by a passkey). Sign the way your type requires. Whether the Safe is usable yet is safe_status, not this field.
2, 3 2
The collateral token.
"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
The ERC-1155 position id for the YES leg. A token id IS the market-and-outcome identifier, which is why a signed order carries one and no market field.
"713…"
Show child attributes
Show child attributes