Settings and Categories
Read operator settings and active categories
The Operator API exposes operational settings and the active categories for the authenticated operator environment.
Settings
GET /operator/api/settings
PATCH /operator/api/settings
PUT /operator/api/settingsGET returns the operator code, display name, per-currency trading limits, and fee schedule. currencies is an array of limit maps, and fee_schedule is either a schedule map or null:
{
"code": "acme",
"name": "Acme",
"currencies": [
{ "code": "USDT", "min_order_size": "1", "max_order_size": "1000" }
],
"fee_schedule": null
}PATCH and PUT accept fee_schedule. Extra fields are ignored so an API caller cannot change identity or access-sensitive operator fields through this endpoint.
{
"fee_schedule": {
"shape": "kalshi_curve",
"taker_coefficient": "0.07",
"maker_rebate_coefficient": "0"
}
}shape: "kalshi_curve" charges fee = taker_coefficient * price * (1 - price) * quantity per fill (it peaks near price 0.50 and is near-zero on extreme odds). shape: "flat" charges fee = taker_coefficient * price * quantity. maker_rebate_coefficient pays makers out of the taker fee to incentivize liquidity. Fees are charged per fill at trade time on notional, not on profit at settlement. Send fee_schedule: null to clear the schedule, which disables trading.
Categories
GET /operator/api/categoriesCategories are read-only from the Operator API. Phoenix returns active categories for the authenticated operator environment, sorted by display order:
{
"categories": [
{
"id": "category-uuid",
"code": "sports",
"slug": "sports",
"name": "Sports",
"display_order": 20,
"status": "active"
}
]
}Use category IDs when reconciling which public area a listing belongs to, checking iframe feed behavior, or comparing admin configuration with player-facing discovery.