Skip to content

📝 Utility Options

📋 Options

Option Description
--debug Show debug messages during code generation
--generate-prompt Generate a prompt for consulting LLMs about CLI options
--help Show help message and exit
--list-deprecations List registered deprecations and scheduled breaking changes
--list-experimental List registered experimental features
--no-color Disable colorized output
--output-format Choose the command output format
--output-format-json-schema Output JSON Schema for structured command output or JSON configuration
--profile Use a named profile from pyproject.toml
--version Show program version and exit

--debug

Show debug messages during code generation.

Enables verbose debug output to help troubleshoot issues with schema parsing or code generation. Requires the debug extra to be installed.

Usage

datamodel-codegen --input schema.json --debug # (1)!
  1. --debug - the option documented here

Requires extra dependency

The debug feature requires the debug extra:

pip install 'datamodel-code-generator[debug]'

--generate-prompt

Generate a prompt for consulting LLMs about CLI options.

Outputs a formatted prompt containing your current options, all available options by category, and full help text. Pipe to CLI LLM tools or copy to clipboard for web-based LLM chats.

Use --output-format json when an LLM agent or tool should consume structured option metadata instead of Markdown. Use --output-format-json-schema generate-prompt when the agent needs the JSON Schema for that structured payload, such as when defining a tool contract.

See also: LLM Integration for detailed usage examples

For LLM agents

See LLM Integration: If You Are an LLM Agent for workflow guidance.

Usage

datamodel-codegen --generate-prompt # (1)!
datamodel-codegen --generate-prompt "How do I generate strict types?" # (2)!
datamodel-codegen --generate-prompt --output-format json # (3)!
datamodel-codegen --output-format-json-schema generate-prompt # (4)!
  1. --generate-prompt - generate prompt without a question
  2. Include a specific question in the prompt
  3. Emit structured JSON for LLM/tool ingestion
  4. Emit JSON Schema for structured prompt JSON
Quick Examples

Pipe to CLI tools:

datamodel-codegen --generate-prompt | claude -p    # Claude Code
datamodel-codegen --generate-prompt | codex exec   # OpenAI Codex
datamodel-codegen --generate-prompt --output-format json | codex exec

Copy to clipboard:

datamodel-codegen --generate-prompt | pbcopy      # macOS
datamodel-codegen --generate-prompt | xclip -selection clipboard  # Linux
datamodel-codegen --generate-prompt | clip.exe    # WSL2

Ask about an existing OpenAPI command:

datamodel-codegen \
    --input openapi.yaml \
    --input-file-type openapi \
    --output models.py \
    --output-model-type pydantic_v2.BaseModel \
    --target-python-version 3.12 \
    --generate-prompt "Find the minimal options for strict API response models." \
    | claude -p

Review a command with current options:

datamodel-codegen \
    --input schema.json \
    --output models.py \
    --output-model-type pydantic_v2.BaseModel \
    --generate-prompt "Review this command for stable generated output in CI." \
    | claude -p


--help

Show help message and exit.

Displays all available command-line options with their descriptions and default values.

Aliases: -h

Usage

datamodel-codegen --help # (1)!
  1. --help - the option documented here
Output
usage: datamodel-codegen [-h] [--input INPUT] [--url URL] ...

Generate Python data models from schema files.

options:
  -h, --help            show this help message and exit
  --input INPUT         Input file path (default: stdin)
  ...

--list-deprecations

List registered deprecations and scheduled breaking changes, then exit.

The option reads from the central deprecation registry used by runtime warnings, generated documentation, and release-note snippets.

datamodel-codegen --list-deprecations
datamodel-codegen --list-deprecations json
datamodel-codegen --list-deprecations markdown

--list-experimental

List registered experimental features, then exit.

The optional format argument can be table, json, or markdown. The default is table.

The option reads from the central experimental feature registry used by generated documentation and release-note snippets.

datamodel-codegen --list-experimental
datamodel-codegen --list-experimental json
datamodel-codegen --list-experimental markdown

--no-color

Disable colorized output.

By default, datamodel-codegen uses colored output for better readability. Use this option to disable colors, which is useful for CI/CD pipelines or when redirecting output to files.

Usage

datamodel-codegen --input schema.json --no-color # (1)!
  1. --no-color - the option documented here

Environment variable

You can also disable colors by setting the NO_COLOR environment variable:

NO_COLOR=1 datamodel-codegen --input schema.json

--output-format

Choose the command output format.

The default output format is text. Use json when another program or LLM agent should inspect structured output.

In normal generation mode, --output-format json wraps generated modules in a structured payload on stdout. If --output is also supplied, files are still written to disk and the JSON payload mirrors the generated files. --check also supports JSON output for difference reports. --watch keeps its existing text output contract and does not support --output-format json.

Structured JSON is emitted on stdout for successful commands and for --check difference reports. CLI usage errors, validation errors, and runtime generation errors continue to use text on stderr with a non-zero exit code.

Generation JSON includes the normalized requested output path in top-level output when --output is supplied, or null for stdout generation. files[].path is the output file name for single-file disk output, and the path relative to the output directory for directory output. For stdout-only single-file generation it is null, and for multi-module stdout generation it is the generated module path.

Use --output-format json with --generate-prompt to emit structured option metadata instead of Markdown. Use --output-format-json-schema when an LLM agent or tool needs the schema for a JSON payload.

Schema targets are intentionally scoped. generate-prompt emits the PromptPayload schema for --generate-prompt --output-format json. generation emits only the GenerationPayload schema for generated-file JSON. model-metadata emits the schema for files written by --emit-model-metadata. structured-output emits the broader StructuredOutputPayload schema, a union covering GenerationPayload, PromptPayload, CommandOutputPayload, and CheckOutputPayload. Structured payloads use kind as the discriminator.

Usage

datamodel-codegen --input schema.json --output-format text # (1)!
datamodel-codegen --input schema.json --output-format json # (2)!
datamodel-codegen --generate-prompt --output-format json # (3)!
datamodel-codegen --output-format-json-schema generation # (4)!
datamodel-codegen --output-format-json-schema generate-prompt # (5)!
datamodel-codegen --output-format-json-schema model-metadata # (6)!
datamodel-codegen --output-format-json-schema structured-output # (7)!
  1. Emit the default generated Python text
  2. Emit structured JSON containing generated files
  3. Emit structured JSON with current options and argparse metadata
  4. Emit JSON Schema for generated-file JSON output
  5. Emit JSON Schema for structured prompt JSON
  6. Emit JSON Schema for generated model metadata JSON
  7. Emit JSON Schema for any structured command JSON output
Generation JSON output
{
  "version": 1,
  "format": "json",
  "kind": "generation",
  "output": null,
  "files": [
    {
      "path": null,
      "content": "# generated by datamodel-codegen:\n..."
    }
  ]
}
Prompt JSON output
datamodel-codegen \
    --input schema.json \
    --output-model-type pydantic_v2.BaseModel \
    --generate-prompt "Choose strict model options." \
    --output-format json

--output-format-json-schema

Output JSON Schema for a JSON output format and exit.

Use this when an LLM agent, tool call definition, or validation layer needs the contract before consuming JSON output. The schema is emitted separately from the JSON payload so tools can fetch the contract once and validate later command output independently.

Currently supported schema targets:

  • generate-prompt: schema for --generate-prompt --output-format json
  • generation: schema for normal generation with --output-format json
  • model-metadata: schema for files emitted by --emit-model-metadata
  • structured-output: tagged union schema for all structured command outputs, discriminated by kind
  • config: schema for JSON-valued configuration options

Usage

datamodel-codegen --output-format-json-schema generate-prompt # (1)!
datamodel-codegen --output-format-json-schema generation # (2)!
datamodel-codegen --output-format-json-schema model-metadata # (3)!
datamodel-codegen --output-format-json-schema structured-output # (4)!
datamodel-codegen --output-format-json-schema config # (5)!
datamodel-codegen --generate-prompt --output-format json # (6)!
datamodel-codegen --input schema.json --emit-model-metadata model-map.json # (7)!
  1. Emit the JSON Schema for structured prompt output
  2. Emit the JSON Schema for generated-file output
  3. Emit the JSON Schema for generated model metadata
  4. Emit the JSON Schema for all structured command outputs
  5. Emit the JSON Schema for JSON-valued configuration options
  6. Emit prompt payloads that match the prompt schema
  7. Emit metadata payloads that match the model metadata schema

--profile

Use a named profile from pyproject.toml configuration.

Profiles allow you to define multiple named configurations in your pyproject.toml file. Each profile can override the default settings with its own set of options.

Related: pyproject.toml Configuration

Usage

datamodel-codegen --input schema.json --profile strict # (1)!
  1. --profile - the option documented here
Configuration (pyproject.toml)
[tool.datamodel-codegen]
# Default configuration
output-model-type = "pydantic_v2.BaseModel"

[tool.datamodel-codegen.profiles.strict]
# Strict profile with additional options
strict-types = ["str", "int", "float", "bool"]
strict-nullable = true

[tool.datamodel-codegen.profiles.dataclass]
# Dataclass profile
output-model-type = "dataclasses.dataclass"

Use profiles:

# Use the strict profile
datamodel-codegen --input schema.json --profile strict

# Use the dataclass profile
datamodel-codegen --input schema.json --profile dataclass

--version

Show program version and exit.

Displays the installed version of datamodel-code-generator.

Usage

datamodel-codegen --version # (1)!
  1. --version - the option documented here
Output
datamodel-codegen version: 0.x.x