---
title: "Get fraud-model performance history"
method: GET
path: "/v2/{tenant_slug}/metrics/model-performance"
tags: ["Metrics"]
---

# Get fraud-model performance history

`GET /v2/{tenant_slug}/metrics/model-performance`

## Request

- Base URL: `https://api.demo-retail.urbanfox.io`
- URL: `https://api.demo-retail.urbanfox.io/v2/{tenant_slug}/metrics/model-performance`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://api.demo-retail.urbanfox.io/v2/oauth/token` scopes: `read:metrics_model_performance`
- TypeScript: <https://skmtc.dev/urbanfox/apis/urbanfox-customer-api/docs/v2/:tenant_slug/metrics/model-performance/get.ts> (a function with typed inputs; its response is checked against the schema)

Retrieve every training-run confusion-matrix snapshot for the platform's fraud-detection models -- full history plus the latest run, not only the latest. Unlike most other /metrics data, this is not tenant-scoped: model quality is measured once at training time and is identical for every tenant. Counts, not precomputed rates: callers derive precision/recall/F1 themselves.

## Path parameters

- `tenant_slug` string, required: Tenant DNS slug (lowercase letters, digits, and hyphens; 3-100 characters).

## Query parameters

- `model` string, nullable: Filter to a single model's performance history (ml-core project id, e.g. `ato_global_sess_clf`). Not a fixed enum -- the model roster is defined in ml-core, not here. Omit to return every model's history.

## Response `200`

Successful Response

- APIResponseModelPerformanceListResponse
  - `data` ModelPerformanceListResponse, required
    - `model_performance` ModelPerformanceDataPoint[], required: One row per (model, class, training run) found. Every run ever exported is included, not only the most recent.
      - `model` string, required: ml-core project id the snapshot belongs to
      - `model_version` string, nullable: SageMaker Model Card version this snapshot was read from. `null` if the project's card had not yet been versioned at export time.
      - `class_label` string, required: Class this row's counts are one-vs-rest for
      - `exported_at` string, date-time, required: When this training run's snapshot was exported (RFC 3339 / ISO 8601 UTC)
      - `threshold` number, nullable: Decision threshold in effect for this run, when a single scalar threshold applies. `null` for argmax multiclass models (no scalar threshold exists) and for models using a per-entity adaptive threshold rather than one literal cutoff -- not directly comparable across models even when both are non-null.
      - `true_positives` integer, required: Count of this run's held-out test cases correctly predicted as `class_label`
      - `false_positives` integer, required: Count of this run's held-out test cases incorrectly predicted as `class_label`
      - `true_negatives` integer, required: Count of this run's held-out test cases correctly predicted as not `class_label`
      - `false_negatives` integer, required: Count of this run's held-out test cases that were `class_label` but predicted otherwise

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Request Validation Failed
- `500`: Internal Server Error
- `502`: Bad Gateway

## Changes

- **2026-09-11** `efe51b9b7324`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/urbanfox/apis/urbanfox-customer-api/changes/v2/:tenant_slug/metrics/model-performance/get.md)

---

[API](https://skmtc.dev/urbanfox/apis/urbanfox-customer-api.md) - [All operations](https://skmtc.dev/urbanfox/apis/urbanfox-customer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/urbanfox/apis/urbanfox-customer-api/revisions/2850fb315db8?raw)
