Phoenix Prediction Docs

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/settings

GET 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/categories

Categories 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.