Power Oracle

API Reference

Public endpoints, request shape, response structure, and live schema access for Power Oracle.

Live Endpoints

Agents and software systems should use the OpenAPI schema directly.

Browsable Swagger and ReDoc interfaces are intentionally not part of this public docs portal.

Current Public Endpoints

  • GET /health
  • GET /movements
  • POST /compute-power

Request Model

POST /compute-power accepts a split-aware request body.

Required top-level fields:

  • athlete_uuid
  • evaluation_context
  • duration_seconds
  • user
  • splits

Context rules:

  • completed requires performed_date
  • planned requires planned_for_date
  • planned and hypothetical may include scenario_label
  • hypothetical must not include performed_date or planned_for_date

The user object includes:

  • height
  • body_mass
  • optional age_years
  • optional sex

Each split includes:

  • optional label
  • active duration_seconds
  • optional rest_seconds_after
  • work.movements[]

Example Request

{
  "athlete_uuid": "11111111-1111-1111-1111-111111111111",
  "evaluation_context": "completed",
  "performed_date": "2026-03-20",
  "duration_seconds": 133,
  "user": {
    "height": { "value": 70, "unit": "in" },
    "body_mass": { "value": 180, "unit": "lb" },
    "age_years": 35,
    "sex": "male"
  },
  "splits": [
    {
      "label": "21 thrusters",
      "duration_seconds": 33,
      "work": {
        "movements": [
          {
            "movement": "thruster",
            "reps": 21,
            "inputs": {
              "external_load": { "value": 95, "unit": "lb" }
            },
            "spec_overrides": {}
          }
        ]
      }
    },
    {
      "label": "21 pull-ups",
      "duration_seconds": 27,
      "work": {
        "movements": [
          {
            "movement": "pull_up",
            "reps": 21,
            "spec_overrides": {}
          }
        ]
      }
    }
  ]
}

Response Shape

POST /compute-power returns:

  • results.session
  • results.splits[]
  • results.summary
  • results.movement_rollups[]
  • notes

Important semantics:

  • results.session reports session totals and elapsed/session-active power
  • results.splits[] reports per-split work and active-duration power
  • results.summary captures peak, minimum, mean split power, dropoff, and consistency
  • results.movement_rollups[] preserves movement totals without inventing per-movement timing inside grouped splits
  • notes explains denominator and modeling assumptions

Additional Details

  • X-PowerOracle-Agent is an optional request header and is stored with successful compute events.
  • api_version and compute_model_version are server-managed and should not be sent by clients.
  • Successful compute requests are persisted for later historical analysis.