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

# Const

> Constrain a field to a single fixed value.

Use `const` to pin a field to a single allowed value.

## Basic usage

<CodeGroup>
  ```json JSON Schema theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  {
    "type": "object",
    "properties": {
      "version": { "const": "v1" }
    },
    "required": ["version"],
    "additionalProperties": false
  }
  ```

  ```python Pydantic theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  from typing import Literal
  from pydantic import BaseModel, ConfigDict

  class Payload(BaseModel):
      model_config = ConfigDict(extra="forbid")

      version: Literal["v1"]
  ```

  ```typescript Zod theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  import { z } from "zod";

  const payloadSchema = z
    .object({
      version: z.literal("v1"),
    })
    .strict();
  ```
</CodeGroup>

## Discriminator pattern

`const` is commonly used to tag branches in `oneOf`/`anyOf` schemas.

<CodeGroup>
  ```json JSON Schema theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  {
    "oneOf": [
      {
        "type": "object",
        "properties": {
          "action": { "const": "search" },
          "query": { "type": "string" }
        },
        "required": ["action", "query"],
        "additionalProperties": false
      },
      {
        "type": "object",
        "properties": {
          "action": { "const": "lookup" },
          "id": { "type": "integer" }
        },
        "required": ["action", "id"],
        "additionalProperties": false
      }
    ]
  }
  ```

  ```python Pydantic theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  from typing import Annotated, Literal
  from pydantic import BaseModel, ConfigDict, Field

  class SearchAction(BaseModel):
      model_config = ConfigDict(extra="forbid")

      action: Literal["search"]
      query: str

  class LookupAction(BaseModel):
      model_config = ConfigDict(extra="forbid")

      action: Literal["lookup"]
      id: int

  Action = Annotated[SearchAction | LookupAction, Field(discriminator="action")]
  ```

  ```typescript Zod theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  import { z } from "zod";

  const actionSchema = z.discriminatedUnion("action", [
    z
      .object({
        action: z.literal("search"),
        query: z.string(),
      })
      .strict(),
    z
      .object({
        action: z.literal("lookup"),
        id: z.number().int(),
      })
      .strict(),
  ]);
  ```
</CodeGroup>

## Related

* [Composition reference](/json-schema/reference/composition)
* [Union of Objects cookbook](/json-schema/union-of-objects)
