curl --request POST \
--url https://calibri.io/api/v2/atlas/account/orders \
--header 'Content-Type: application/json' \
--header 'X-Auth-Apikey: <api-key>' \
--data '
{
"market": "12",
"ord_type": "limit",
"side": "yes",
"signed_order": {
"expiration": "1797600000",
"fee_rate_bps": "0",
"maker": "0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD",
"maker_amount": "60000000",
"nonce": "0",
"salt": "5821094412",
"side": 0,
"signature": "0x4f2a…",
"signature_type": 2,
"signer": "0xE1188438C85C98aADFf1a88f97764E607B4978C3",
"taker": "0x0000000000000000000000000000000000000000",
"taker_amount": "100000000",
"token_id": "7138104..."
},
"volume": "100",
"direction": "buy",
"ioc": false,
"post_only": false,
"price": "0.60"
}
'import requests
url = "https://calibri.io/api/v2/atlas/account/orders"
payload = {
"market": "12",
"ord_type": "limit",
"side": "yes",
"signed_order": {
"expiration": "1797600000",
"fee_rate_bps": "0",
"maker": "0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD",
"maker_amount": "60000000",
"nonce": "0",
"salt": "5821094412",
"side": 0,
"signature": "0x4f2a…",
"signature_type": 2,
"signer": "0xE1188438C85C98aADFf1a88f97764E607B4978C3",
"taker": "0x0000000000000000000000000000000000000000",
"taker_amount": "100000000",
"token_id": "7138104..."
},
"volume": "100",
"direction": "buy",
"ioc": False,
"post_only": False,
"price": "0.60"
}
headers = {
"X-Auth-Apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Auth-Apikey': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
market: '12',
ord_type: 'limit',
side: 'yes',
signed_order: {
expiration: '1797600000',
fee_rate_bps: '0',
maker: '0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD',
maker_amount: '60000000',
nonce: '0',
salt: '5821094412',
side: 0,
signature: '0x4f2a…',
signature_type: 2,
signer: '0xE1188438C85C98aADFf1a88f97764E607B4978C3',
taker: '0x0000000000000000000000000000000000000000',
taker_amount: '100000000',
token_id: '7138104...'
},
volume: '100',
direction: 'buy',
ioc: false,
post_only: false,
price: '0.60'
})
};
fetch('https://calibri.io/api/v2/atlas/account/orders', 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/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'market' => '12',
'ord_type' => 'limit',
'side' => 'yes',
'signed_order' => [
'expiration' => '1797600000',
'fee_rate_bps' => '0',
'maker' => '0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD',
'maker_amount' => '60000000',
'nonce' => '0',
'salt' => '5821094412',
'side' => 0,
'signature' => '0x4f2a…',
'signature_type' => 2,
'signer' => '0xE1188438C85C98aADFf1a88f97764E607B4978C3',
'taker' => '0x0000000000000000000000000000000000000000',
'taker_amount' => '100000000',
'token_id' => '7138104...'
],
'volume' => '100',
'direction' => 'buy',
'ioc' => false,
'post_only' => false,
'price' => '0.60'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://calibri.io/api/v2/atlas/account/orders"
payload := strings.NewReader("{\n \"market\": \"12\",\n \"ord_type\": \"limit\",\n \"side\": \"yes\",\n \"signed_order\": {\n \"expiration\": \"1797600000\",\n \"fee_rate_bps\": \"0\",\n \"maker\": \"0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD\",\n \"maker_amount\": \"60000000\",\n \"nonce\": \"0\",\n \"salt\": \"5821094412\",\n \"side\": 0,\n \"signature\": \"0x4f2a…\",\n \"signature_type\": 2,\n \"signer\": \"0xE1188438C85C98aADFf1a88f97764E607B4978C3\",\n \"taker\": \"0x0000000000000000000000000000000000000000\",\n \"taker_amount\": \"100000000\",\n \"token_id\": \"7138104...\"\n },\n \"volume\": \"100\",\n \"direction\": \"buy\",\n \"ioc\": false,\n \"post_only\": false,\n \"price\": \"0.60\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Auth-Apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://calibri.io/api/v2/atlas/account/orders")
.header("X-Auth-Apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"market\": \"12\",\n \"ord_type\": \"limit\",\n \"side\": \"yes\",\n \"signed_order\": {\n \"expiration\": \"1797600000\",\n \"fee_rate_bps\": \"0\",\n \"maker\": \"0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD\",\n \"maker_amount\": \"60000000\",\n \"nonce\": \"0\",\n \"salt\": \"5821094412\",\n \"side\": 0,\n \"signature\": \"0x4f2a…\",\n \"signature_type\": 2,\n \"signer\": \"0xE1188438C85C98aADFf1a88f97764E607B4978C3\",\n \"taker\": \"0x0000000000000000000000000000000000000000\",\n \"taker_amount\": \"100000000\",\n \"token_id\": \"7138104...\"\n },\n \"volume\": \"100\",\n \"direction\": \"buy\",\n \"ioc\": false,\n \"post_only\": false,\n \"price\": \"0.60\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Auth-Apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"market\": \"12\",\n \"ord_type\": \"limit\",\n \"side\": \"yes\",\n \"signed_order\": {\n \"expiration\": \"1797600000\",\n \"fee_rate_bps\": \"0\",\n \"maker\": \"0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD\",\n \"maker_amount\": \"60000000\",\n \"nonce\": \"0\",\n \"salt\": \"5821094412\",\n \"side\": 0,\n \"signature\": \"0x4f2a…\",\n \"signature_type\": 2,\n \"signer\": \"0xE1188438C85C98aADFf1a88f97764E607B4978C3\",\n \"taker\": \"0x0000000000000000000000000000000000000000\",\n \"taker_amount\": \"100000000\",\n \"token_id\": \"7138104...\"\n },\n \"volume\": \"100\",\n \"direction\": \"buy\",\n \"ioc\": false,\n \"post_only\": false,\n \"price\": \"0.60\"\n}"
response = http.request(request)
puts response.read_body{
"contracts_count": 1,
"created_at": "2026-08-07T10:00:00Z",
"id": "usdc",
"locked": "61.68",
"market": "12",
"ord_type": "limit",
"origin_volume": "100",
"remaining_volume": "40",
"side": "yes",
"state": "active",
"updated_at": "2026-08-07T10:05:00Z",
"filled_volume": "60",
"price": "0.60"
}{
"errors": [
"account.custody.deposits_disabled"
]
}Place a signed order
Places a non-custodial order. signed_order is an EIP-712 signature over the CTF Exchange Order struct. Atlas validates it — a signature it cannot verify is rejected rather than placed — then relays to the engine and attaches the signature. Placing locks the stake PLUS the maximum taker fee the fill could incur; the unused reserve is released. PASSKEY WALLETS: a passkey signs only in the browser it was registered in, and browser-held session keys are non-extractable, so neither can sign from a script. To place orders programmatically, add a SECOND SIGNING KEY to your wallet (Settings → Wallet → Signing keys) — an address you hold the key for, which becomes an owner of the same Safe. Orders stay signature_type 3 with maker == signer == the Safe; the signature becomes a standard Safe owner signature over the EIP-712 SafeMessage(bytes message) whose message is abi.encode(orderHash), in a domain of (chainId, the Safe). Signing the order hash directly always fails. MARKET ORDERS AND EXPIRY: a market-style order is a limit at a price ceiling; send ioc: true and the unfilled remainder is refunded rather than rested. The signature’s expiration is enforced by the engine — it never matches an order within 30 seconds of its expiry (a fill must settle on-chain before the signature lapses), cancels and refunds a resting order at that point, and rejects an order that arrives inside that window (market.order.expired).
curl --request POST \
--url https://calibri.io/api/v2/atlas/account/orders \
--header 'Content-Type: application/json' \
--header 'X-Auth-Apikey: <api-key>' \
--data '
{
"market": "12",
"ord_type": "limit",
"side": "yes",
"signed_order": {
"expiration": "1797600000",
"fee_rate_bps": "0",
"maker": "0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD",
"maker_amount": "60000000",
"nonce": "0",
"salt": "5821094412",
"side": 0,
"signature": "0x4f2a…",
"signature_type": 2,
"signer": "0xE1188438C85C98aADFf1a88f97764E607B4978C3",
"taker": "0x0000000000000000000000000000000000000000",
"taker_amount": "100000000",
"token_id": "7138104..."
},
"volume": "100",
"direction": "buy",
"ioc": false,
"post_only": false,
"price": "0.60"
}
'import requests
url = "https://calibri.io/api/v2/atlas/account/orders"
payload = {
"market": "12",
"ord_type": "limit",
"side": "yes",
"signed_order": {
"expiration": "1797600000",
"fee_rate_bps": "0",
"maker": "0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD",
"maker_amount": "60000000",
"nonce": "0",
"salt": "5821094412",
"side": 0,
"signature": "0x4f2a…",
"signature_type": 2,
"signer": "0xE1188438C85C98aADFf1a88f97764E607B4978C3",
"taker": "0x0000000000000000000000000000000000000000",
"taker_amount": "100000000",
"token_id": "7138104..."
},
"volume": "100",
"direction": "buy",
"ioc": False,
"post_only": False,
"price": "0.60"
}
headers = {
"X-Auth-Apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Auth-Apikey': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
market: '12',
ord_type: 'limit',
side: 'yes',
signed_order: {
expiration: '1797600000',
fee_rate_bps: '0',
maker: '0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD',
maker_amount: '60000000',
nonce: '0',
salt: '5821094412',
side: 0,
signature: '0x4f2a…',
signature_type: 2,
signer: '0xE1188438C85C98aADFf1a88f97764E607B4978C3',
taker: '0x0000000000000000000000000000000000000000',
taker_amount: '100000000',
token_id: '7138104...'
},
volume: '100',
direction: 'buy',
ioc: false,
post_only: false,
price: '0.60'
})
};
fetch('https://calibri.io/api/v2/atlas/account/orders', 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/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'market' => '12',
'ord_type' => 'limit',
'side' => 'yes',
'signed_order' => [
'expiration' => '1797600000',
'fee_rate_bps' => '0',
'maker' => '0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD',
'maker_amount' => '60000000',
'nonce' => '0',
'salt' => '5821094412',
'side' => 0,
'signature' => '0x4f2a…',
'signature_type' => 2,
'signer' => '0xE1188438C85C98aADFf1a88f97764E607B4978C3',
'taker' => '0x0000000000000000000000000000000000000000',
'taker_amount' => '100000000',
'token_id' => '7138104...'
],
'volume' => '100',
'direction' => 'buy',
'ioc' => false,
'post_only' => false,
'price' => '0.60'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://calibri.io/api/v2/atlas/account/orders"
payload := strings.NewReader("{\n \"market\": \"12\",\n \"ord_type\": \"limit\",\n \"side\": \"yes\",\n \"signed_order\": {\n \"expiration\": \"1797600000\",\n \"fee_rate_bps\": \"0\",\n \"maker\": \"0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD\",\n \"maker_amount\": \"60000000\",\n \"nonce\": \"0\",\n \"salt\": \"5821094412\",\n \"side\": 0,\n \"signature\": \"0x4f2a…\",\n \"signature_type\": 2,\n \"signer\": \"0xE1188438C85C98aADFf1a88f97764E607B4978C3\",\n \"taker\": \"0x0000000000000000000000000000000000000000\",\n \"taker_amount\": \"100000000\",\n \"token_id\": \"7138104...\"\n },\n \"volume\": \"100\",\n \"direction\": \"buy\",\n \"ioc\": false,\n \"post_only\": false,\n \"price\": \"0.60\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Auth-Apikey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://calibri.io/api/v2/atlas/account/orders")
.header("X-Auth-Apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"market\": \"12\",\n \"ord_type\": \"limit\",\n \"side\": \"yes\",\n \"signed_order\": {\n \"expiration\": \"1797600000\",\n \"fee_rate_bps\": \"0\",\n \"maker\": \"0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD\",\n \"maker_amount\": \"60000000\",\n \"nonce\": \"0\",\n \"salt\": \"5821094412\",\n \"side\": 0,\n \"signature\": \"0x4f2a…\",\n \"signature_type\": 2,\n \"signer\": \"0xE1188438C85C98aADFf1a88f97764E607B4978C3\",\n \"taker\": \"0x0000000000000000000000000000000000000000\",\n \"taker_amount\": \"100000000\",\n \"token_id\": \"7138104...\"\n },\n \"volume\": \"100\",\n \"direction\": \"buy\",\n \"ioc\": false,\n \"post_only\": false,\n \"price\": \"0.60\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://calibri.io/api/v2/atlas/account/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Auth-Apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"market\": \"12\",\n \"ord_type\": \"limit\",\n \"side\": \"yes\",\n \"signed_order\": {\n \"expiration\": \"1797600000\",\n \"fee_rate_bps\": \"0\",\n \"maker\": \"0x0DECE7d83f8D47CD8dD8278c0F22c361C58577BD\",\n \"maker_amount\": \"60000000\",\n \"nonce\": \"0\",\n \"salt\": \"5821094412\",\n \"side\": 0,\n \"signature\": \"0x4f2a…\",\n \"signature_type\": 2,\n \"signer\": \"0xE1188438C85C98aADFf1a88f97764E607B4978C3\",\n \"taker\": \"0x0000000000000000000000000000000000000000\",\n \"taker_amount\": \"100000000\",\n \"token_id\": \"7138104...\"\n },\n \"volume\": \"100\",\n \"direction\": \"buy\",\n \"ioc\": false,\n \"post_only\": false,\n \"price\": \"0.60\"\n}"
response = http.request(request)
puts response.read_body{
"contracts_count": 1,
"created_at": "2026-08-07T10:00:00Z",
"id": "usdc",
"locked": "61.68",
"market": "12",
"ord_type": "limit",
"origin_volume": "100",
"remaining_volume": "40",
"side": "yes",
"state": "active",
"updated_at": "2026-08-07T10:05:00Z",
"filled_volume": "60",
"price": "0.60"
}{
"errors": [
"account.custody.deposits_disabled"
]
}Authorizations
HMAC-signed API key. Send X-Auth-Apikey, X-Auth-Nonce and X-Auth-Signature.
Body
Market id.
"12"
limit, market "limit"
The OUTCOME this order is about — never buy/sell. Pair it with direction: a sell of yes and a buy of no are different orders that happen to sit on the same side of the book.
yes, no "yes"
The EIP-712-signed order. Validated before anything is placed — a signature the server cannot verify is rejected, never rested.
Show child attributes
Show child attributes
Number of shares.
"100"
Whether you are opening or closing. buy posts collateral and acquires the outcome; sell offers outcome tokens you already hold, so it locks INVENTORY rather than cash and its locked is zero. Defaults to buy, which is how every order behaved before position exit. See /account/positions for how much of a holding is sellable.
buy, sell "buy"
Immediate-or-cancel. Set it on a marketable order — the "market" order a signed wallet has to send as a limit at a price ceiling: whatever the book cannot fill on arrival is refunded instead of resting at that ceiling. Ignored together with post_only. Recorded on the order as ioc.
false
Reject the order if it would take liquidity. A post-only order reserves no taker fee, because it can only ever rest as a maker.
false
Limit price, 0.01–0.99, in whole cents (e.g. 0.27, not 0.275) — an order finer than the market precision is rejected, not rounded. Required for a limit order.
"0.60"
Response
Contracts formed from this order.
1
"2026-08-07T10:00:00Z"
"usdc"
Collateral locked. A separate taker-fee reserve is held alongside it and released when unused.
"61.68"
Market id.
"12"
limit, market "limit"
"100"
Unmatched remainder.
"40"
yes, no "yes"
pending, wait, done, cancel, reject "active"
"2026-08-07T10:05:00Z"
"60"
Limit price, 0.01–0.99, in whole cents (e.g. 0.27, not 0.275) — finer than the market precision is rejected, not rounded.
"0.60"