Settings and Categories
Read operator settings and active categories (read-only)
The Operator API exposes your operator's settings and the active categories your events can use. Both are read-only here.
Settings
GET /operator/api/settingsSettings are read-only through the Operator API. No endpoint changes them: PUT and PATCH on /operator/api/settings no longer exist, and a signed request to either returns 404 with { "error": "not_found" }.
GET returns the operator code, name, per-currency trading limits, and fee schedule. The limits are those of the environment the request names (X-Operator-Environment), because sandbox and production keep their own. currencies is an array of limit maps, and fee_schedule is either a schedule map or null:
{
"code": "acme",
"name": "Acme",
"currencies": [
{ "code": "KES", "min_order_size": "10", "max_order_size": "100000" }
],
"fee_schedule": {
"shape": "kalshi_curve",
"taker_coefficient": "0.07",
"maker_rebate_coefficient": "0"
}
}Who changes what
| Setting | Who sets it |
|---|---|
| Fee schedule, trading engine, currencies, operator status | Phoenix. Your staff cannot change them, in the API or in the back office |
| Name, display name, time zone, languages, formatting country, each environment's currency minimum and maximum order, wallet URL, sites, key and status | Your Admin, in the back office under Manage > Your operator |
To change the fee schedule, ask your Phoenix contact.
Reading the fee schedule
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.
The fee on each fill is rounded to the currency's smallest unit in the house's favour: a taker fee rounds up and a maker rebate rounds down (see Exact amounts). A fee_schedule of null means no schedule is configured, and players cannot place orders until Phoenix sets one. Phoenix sets a schedule when it creates an operator, so you should not see null.
Categories
GET /operator/api/categoriesPhoenix returns the active categories your events can use: Phoenix's own categories and any your team created. Categories belong to your operator, not to an environment, so sandbox and production return the same list. They are sorted by display order, then by name:
{
"categories": [
{
"id": "category-uuid",
"code": "sports",
"slug": "sports",
"name": "Sports",
"display_order": 20,
"status": "active"
}
]
}Use category ids when reconciling which category an event belongs to, or with the category_id filter of stats. The order your players see in the category bar is your own, set in the back office's Curation, and can differ from display_order.