---
title: "Create system"
method: POST
path: "/projects/{projectId}/systems"
---

# Create system

`POST /projects/{projectId}/systems`

Create a new system definition that specifies the interface contracts for a component you want to evaluate.

A system acts as a template that defines three key contracts through JSON Schemas:
1. Input Schema: What data your system accepts (e.g., user queries, context documents)
2. Output Schema: What data your system produces (e.g., responses, confidence scores)
3. Config Schema: What parameters can be adjusted (e.g., model selection, temperature)

This separation lets you evaluate any system as a black box, focusing on its interface rather than implementation details.

## Path parameters

- `projectId` string, required

## Request body

- object
  - `name` string, required — The name of the system.
  - `description` string, required — The description of the system.
  - `inputSchema` object, required — The schema of the system's inputs.
  - `outputSchema` object, required — The schema of the system's outputs.
  - `configSchema` object, required — The schema of the system's configuration.

## Response `201`

System created successfully

- System — A System Under Test (SUT) defines the interface to a component or service you want to evaluate. It specifies three contracts through schemas: - inputSchema: The structure of data the system accepts. - outputSchema: The structure of data the system produces. - configSchema: The parameters that modify system behavior. This abstraction lets you evaluate any system as a black box, focusing on its interface rather than implementation details. It's particularly useful for systems with variable outputs or complex internal state. Systems are templates - to run evaluations, pair them with a SystemVersion that provides specific parameter values.
  - `id` string, uuid, required — The ID of the system.
  - `name` string, required — The name of the system.
  - `description` string, required — The description of the system.
  - `inputSchema` object, required — The schema of the system's inputs.
  - `outputSchema` object, required — The schema of the system's outputs.
  - `configSchema` object, required — The schema of the system's configuration.

## Other responses

- `401` — Error indicating that the request is not authenticated.
- `500` — An internal service error indicating an issue with the Scorecard service.

---

[API](https://skmtc.dev/scorecard-ai/apis/scorecard-api.md) · [All operations](https://skmtc.dev/scorecard-ai/apis/scorecard-api/llms.txt) · [OpenAPI document](https://skmtc.dev/scorecard-ai/apis/scorecard-api/revisions/a01e12cdb28b?raw)
