update_scoring_model

PATCH /v1/scoring_models/{model_id} renames a scoring model, changes its criteria, or archives or unarchives it.

Send any of name, criteria and archived. Changing its criteria doesn't change the questions it has. Free. See Scoring models.

PATCH
/v1/scoring_models/{model_id}

Renames a scoring model, changes its criteria, or archives or unarchives it: send any of name, criteria and archived. Its criteria is what Finic writes its questions with at its first calibration, and weighs your questions by until then; changing it doesn't change the questions it has. An archived scoring model can't score or be calibrated until it's unarchived. Free.

Path parameters

FieldTypeDescription
model_idrequiredstring

The scoring model's model_id.

Request body

application/json

FieldTypeDescription
namestring

A new name: a few words for people to recognize it by.

criteriastring

New criteria: what the decision is and what a bad outcome means. It can be emptied only once the scoring model is calibrated.

archivedboolean

true to archive it, false to unarchive it.

Responses

The scoring model, as get_scoring_model returns it.

FieldTypeDescription
model_idstring

The scoring model's id, scm_….

namestring

A few words saying what it predicts: the name it was created with, or the one it was given since. Empty for scoring models created before names, until someone names it.

statustraining, ready, failed

training while it's being created, ready to score records, failed if creating it failed (create it again).

criteriastring

Its criteria, as created or as changed since. Empty if none was given.

created_atstring

When the scoring model was created.

calibrated_atstring or null

When it was last calibrated, or null if it isn't calibrated. One created from labeled records is calibrated from the start; one created from its criteria alone has only your questions, weighed by Finic's estimates, until you calibrate it.

archived_atstring or null

When it was archived, or null. Calls to score with or calibrate an archived scoring model fail with scoring_model_archived until it's unarchived, with update_scoring_model or in the Finic Portal.

examplesinteger

The number of labeled records its latest calibration used (creating from them is one); 0 until it's calibrated.

bad_ratenumber

The share of those records with is_bad true, 0 to 1; 0 until it's calibrated.

scoredinteger

The number of records scored with it.

questionsarray of object

The questions it uses, the strongest first. Your own questions it doesn't use are listed on its page in the Finic Portal.

FieldTypeDescription
idstring

The question's id, such as q007, for remove_question or remove_questions.

textstring

The question

sourcefinic, user

finic for a question Finic wrote, user for one you added.

weightnumber

How much it moves the score, from the latest calibration, or Finic's estimate if the scoring model isn't calibrated yet. Positive when a likely yes raises the score, negative when it lowers it; the larger, the more it counts.

Examples

curl -X PATCH 'https://api.finic.ai/v1/scoring_models/string' \  -H "Authorization: Bearer $FINIC_API_KEY" \  -H 'Content-Type: application/json' \  -d '{  "name": "Card-not-present payment fraud (EU)"}'
Example Response
{  "model_id": "scm_01M4XRC000RT2GZSKYPD8J86G9",  "name": "Card-not-present payment fraud (EU)",  "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,  "questions": [    {      "id": "q004",      "text": "This record is a card payment. Is the IP address in a different country from the billing address?",      "source": "finic",      "weight": 0.91    },    {      "id": "q051",      "text": "Was the account opened less than a week before the payment?",      "source": "user",      "weight": 0.38    }  ]}