> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stateset.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Save model checkpoint

> **Required scope:** models:manage

**Required scope:** `models:manage`

### Request body

`SaveCheckpointRequest`

<ParamField body="description" type="string">
  Optional description
</ParamField>

<ParamField body="name" type="string" required>
  Checkpoint name
</ParamField>

<ParamField body="tags" type="string[]">
  Tags for organization
</ParamField>

<ParamField body="version" type="string" required>
  Version string
</ParamField>

### Response

`SaveCheckpointResponse`

<ResponseField name="checkpoint" type="ModelCheckpoint" required>
  <Expandable title="ModelCheckpoint">
    <ResponseField name="config" type="ModelConfig" required>
      <Expandable title="ModelConfig">
        <ResponseField name="attention_heads" type="integer" required>
          Number of attention heads
        </ResponseField>

        <ResponseField name="dropout" type="number (float)" required>
          Dropout rate
        </ResponseField>

        <ResponseField name="embedding_dim" type="integer" required>
          Embedding dimension
        </ResponseField>

        <ResponseField name="features" type="string[]" required>
          Feature flags enabled
        </ResponseField>

        <ResponseField name="hidden_dims" type="integer[]" required>
          Hidden layer dimensions
        </ResponseField>

        <ResponseField name="max_sequence_length" type="integer" required>
          Maximum sequence length
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="created_at" type="integer (int64)" required>
      Creation timestamp (Unix ms)
    </ResponseField>

    <ResponseField name="description" type="string">
      Optional description
    </ResponseField>

    <ResponseField name="id" type="string" required>
      Unique checkpoint identifier
    </ResponseField>

    <ResponseField name="metrics" type="ModelMetrics" required>
      <Expandable title="ModelMetrics">
        <ResponseField name="accuracy" type="number (double)" required>
          Accuracy on test set
        </ResponseField>

        <ResponseField name="epochs" type="integer" required>
          Training epochs completed
        </ResponseField>

        <ResponseField name="f1_score" type="number (double)" required>
          F1 score
        </ResponseField>

        <ResponseField name="train_loss" type="number (double)" required>
          Training loss
        </ResponseField>

        <ResponseField name="training_time_secs" type="integer (int64)" required>
          Total training time (seconds)
        </ResponseField>

        <ResponseField name="val_loss" type="number (double)" required>
          Validation loss
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="name" type="string" required>
      Human-readable name
    </ResponseField>

    <ResponseField name="tags" type="string[]">
      Tags for organization
    </ResponseField>

    <ResponseField name="version" type="string" required>
      Version string (semver)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="checkpoint_id" type="string" required>
  Created checkpoint ID
</ResponseField>

### Status codes

| Code  | Meaning                                            |
| ----- | -------------------------------------------------- |
| `201` | Checkpoint created                                 |
| `400` | Invalid request                                    |
| `401` | Unauthorized — missing or invalid credentials      |
| `403` | Forbidden — the key/token lacks the required scope |
| `429` | Rate limited — see Retry-After / X-RateLimit-Reset |

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url 'https://api.nsr.stateset.com/api/v1/model/checkpoints' \
    --header 'X-API-Key: YOUR_API_KEY' \
    --header 'Content-Type: application/json' \
    --data '{
    "description": "Two-person tent, green — replacement for damaged pole set.",
    "name": "Two-Person Tent",
    "tags": [
      "priority"
    ],
    "version": "2026-08-01"
  }'
  ```
</RequestExample>

<ResponseExample>
  ```json 201 theme={null}
  {
    "checkpoint": {
      "config": {
        "attention_heads": 1,
        "dropout": 1.5,
        "embedding_dim": 1,
        "features": [],
        "hidden_dims": [],
        "max_sequence_length": 1
      },
      "created_at": 1,
      "description": "Two-person tent, green — replacement for damaged pole set.",
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "metrics": {
        "accuracy": 1.5,
        "epochs": 1,
        "f1_score": 7.5,
        "train_loss": 1.5,
        "training_time_secs": 1,
        "val_loss": 1.5
      },
      "name": "Two-Person Tent",
      "tags": [
        "priority"
      ],
      "version": "2026-08-01"
    },
    "checkpoint_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  }
  ```
</ResponseExample>
