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

# Version Pinning

> How Reducto model versioning works and how to pin versions

Reducto continuously improves the models powering document processing. This page explains how versioning works and how to control which version you use. For the current status of each model version, see [Model Versions](/reference/model-versions).

## How Versioning Works

Each model version progresses through four stages:

1. **Alpha**: New version available for opt-in testing via the `alpha` config
2. **Default**: Automatically used for all requests
3. **Deprecated**: Old default, still accessible via `alpha` config
4. **Removed**: No longer available

Requesting an unknown or removed version returns an error listing the available versions.

## Pinning a Version

To pin a specific version, pass it in your request's `settings.alpha` config:

<CodeGroup>
  ```python Python theme={null}
  # Layout version pinning (parse)
  result = client.parse.run(
      input="https://example.com/document.pdf",
      settings={
          "alpha": {
              "layout_model": "v2"
          }
      }
  )

  # Extract version pinning (requires citations enabled)
  result = client.extract.run(
      input="https://example.com/document.pdf",
      instructions={"schema": {...}},
      settings={
          "citations": {"enabled": True},
          "alpha": {
              "extract_model": "v2"
          }
      }
  )
  ```

  ```javascript Node.js theme={null}
  // Layout version pinning (parse)
  const result = await client.parse.run({
    input: 'https://example.com/document.pdf',
    settings: {
      alpha: {
        layout_model: 'v2'
      }
    }
  });

  // Extract version pinning (requires citations enabled)
  const extractResult = await client.extract.run({
    input: 'https://example.com/document.pdf',
    instructions: { schema: {...} },
    settings: {
      citations: { enabled: true },
      alpha: {
        extract_model: 'v2'
      }
    }
  });
  ```

  ```bash cURL theme={null}
  # Layout version pinning (parse)
  curl -X POST https://platform.reducto.ai/parse \
    -H "Authorization: Bearer $REDUCTO_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "input": "https://example.com/document.pdf",
      "settings": {
        "alpha": {
          "layout_model": "v2"
        }
      }
    }'

  # Extract version pinning (requires citations enabled)
  curl -X POST https://platform.reducto.ai/extract \
    -H "Authorization: Bearer $REDUCTO_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "input": "https://example.com/document.pdf",
      "instructions": {"schema": {...}},
      "settings": {
        "citations": {"enabled": true},
        "alpha": {
          "extract_model": "v2"
        }
      }
    }'
  ```
</CodeGroup>

<Note>
  Model versioning only changes processing behavior. It does not break the API contract. If a pinned version is unknown or has been removed, the request returns an error listing the available versions.
</Note>
