curl --request GET \
--url https://hip4-api.totalis.trade/v1/makers/{maker_id}/capital \
--header 'Authorization: Bearer <token>'import requests
url = "https://hip4-api.totalis.trade/v1/makers/{maker_id}/capital"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://hip4-api.totalis.trade/v1/makers/{maker_id}/capital', 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://hip4-api.totalis.trade/v1/makers/{maker_id}/capital",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://hip4-api.totalis.trade/v1/makers/{maker_id}/capital"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://hip4-api.totalis.trade/v1/makers/{maker_id}/capital")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://hip4-api.totalis.trade/v1/makers/{maker_id}/capital")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"context": {
"as_of": "2026-09-26T12:00:02Z",
"status": "CURRENT"
},
"owner": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"signer": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"vault_gross": "5250000000",
"stake_escrow": "150000000",
"payable_owed": "40000000",
"gross_open": "300000000",
"discount": "0",
"requirement": "300000000",
"free_collateral": "4760000000",
"capital_net_of_senior_liabilities": "5060000000",
"pending_commitments": "25000000",
"free_after_pending": "4735000000",
"floor_bps": 0,
"deployment_digest": "0x0f6e28930640eed03d5ef0ff488c4d5329aca6137cecc6fbb315153e9bb518e8",
"actions": [
{
"action": "MAKER_WITHDRAW",
"route": "MAKER_VAULT",
"available": null,
"blockers": [
"WITHDRAWAL_POLICY_UNQUALIFIED"
]
},
{
"action": "MAKER_QUOTE",
"route": "MAKER_VAULT",
"available": null,
"blockers": [
"PRIVATE_QUOTE_CAPACITY_UNAVAILABLE"
]
}
],
"reservations": [
{
"reservation_id": "entry:0xb2f68f5bdd4dd018d8d81481f0f2884cdd772719dcaddec4e56eaa307081f013",
"operation_ids": [
"0x1ba12138e817b7ca9dc394c6342efb4d0500e9ebd5023e2b97cedd14bb279c8c"
],
"value": "25000000",
"status": "ACTIVE"
}
]
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}Get maker capital
Get your maker vault’s capital, reservations and free collateral.
Requires a key for a maker with vault:read and the maker permission READ_CAPITAL.
curl --request GET \
--url https://hip4-api.totalis.trade/v1/makers/{maker_id}/capital \
--header 'Authorization: Bearer <token>'import requests
url = "https://hip4-api.totalis.trade/v1/makers/{maker_id}/capital"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://hip4-api.totalis.trade/v1/makers/{maker_id}/capital', 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://hip4-api.totalis.trade/v1/makers/{maker_id}/capital",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://hip4-api.totalis.trade/v1/makers/{maker_id}/capital"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://hip4-api.totalis.trade/v1/makers/{maker_id}/capital")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://hip4-api.totalis.trade/v1/makers/{maker_id}/capital")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"context": {
"as_of": "2026-09-26T12:00:02Z",
"status": "CURRENT"
},
"owner": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"signer": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"vault_gross": "5250000000",
"stake_escrow": "150000000",
"payable_owed": "40000000",
"gross_open": "300000000",
"discount": "0",
"requirement": "300000000",
"free_collateral": "4760000000",
"capital_net_of_senior_liabilities": "5060000000",
"pending_commitments": "25000000",
"free_after_pending": "4735000000",
"floor_bps": 0,
"deployment_digest": "0x0f6e28930640eed03d5ef0ff488c4d5329aca6137cecc6fbb315153e9bb518e8",
"actions": [
{
"action": "MAKER_WITHDRAW",
"route": "MAKER_VAULT",
"available": null,
"blockers": [
"WITHDRAWAL_POLICY_UNQUALIFIED"
]
},
{
"action": "MAKER_QUOTE",
"route": "MAKER_VAULT",
"available": null,
"blockers": [
"PRIVATE_QUOTE_CAPACITY_UNAVAILABLE"
]
}
],
"reservations": [
{
"reservation_id": "entry:0xb2f68f5bdd4dd018d8d81481f0f2884cdd772719dcaddec4e56eaa307081f013",
"operation_ids": [
"0x1ba12138e817b7ca9dc394c6342efb4d0500e9ebd5023e2b97cedd14bb279c8c"
],
"value": "25000000",
"status": "ACTIVE"
}
]
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}Authorizations
Scoped API key from the Totalis app settings. Each key acts for one account, yours or a maker's, and holds only scopes that account can use. Each operation lists the scopes it requires.
Headers
Required for browser sessions; API keys do not require an Origin.
Path Parameters
On-chain maker ID, as a decimal string. An API key may only name the maker it is bound to; other makers return 404.
Never 0.
20^(0|[1-9][0-9]{0,18}|1[0-7][0-9]{18}|18[0-3][0-9]{17}|184[0-3][0-9]{16}|1844[0-5][0-9]{15}|18446[0-6][0-9]{14}|184467[0-3][0-9]{13}|1844674[0-3][0-9]{12}|184467440[0-6][0-9]{10}|1844674407[0-2][0-9]{9}|18446744073[0-6][0-9]{8}|1844674407370[0-8][0-9]{6}|18446744073709[0-4][0-9]{5}|184467440737095[0-4][0-9]{4}|18446744073709550[0-9]{3}|18446744073709551[0-5][0-9]{2}|1844674407370955160[0-9]|1844674407370955161[0-5])$Response
Your maker capital, reconciled against the vault contract. Check it before you quote: a confirm fails when your capital cannot cover the fill. Read it again on every MAKER_CAPITAL_UPDATED. One freshness status covers the read; amounts are atomic USDC strings or null. No shared caching.
Maker capital lanes and derived collateral, in atomic USDC (6 decimals, "1000000" = 1 USDC). Amounts are null when unavailable; context.status is their freshness.
Freshness of this read: the oldest source observation and one status for every amount in the response.
Show child attributes
Show child attributes
Maker owner (its controller) from the same indexed vault row as the lanes.
^0x[0-9a-f]{40}$Maker signer (its quote signer) from the same indexed vault row as the lanes.
^0x[0-9a-f]{40}$Maker vault lane V from the vault contract, including escrow and payables.
^(0|[1-9][0-9]{0,77})$Bettor net stakes escrowed in this maker's open tickets (E).
^(0|[1-9][0-9]{0,77})$Settled winnings owed to ticket holders and not yet claimed (P).
^(0|[1-9][0-9]{0,77})$Original open maker exposure G: payout minus net stake summed over open tickets.
^(0|[1-9][0-9]{0,77})$Maker discount lane D from the vault contract, which offsets gross_open in the requirement.
^(0|[1-9][0-9]{0,77})$Collateral requirement R = max(G - min(D, G), ceil(G * floor_bps / 10000)) under the pinned release; null when floor_bps is null or an input is null.
^(0|[1-9][0-9]{0,77})$Collateral headroom F = max(V - E - P - R, 0). Not a guarantee of quote acceptance.
^(0|[1-9][0-9]{0,77})$Signed C = V - E - P. Excludes open-ticket valuation; not equity or NAV.
^(0|-?[1-9][0-9]{0,77})$Admission reservations H the venue holds for this maker that are not yet reflected on-chain; the sum of reservations.
^(0|[1-9][0-9]{0,77})$max(F - H, 0): free collateral after unreflected commitments. Not private bot capacity.
^(0|[1-9][0-9]{0,77})$Requirement floor K in basis points from the pinned release; null when the on-chain comparison mismatches, which makes requirement UNAVAILABLE.
0 <= x <= 10000SHA-256 of the exact pinned artifact that names this deployment's chain and vault: the release artifact on chain 999, the environment's deployment manifest on 998. A client compares it with its own pinned artifact to bind the read to its deployment.
^0x[0-9a-f]{64}$Decisions for MAKER_WITHDRAW and MAKER_QUOTE on the MAKER_VAULT route. Both are currently UNAVAILABLE with a blocker until their action policy is qualified.
Show child attributes
Show child attributes
Venue reservations on MAKER_VAULT that make up pending_commitments.
Show child attributes
Show child attributes
Was this page helpful?

