create_scoring_model

Create a scoring model from its criteria, or from labeled examples. With examples, ask the user whether to use their data or generated sample data.

Creates a scoring model, as POST /v1/scoring_models. Up to 100 per organization per day.

InputDescription
nameRequired. A few words the user will recognize it by
criteriaWhat the decision is and what is_bad means, in the user's words. Required without data; with it, optional context
dataOptional. Labeled examples: a JSON array of objects, or CSV text with a header row, each row with is_bad
add_questionsOptional. The user's own yes/no questions about a record, used alongside Finic's: up to 20, 500 characters each. With data, the ones that don't help aren't used
api_key/mcp/keys only, if the client doesn't send the key as a header

Returns model_id, job_id and request_id. Poll get_job_status, then call score with the model_id. get_scoring_model then shows the questions it uses.

  • From criteria alone: Finic writes the questions and estimates how much each answer moves the score. It takes less than a minute, then scores any record. Calibrate it later with labeled examples or real outcomes to fit it to the user's data.
  • From labeled examples: calibrated from the start, so more accurate. It takes about two minutes.

Before calling it with data

Ask the user whether to use data they already have or have you generate sample data. A scoring model built on generated data is only for trying Finic out: it isn't calibrated to the company's real fraud distribution.

Good example data is:

  • JSON records about customer identity or events: sign-ups, logins, payments, transactions.
  • One row per past decision, with its real outcome as is_bad (true when bad).
  • Only fields known at the time of the decision: no later chargebacks, fraud flags or verdicts.
  • Consistent: the same field names and types in every row, in words, with units.
  • Enough: 100+ rows with 20+ of each outcome, under 2 MB. Up to 2,000 rows are used.

The records you'll score later must have the same shape. See Example data.

On this page