AI Tools Compared

Why Auto-Generating OpenAPI Specs Matters

Maintaining API documentation alongside code is friction. Specs drift. Endpoints get deprecated. Request/response shapes change. And manual OpenAPI YAML gets stale within weeks.

AI-powered spec generation flips this problem: feed your code, get a machine-readable spec. This saves 8-15 hours of manual YAML writing per API and keeps docs in sync with reality.

The Two Approaches

Approach A: AI Chat Models (Claude, ChatGPT, Copilot)

Approach B: CLI Tools + Code Analysis (Swagger Codegen, openapi-generator)

Claude Code: Fastest for One-Off Analysis

Claude Code excels at reading large codebases in context and producing accurate OpenAPI specs without annotations.

Setup:

# No setup needed - just use Claude Code web interface or CLI
# Point Claude at your codebase directory

Workflow:

  1. Open Claude Code, load your repo
  2. Ask: “Generate an OpenAPI 3.0 spec for all endpoints in /api directory”
  3. Claude reads route handlers, middleware, validators
  4. Returns complete YAML spec

Accuracy:

Pricing:

CLI Example - Using Claude API:

# Create a script to pipe code to Claude
cat /path/to/api/routes.js | curl -X POST https://api.anthropic.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -d '{
    "model": "claude-3-5-sonnet-20241022",
    "max_tokens": 4096,
    "messages": [
      {
        "role": "user",
        "content": "Generate OpenAPI 3.0 spec for these routes: " + stdin
      }
    ]
  }' > openapi-spec.json

Strengths:

Weaknesses:


GitHub Copilot: IDE-Native Generation

Copilot integrates into VS Code, making spec generation a 2-minute task inside your editor.

Setup:

# GitHub Copilot extension in VS Code
# $10/month or included in Copilot Pro ($20/month)
# Requires GitHub account with Enterprise or Pro license

Workflow:

  1. Create openapi.yaml file
  2. Start typing: openapi: 3.0.0
  3. Type comment: # Generate spec for routes in src/api/
  4. Copilot auto-completes the entire spec

Accuracy:

Pricing:

CLI Example - VS Code Command Line:

# Programmatically trigger Copilot suggestions
code --new-window ./openapi.yaml

# Then Copilot watches as you type and fills in the spec

Strengths:

Weaknesses:


Cursor: Purpose-Built for Code Generation

Cursor is a code editor with Claude baked in. For OpenAPI generation, it’s competitive because it can read entire repos.

Setup:

# Download Cursor from cursor.sh
# Free tier available; Pro plan $20/month
# Works exactly like VS Code

Workflow:

  1. Open repo in Cursor
  2. Cmd+K: Open AI command palette
  3. Type: “Generate OpenAPI spec for all routes”
  4. Cursor reads entire codebase and produces spec
  5. Iteratively refine with follow-up questions

Accuracy:

Pricing:

CLI Example - Cursor Agent Mode:

# Use Cursor's CLI for headless spec generation
cursor --command "Generate OpenAPI 3.0 spec for /src/api" \
  --output-file ./openapi.yaml

Strengths:

Weaknesses:


Swagger Codegen: The Dedicated Tool

Swagger Codegen is a Java-based CLI that auto-detects API specs from annotated code.

Setup:

# Installation via Homebrew
brew install swagger-codegen

# Or Docker (recommended)
docker run --rm -v $(pwd):/local swaggerapi/swagger-codegen-cli:latest \
  generate -i /local/petstore.yaml -l html2 -o /local/docs

How It Works:

Example - Spring Boot with Springdoc:

# Install springdoc-openapi-maven-plugin
# pom.xml
<plugin>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-maven-plugin</artifactId>
  <version>1.6.14</version>
  <executions>
    <execution>
      <phase>integration-test</phase>
      <goals>
        <goal>generate</goal>
      </goals>
    </execution>
  </executions>
</plugin>

# Run: mvn clean install
# Output: target/openapi.json

Example - FastAPI with automatic docs:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI(
    title="My API",
    description="Auto-documented with OpenAPI",
    version="1.0.0"
)

class Item(BaseModel):
    name: str
    price: float

@app.get("/items/{item_id}")
def get_item(item_id: int):
    """Get item by ID."""
    return {"item_id": item_id}

# Run: uvicorn app:app --reload
# Access: http://localhost:8000/openapi.json
# Spec auto-generated, 100% accurate

Accuracy:

Pricing:

Supported Languages:

Strengths:

Weaknesses:


openapi-generator: Modern Alternative

Successor to Swagger Codegen with better performance and language support.

Setup:

# Via npm
npm install -g @openapitools/openapi-generator-cli

# Via Homebrew
brew install openapi-generator

# Via Docker (best for CI/CD)
docker run --rm -v $(pwd):/local openapitools/openapi-generator-cli:latest \
  generate -i /local/spec.yaml -g go -o /local/generated

CLI Usage:

# Generate client code from existing spec
openapi-generator-cli generate \
  -i ./openapi.yaml \
  -g typescript-fetch \
  -o ./generated/client

# Generate server stubs
openapi-generator-cli generate \
  -i ./openapi.yaml \
  -g nodejs-express-server \
  -o ./generated/server

# Generate docs
openapi-generator-cli generate \
  -i ./openapi.yaml \
  -g html2 \
  -o ./generated/docs

Code Generation - Python Example:

openapi-generator-cli generate \
  -i ./openapi.yaml \
  -g python-fastapi \
  -o ./generated \
  --additional-properties=packageName=my_api

# Generates: models, routes, validators all from spec

Pricing:

Language Support:

Strengths:

Weaknesses:


Comparison Table

Tool Cost Language Support Accuracy Speed Best For
Claude Code $3/MTok Any (no annotations needed) 85-92% 2-5 min Legacy code, one-off specs
Copilot $10/mo Any (IDE-based) 78-88% 1-2 min Quick additions, small APIs
Cursor $20/mo Any (no annotations needed) 85-90% 2-4 min Team workflows, large repos
Swagger Codegen Free Java, Python, Go, etc. (annotated) 95-99% <1 min Production codebases, CI/CD
openapi-generator Free 40+ languages 95-99% <1 min Code generation from specs

Workflow Recommendations

For Legacy REST API (No Annotations):

  1. Use Claude Code to generate initial spec
  2. Validate against live endpoints
  3. Commit to repo
  4. Manual updates as needed

For New API (Use Annotations):

  1. Write code with FastAPI/Spring annotations
  2. Run openapi-generator or Swagger Codegen in CI/CD
  3. Auto-generate client SDKs
  4. Spec always in sync

For Small Team (Budget-Conscious):

  1. Use Cursor ($20/mo for unlimited usage)
  2. Generate spec once, store in repo
  3. Update manually when API changes
  4. Cost: $20/mo for entire team

For Enterprise (High-Volume APIs):

  1. Adopt Swagger Codegen in CI/CD (free)
  2. Require annotation-based coding standard
  3. Auto-generate clients and docs on every commit
  4. Add Claude Code for one-off legacy specs
  5. Cost: Just API calls, pay-per-use

Pitfalls to Avoid

Pitfall 1: Trusting AI Output Without Validation

Pitfall 2: Not Version-Controlling the Spec

Pitfall 3: Generating Once, Then Forgetting

Pitfall 4: Ignoring Authentication

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

security:
  - bearerAuth: []

Bottom Line

For most teams, the ideal workflow is: Claude Code for brownfield work, Swagger Codegen in CI/CD for greenfield APIs.

Built by theluckystrike — More at zovo.one