AI Tools Compared

API error code reference documentation is essential for developer experience. When consumers encounter errors, they need clear, searchable documentation that explains what went wrong, why it happened, and how to resolve it. Creating this documentation manually takes significant effort, especially as APIs grow and error codes multiply. AI assistants now offer practical solutions for generating and maintaining API error code references.

Understanding API Error Code Documentation Needs

Effective API error documentation serves multiple purposes. Developers need error codes that are consistent, meaningful, and actionable. Your error reference should include:

Manually maintaining this documentation across a large API becomes a maintenance burden. Error codes get added, modified, or deprecated without corresponding documentation updates. AI assistants can help generate initial documentation and keep it synchronized with code changes.

How AI Assistants Generate Error Code Documentation

AI tools can analyze your API code and extract error handling patterns to generate documentation. The process typically involves:

  1. Code analysis: The AI examines your codebase for error definitions, exception classes, and error-handling middleware
  2. Pattern recognition: It identifies recurring error categories (authentication, validation, database, external service)
  3. Documentation generation: It produces structured markdown or JSON documentation from the analysis
  4. Cross-referencing: Links related errors together for easier navigation

Most AI assistants work with common API frameworks including Express.js, FastAPI, Spring Boot, Django, Rails, and Go-based APIs.

Practical Example: FastAPI Error Documentation

Consider a FastAPI application with multiple error types. You can prompt an AI assistant to generate error documentation:

Analyze our FastAPI application and generate comprehensive
error code reference documentation. Our error handling is
in exceptions.py and handlers.py. Include all custom
exceptions, their HTTP status codes, and recommended
resolution steps. Output in markdown format.

The AI would examine your code and produce documentation similar to:

# exceptions.py
class AuthenticationError(Exception):
    def __init__(self, message: str, code: str = "AUTH_001"):
        self.message = message
        self.code = code
        self.status_code = 401

class ValidationError(Exception):
    def __init__(self, message: str, field: str = None):
        self.message = message
        self.code = "VAL_001"
        self.status_code = 400
        self.field = field

class ResourceNotFoundError(Exception):
    def __init__(self, resource_type: str, resource_id: str):
        self.message = f"{resource_type} with ID {resource_id} not found"
        self.code = "RES_001"
        self.status_code = 404

The generated documentation would organize these into categories with resolution guidance.

Best Practices for AI-Generated Error Documentation

AI assistants produce better results when you provide proper context. Follow these guidelines for quality output:

Provide Complete Error Definitions

Include all error-related files in your context:

Context files:
- src/exceptions/base.py (base exception classes)
- src/exceptions/auth.py (authentication errors)
- src/exceptions/validation.py (validation errors)
- src/api/routes/*.py (route-level error raising)
- openapi.yaml (API specification)

The more complete your context, the more accurate the documentation.

Request Specific Formats

Specify your desired output structure:

Generate error code reference documentation in markdown.
For each error, include:
1. Error code (e.g., AUTH_001)
2. HTTP status
3. Message template
4. When this error occurs
5. How to fix it
6. Example request/response

Iterate on the Output

AI-generated documentation needs refinement. Ask follow-up questions:

The validation error section is missing details about
nested object validation failures. Can you expand on
how to document those cases with examples?

Comparing AI Tools for Error Documentation

Different AI assistants have distinct strengths for this task:

Claude 3.5 Sonnet: Excellent at understanding error hierarchies and relationships between different error types. Produces well-organized documentation with logical groupings. Best for complex APIs with many interdependent error codes. Cost: approximately $3-15 per million input tokens.

GPT-4: Strong at following structured templates and producing consistent output. Fast generation for straightforward error documentation. Less nuanced understanding of error relationships. Cost: $0.03-0.06 per thousand input tokens.

GitHub Copilot: Integrated into your IDE, useful for documenting errors as you write code. Limited for generating reference documentation. Works best as a supplement to dedicated documentation tools. Cost: $10-20 per month.

Cursor: Combines code editing with documentation generation. Good for updating error documentation alongside code changes. Requires active development session. Cost: $20 per month.

Generating an OpenAPI-Aligned Error Schema

The most maintainable approach is generating error documentation that mirrors your OpenAPI specification directly. AI assistants can produce both the schema component and the human-readable reference simultaneously.

Prompt:

We use OpenAPI 3.1. Generate:
1. A reusable ErrorResponse schema component
2. A Markdown error reference table for our three error categories:
   authentication (AUTH_*), validation (VAL_*), and resource errors (RES_*)
Include example JSON responses for each error.

Claude output (schema portion):

components:
  schemas:
    ErrorResponse:
      type: object
      required: [code, message, status]
      properties:
        code:
          type: string
          pattern: '^[A-Z]{3}_\d{3}$'
          example: AUTH_001
        message:
          type: string
          example: Invalid authentication token
        status:
          type: integer
          example: 401
        detail:
          type: string
          description: Extended explanation for debugging
        field:
          type: string
          description: Field name for validation errors
          example: email

Once the schema is defined, reference it across all error responses in your path definitions: $ref: '#/components/schemas/ErrorResponse'. Claude generates the $ref links automatically when you ask it to write the full path spec.

Generating Example Responses

AI assistants produce realistic example responses when you give them the error code list. This saves time on the most tedious part of API docs:

Generate JSON example responses for these errors:
- AUTH_001: missing or invalid Bearer token
- AUTH_002: token expired
- AUTH_003: insufficient permissions for the requested resource
- VAL_001: required field missing
- VAL_002: field value out of allowed range
- RES_001: requested resource does not exist

Claude returns fully-formed JSON objects with realistic messages, appropriate HTTP status codes, and useful detail fields — ready to paste into your OpenAPI spec or Markdown docs.

Workflow for Maintaining Error Documentation

Keep your API error reference current using this workflow:

Initial Generation

Generate initial error code reference for our REST API.
Our error handling is centralized in src/errors/.
Include all custom exceptions, their codes, HTTP mappings,
and resolution steps. Format as markdown with a table
of contents.

Ongoing Updates

After adding new error codes, ask:

We added two new errors:
- PaymentFailedError (code: PAY_001, 402)
- RateLimitExceededError (code: RAT_001, 429)

Add these to our existing error reference with the same
format as other errors. Include practical examples.

Validation

Review AI output for accuracy:

{
  "error": {
    "code": "AUTH_001",
    "message": "Invalid authentication token",
    "status": 401,
    "resolution": "Provide a valid Bearer token in the Authorization header"
  }
}

Verify that resolution steps are actually correct for your API’s behavior.

Handling Error Code Migrations

When refactoring error codes, AI assistants help document the transition:

We are migrating from string error codes to numeric codes:
- "invalid_token" → 1001
- "expired_token" → 1002
- "insufficient_scope" → 1003

Generate documentation showing the mapping, explain the
new numbering scheme, and provide migration guidance for
API consumers.

This produces clear changelog entries and consumer-facing migration guides.

Automating Documentation Updates with CI

The most durable documentation strategy embeds AI generation into your CI pipeline so docs never drift from code. The approach: after any change to error definition files, run an AI-assisted documentation update step.

# .github/workflows/docs.yml
name: Update Error Docs

on:
  push:
    paths:
      - 'src/exceptions/**'
      - 'src/errors/**'

jobs:
  update-docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Extract error definitions
        run: |
          python scripts/extract_errors.py src/exceptions/ > /tmp/errors.json

      - name: Generate documentation
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          python scripts/generate_error_docs.py \
            --input /tmp/errors.json \
            --output docs/api/errors.md

      - name: Commit updated docs
        uses: stefanzweifel/git-auto-commit-action@v5
        with:
          commit_message: "docs: update error reference [auto]"
          file_pattern: docs/api/errors.md

The extract_errors.py script parses exception classes and outputs structured JSON. The generate_error_docs.py script sends that JSON to the Claude API with a fixed system prompt that enforces your documentation format. The result is committed back to the repo automatically.

Common Pitfalls to Avoid

AI-generated error documentation works best when you avoid these mistakes:

Always validate AI output against actual API behavior through testing.

Cost Comparison

Manual error documentation: 20-40 hours for a medium API = $2,000-8,000 in developer time.

AI-assisted approach:

The ROI is significant for APIs with 50+ error codes or frequent changes.

Automated Error Documentation from OpenAPI Specs

If your API has an OpenAPI specification, ask Claude to generate error documentation directly from it:

# openapi.yaml excerpt
paths:
  /users/{id}:
    get:
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: "AUTH_001"
        '404':
          description: Not Found

Prompt Claude:

Extract all error codes from this OpenAPI spec and generate
comprehensive error documentation. For each error code, include:
HTTP status, description, common causes, and resolution steps.

Claude produces error documentation that stays synchronized with your OpenAPI definition.

Error Code Hierarchy and Categorization

For large APIs with 100+ error codes, ask Claude to organize them hierarchically:

We have error codes in these categories:
- 1xxx: Authentication errors
- 2xxx: Authorization errors
- 3xxx: Validation errors
- 4xxx: Resource errors
- 5xxx: Server errors

Generate a hierarchical error reference that groups codes by category,
shows inheritance where relevant, and provides decision trees for
API consumers to find the right error handling code path.

Claude generates:

## Authentication Errors (1xxx)

### 1001: Invalid Token
- HTTP Status: 401
- Cause: Token is malformed or has expired
- Resolution: Obtain a new token via the auth endpoint

### 1002: Token Expired
- HTTP Status: 401
- Cause: Token has expired (check exp claim)
- Resolution: Refresh using the refresh_token endpoint

## Authorization Errors (2xxx)

### 2001: Insufficient Scope
- HTTP Status: 403
- Cause: Token has correct auth but lacks required scope
- Resolution: Request additional scopes during auth flow

This categorical approach helps API consumers quickly navigate to relevant error documentation.

Generating Client-Side Error Handlers

Ask Claude to generate language-specific error handling code alongside documentation:

Generate TypeScript error handler code that maps our error codes
to user-friendly messages and actionable recovery steps.
Include error code 1001, 1002, 3001, 3002, 4001, 5001.

Claude produces:

const ERROR_HANDLERS: Record<string, ErrorHandler> = {
  AUTH_001: {
    message: 'Your session has expired. Please log in again.',
    action: 'redirect_to_login',
    retry: false,
  },
  VAL_001: {
    message: 'Please check the validation errors below.',
    action: 'show_form_errors',
    retry: true,
  },
};

function handleApiError(code: string, details: any) {
  const handler = ERROR_HANDLERS[code] || DEFAULT_HANDLER;
  // Execute handler logic
}

This bridges your error documentation with actual application code, ensuring consistency.

Deprecation and Versioning in Error Documentation

For APIs that evolve, ask Claude to document error code changes across versions:

Document error code deprecations. We deprecated AUTH_OLD_001 in v2
and replaced it with AUTH_NEW_001. Show a deprecation notice in
the v1 error reference and cross-reference the v2 alternative.

Claude generates clear migration guides for API consumers when error codes change.

Monitoring and Alerting from Error Codes

Ask Claude to generate monitoring rules based on error code patterns:

Generate Prometheus/DataDog monitoring rules that alert when
certain error codes spike above thresholds:
- AUTH errors > 100/min = security incident
- DB errors > 50/min = infrastructure issue
- RATE_LIMIT errors > 1000/min = DDoS or surge in traffic

Claude produces alerting rules that tie error documentation directly to operational monitoring.

Best Practices Checklist

Before publishing AI-generated error documentation:

Claude often excels at this validation when asked explicitly:

Review this error code documentation for:
1. Consistent format across all entries
2. Accurate HTTP status codes (201 for success, 400-599 for errors)
3. Resolution steps that are actually actionable
4. No sensitive data exposed in messages

Built by theluckystrike — More at zovo.one