# list_scoring_models (/reference/list-scoring-models)



Use it to find a scoring model's `model_id`, or to check whether one you need already exists. For one scoring model's questions, use [`get_scoring_model`](/reference/get-scoring-model).

## GET https://api.finic.ai/v1/scoring_models

Lists your organization's scoring models, newest first (up to 500), with each one's name, criteria and when it was last calibrated. Use it to find a scoring model's `model_id`.

Authorization: `Bearer <API key>` (see [Authentication](/authentication)).

### Responses

- **200**: The organization's scoring models.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| `scoring_models` | array of object | yes | Your scoring models, newest first. |
| `scoring_models[].model_id` | string | yes | The scoring model's id, `scm_…`. |
| `scoring_models[].name` | string | yes | A few words saying what it predicts: the `name` it was created with, or the one it was given in the Finic Portal. Empty for scoring models created before names, until someone names it there. |
| `scoring_models[].status` | `training`, `ready`, `failed` | yes | `training` while it's being created, `ready` to score records, `failed` if creating it failed (create it again). |
| `scoring_models[].criteria` | string | yes | The `criteria` it was created with. Empty if none was given. |
| `scoring_models[].created_at` | string | yes | When the scoring model was created. |
| `scoring_models[].calibrated_at` | string or null | yes | When it was last [calibrated](/reference/calibrate), or `null` if it isn't calibrated. One created from examples is calibrated from the start; one created from its criteria alone scores with Finic's estimated weights until you calibrate it. |
| `scoring_models[].archived_at` | string or null | yes | When it was archived in the Finic Portal, or `null`. Calls to score with or calibrate an archived scoring model fail with `scoring_model_archived` until it's unarchived. |
| `scoring_models[].examples` | integer | yes | The number of examples it was created from, or first calibrated with; 0 until then. |
| `scoring_models[].bad_rate` | number | yes | The share of those examples with `is_bad` true, 0 to 1; 0 until then. |
| `scoring_models[].scored` | integer | yes | The number of records [scored](/reference/score) with it. |
| `scoring_models[].outcomes` | integer | yes | The number of those records with an outcome sent to calibrate. |

```json
{
  "scoring_models": [
    {
      "model_id": "scm_01M4XRC000RT2GZSKYPD8J86G9",
      "name": "Card-not-present payment fraud",
      "status": "ready",
      "criteria": "Card-not-present payments. is_bad: the payment was charged back as fraud within 90 days.",
      "created_at": "2026-10-20T17:04:11Z",
      "calibrated_at": "2026-10-24T09:30:52Z",
      "archived_at": null,
      "examples": 1800,
      "bad_rate": 0.062,
      "scored": 41250,
      "outcomes": 3900
    }
  ]
}
```

- **401**: `authentication_error`: the API key is missing, unknown, revoked or expired.

- **429**: `rate_limited`: over the organization's [request rate](/reference#rate-limits). Retry with backoff.
