Get per-game academic outcomes (server-to-server)

Aggregated academic-outcome funnel for one game, computed from the durable outcome store. Authenticated with the pre-shared outcomes API key.

Path Parameters
  • gameId
    Type: string
    min length:  
    1
    max length:  
    64
    required
Responses
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
Request Example for get/outcomes/v1/games/{gameId}
curl https://api-integration.trashcat.rp.devfactory.com/outcomes/v1/games/trashcat \
  --header 'X-Api-Key: YOUR_SECRET_TOKEN'
{
  "gameId": "string",
  "computedAt": "2026-09-01T14:22:20.122Z",
  "playersExcluded": 0,
  "population": {
    "programAffiliated": {
      "value": null,
      "availability": "measured",
      "blockedByUrl": null
    },
    "cold": {
      "value": null,
      "availability": "measured",
      "blockedByUrl": null
    },
    "unclassified": {
      "value": null,
      "availability": "measured",
      "blockedByUrl": null
    }
  },
  "startingLineYield": {
    "windowDays": 1,
    "bars": {
      "confirmAtOrAbove": 0,
      "reopenAtOrBelow": 0
    },
    "cold": {
      "value": null,
      "availability": "measured",
      "blockedByUrl": null
    },
    "programAffiliated": {
      "value": null,
      "availability": "measured",
      "blockedByUrl": null
    }
  },
  "verdictContradiction": {
    "rollingPlacements": 1,
    "placementsInWindow": {
      "value": null,
      "availability": "measured",
      "blockedByUrl": null
    },
    "barRate": 0,
    "exposures": {
      "value": null,
      "availability": "measured",
      "blockedByUrl": null
    },
    "misses": {
      "value": null,
      "availability": "measured",
      "blockedByUrl": null
    },
    "rate": {
      "value": null,
      "availability": "measured",
      "blockedByUrl": null
    }
  },
  "cumulative": [
    {
      "skillId": "string",
      "skillDisplayName": "string",
      "skillGroup": "string",
      "playersStarted": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "placementStarted": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "placementCompleted": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "placementYieldRate": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "enteredWithMastery": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "denominator": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "reachedMastery": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "masteryAchieved": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "pending": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "inactive": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "masteredInThisGame": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "masteredElsewhere": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "successRate": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "masteryEarned": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "masteryFromPlacement": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "timeToMastery": {
        "calendarDays": {
          "availability": "measured",
          "blockedByUrl": null,
          "average": null,
          "percentiles": {
            "p10": 1,
            "p25": 1,
            "p50": 1,
            "p75": 1,
            "p90": 1
          },
          "histogram": [
            {
              "lowerBound": 1,
              "upperBound": null,
              "playerCount": 0
            }
          ]
        },
        "playHours": {
          "availability": "measured",
          "blockedByUrl": null,
          "average": null,
          "percentiles": {
            "p10": 1,
            "p25": 1,
            "p50": 1,
            "p75": 1,
            "p90": 1
          },
          "histogram": [
            {
              "lowerBound": 1,
              "upperBound": null,
              "playerCount": 0
            }
          ]
        }
      }
    }
  ],
  "cohorts": [
    {
      "isoWeek": "string",
      "cohortStartDate": "string",
      "skills": [
        {
          "skillId": "string",
          "skillDisplayName": "string",
          "skillGroup": "string",
          "playersStarted": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "placementStarted": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "placementCompleted": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "placementYieldRate": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "enteredWithMastery": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "denominator": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "reachedMastery": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "masteryAchieved": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "pending": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "inactive": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "masteredInThisGame": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "masteredElsewhere": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "successRate": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "masteryEarned": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "masteryFromPlacement": {
            "value": null,
            "availability": "measured",
            "blockedByUrl": null
          },
          "timeToMastery": {
            "calendarDays": {
              "availability": "measured",
              "blockedByUrl": null,
              "average": null,
              "percentiles": {
                "p10": 1,
                "p25": 1,
                "p50": 1,
                "p75": 1,
                "p90": 1
              },
              "histogram": [
                {
                  "lowerBound": 1,
                  "upperBound": null,
                  "playerCount": 0
                }
              ]
            },
            "playHours": {
              "availability": "measured",
              "blockedByUrl": null,
              "average": null,
              "percentiles": {
                "p10": 1,
                "p25": 1,
                "p50": 1,
                "p75": 1,
                "p90": 1
              },
              "histogram": [
                {
                  "lowerBound": 1,
                  "upperBound": null,
                  "playerCount": 0
                }
              ]
            }
          }
        }
      ]
    }
  ],
  "courses": [
    {
      "courseId": "string",
      "courseDisplayName": "string",
      "enteredWithMastery": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "reachedMastery": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "inactiveBeforeAssessment": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "pendingAssessment": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "inactiveWhileLearning": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "pendingLearning": {
        "value": null,
        "availability": "measured",
        "blockedByUrl": null
      },
      "timeToMastery": {
        "calendarDays": {
          "availability": "measured",
          "blockedByUrl": null,
          "average": null,
          "percentiles": {
            "p10": 1,
            "p25": 1,
            "p50": 1,
            "p75": 1,
            "p90": 1
          },
          "histogram": [
            {
              "lowerBound": 1,
              "upperBound": null,
              "playerCount": 0
            }
          ]
        },
        "playHours": {
          "availability": "measured",
          "blockedByUrl": null,
          "average": null,
          "percentiles": {
            "p10": 1,
            "p25": 1,
            "p50": 1,
            "p75": 1,
            "p90": 1
          },
          "histogram": [
            {
              "lowerBound": 1,
              "upperBound": null,
              "playerCount": 0
            }
          ]
        }
      },
      "effortBeforeInactivity": {
        "calendarDays": {
          "availability": "measured",
          "blockedByUrl": null,
          "average": null,
          "percentiles": {
            "p10": 1,
            "p25": 1,
            "p50": 1,
            "p75": 1,
            "p90": 1
          },
          "histogram": [
            {
              "lowerBound": 1,
              "upperBound": null,
              "playerCount": 0
            }
          ]
        },
        "playHours": {
          "availability": "measured",
          "blockedByUrl": null,
          "average": null,
          "percentiles": {
            "p10": 1,
            "p25": 1,
            "p50": 1,
            "p75": 1,
            "p90": 1
          },
          "histogram": [
            {
              "lowerBound": 1,
              "upperBound": null,
              "playerCount": 0
            }
          ]
        }
      }
    }
  ],
  "overallTimeToMastery": {
    "calendarDays": {
      "availability": "measured",
      "blockedByUrl": null,
      "average": null,
      "percentiles": {
        "p10": 1,
        "p25": 1,
        "p50": 1,
        "p75": 1,
        "p90": 1
      },
      "histogram": [
        {
          "lowerBound": 1,
          "upperBound": null,
          "playerCount": 0
        }
      ]
    },
    "playHours": {
      "availability": "measured",
      "blockedByUrl": null,
      "average": null,
      "percentiles": {
        "p10": 1,
        "p25": 1,
        "p50": 1,
        "p75": 1,
        "p90": 1
      },
      "histogram": [
        {
          "lowerBound": 1,
          "upperBound": null,
          "playerCount": 0
        }
      ]
    }
  },
  "overallEffortBeforeInactivity": {
    "calendarDays": {
      "availability": "measured",
      "blockedByUrl": null,
      "average": null,
      "percentiles": {
        "p10": 1,
        "p25": 1,
        "p50": 1,
        "p75": 1,
        "p90": 1
      },
      "histogram": [
        {
          "lowerBound": 1,
          "upperBound": null,
          "playerCount": 0
        }
      ]
    },
    "playHours": {
      "availability": "measured",
      "blockedByUrl": null,
      "average": null,
      "percentiles": {
        "p10": 1,
        "p25": 1,
        "p50": 1,
        "p75": 1,
        "p90": 1
      },
      "histogram": [
        {
          "lowerBound": 1,
          "upperBound": null,
          "playerCount": 0
        }
      ]
    }
  }
}