This prompt is designed for API governance teams and platform architects who need to standardize error codes across multiple services. The primary job-to-be-done is producing a hierarchical error taxonomy with domain, category, and specific error codes that ensures consistent naming and non-overlapping semantics. Use this prompt when you are consolidating error responses from multiple teams, migrating from legacy error codes, or establishing a new API error standard. The ideal user is a technical lead or architect who has access to existing error conditions, service boundaries, and domain contexts, and who can make binding decisions about taxonomy structure.
Prompt
Error Code Taxonomy Builder Prompt

When to Use This Prompt
Defines the job-to-be-done, ideal user, required context, and boundaries for the Error Code Taxonomy Builder Prompt.
The output is a structured taxonomy document, not a runbook or remediation guide. This prompt assumes you have a list of existing error conditions, service boundaries, and domain contexts to feed in as input. It does not replace human review for semantic correctness or business logic alignment. Before using this prompt, gather your current error codes, service maps, and any existing documentation on error semantics. The prompt works best when you provide concrete examples of current error codes and the services that produce them, along with any known overlaps or inconsistencies you want resolved.
Do not use this prompt when you need a complete error catalog with HTTP status codes, response bodies, and resolution steps—that requires the Error Code Catalog Generation Prompt instead. Avoid this prompt if you are looking for a one-time fix for a single service's errors; it is designed for cross-service standardization efforts. After generating the taxonomy, you should review the output for semantic correctness, ensure no business-critical error conditions were omitted, and validate that the hierarchy aligns with your API versioning and deprecation policies before adopting it as a standard.
Use Case Fit
Where the Error Code Taxonomy Builder prompt delivers value and where it introduces risk. Use these cards to decide if this prompt fits your current governance workflow.
Good Fit: Cross-Service Standardization
Use when: You are standardizing error codes across multiple services or teams and need a consistent, non-overlapping taxonomy. Why it works: The prompt is designed to enforce naming conventions, hierarchical structure, and semantic deduplication across domains.
Bad Fit: Single Endpoint or Ad-Hoc Errors
Avoid when: You only need to document errors for a single endpoint or a small, informal project. Risk: The taxonomy overhead is excessive for simple use cases. A lightweight catalog prompt is a better fit. Guardrail: Assess if you have at least 3 services or 20+ distinct error conditions before using this prompt.
Required Inputs: Source Error Inventory
What to watch: The prompt requires a complete or representative inventory of existing error codes, HTTP statuses, and current (even if inconsistent) descriptions. Guardrail: If you lack a source inventory, run an extraction prompt on your codebase or API specs first. Garbage in, garbage out applies here.
Operational Risk: Legacy Migration Mapping
What to watch: The prompt produces a new taxonomy and a migration map from legacy codes. If the map is incomplete, monitoring dashboards and client retry logic will break. Guardrail: Always run the output through the Error Code Consistency Audit Prompt and validate the migration map against production error logs before publishing.
Operational Risk: Semantic Collision
What to watch: The model may merge semantically similar but operationally distinct errors (e.g., timeout vs. circuit breaker open) into a single code. Guardrail: Add a constraint in the prompt to preserve distinct codes when retry behavior or on-call routing differs, and manually review all merged categories.
Process Fit: Governance Review Gate
What to watch: The taxonomy is an architectural decision, not just documentation. Guardrail: Treat the output as a proposal. It must pass an API governance review, not be published directly. Use the Error Code SLA Mapping Prompt to validate that the taxonomy supports your operational commitments.
Copy-Ready Prompt Template
A single-turn prompt template for generating a hierarchical error code taxonomy with cross-service consistency validation and legacy migration mapping.
This template is designed for API governance teams that need to standardize error codes across multiple services. It instructs the model to produce a structured taxonomy organized by domain, category, and specific error code, ensuring consistent naming conventions and non-overlapping semantics. The prompt expects you to provide your existing error codes, service boundaries, and any legacy mappings as input. The output is a complete taxonomy document that can be fed directly into your API standards repository or used as the foundation for automated validation tooling.
textYou are an API governance specialist tasked with building a hierarchical error code taxonomy for a multi-service platform. Your goal is to produce a consistent, non-overlapping error code catalog that every service can adopt. ## INPUT [EXISTING_ERROR_CODES] [SERVICE_BOUNDARIES] [LEGACY_CODE_MAPPINGS] ## TAXONOMY STRUCTURE Organize every error code into a three-level hierarchy: 1. **Domain**: The business or technical area (e.g., AUTH, BILLING, STORAGE, RATE_LIMITING). 2. **Category**: The error class within the domain (e.g., AUTH/CREDENTIALS, AUTH/PERMISSIONS, BILLING/INVOICE). 3. **Specific Code**: The unique error identifier (e.g., AUTH_CREDENTIALS_EXPIRED, BILLING_INVOICE_NOT_FOUND). ## OUTPUT SCHEMA Return a JSON object with the following structure: { "taxonomy_version": "string", "domains": [ { "domain": "string", "description": "string", "categories": [ { "category": "string", "description": "string", "error_codes": [ { "code": "string", "http_status": 400, "severity": "CRITICAL|HIGH|MEDIUM|LOW", "description": "string", "retryable": true, "requires_human_intervention": false, "legacy_equivalents": ["string"], "migration_notes": "string" } ] } ] } ], "cross_service_conflicts": [ { "conflict_type": "DUPLICATE_SEMANTICS|NAMING_COLLISION|STATUS_MISMATCH", "codes_involved": ["string"], "resolution": "string" } ], "migration_map": [ { "legacy_code": "string", "new_code": "string", "breaking_change": true, "consumer_impact": "string" } ] } ## CONSTRAINTS - Every error code must be unique across all domains and categories. - HTTP status codes must align with RFC 9110 semantics. - No two error codes may describe the same condition with different names. - Legacy equivalents must be exhaustive if provided in [LEGACY_CODE_MAPPINGS]. - If a legacy code maps to multiple new codes, flag it in migration_notes. - Severity must be assigned based on consumer impact, not implementation difficulty. - Retryable must be true only for transient conditions where a retry can succeed without state change. ## CROSS-SERVICE VALIDATION After generating the taxonomy, scan for: 1. Duplicate semantics: two codes from different services describing the same error. 2. Naming collisions: identical code strings with different meanings. 3. HTTP status mismatches: similar errors returning inconsistent status codes. Document every conflict in the cross_service_conflicts array with a concrete resolution. ## OUTPUT INSTRUCTIONS Return only the JSON object. Do not include explanations, markdown fences, or commentary outside the JSON structure.
Before pasting this template into your AI system, replace the three square-bracket placeholders with your actual data. [EXISTING_ERROR_CODES] should contain a structured list of every error code currently in use across your services, including their HTTP status codes and descriptions. [SERVICE_BOUNDARIES] should define which service owns which domain or category, preventing two teams from accidentally claiming the same error space. [LEGACY_CODE_MAPPINGS] is optional but critical if you are migrating from an older error code scheme—include every old-to-new mapping you already know. If you have no legacy codes, replace the placeholder with an empty array [].
After running the prompt, validate the output against your API contracts before adopting the taxonomy. Check that every existing error code appears in the migration map, that no two services claim the same code, and that HTTP status codes match what your gateways actually return. For high-risk domains like billing or authentication, have a senior engineer review the severity and retryability assignments before publishing the taxonomy to your developer portal. If the model flags cross-service conflicts you were unaware of, treat those as action items for your next API governance review.
Prompt Variables
Replace each placeholder with concrete data before sending the prompt. Validation notes describe how to programmatically check the input before assembly.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[SERVICE_CATALOG] | List of service names and descriptions to include in the taxonomy | payment-api, user-service, notification-worker | Must be a non-empty array of strings. Each entry should match a real service identifier in your registry. |
[EXISTING_ERROR_CODES] | Current error codes across services, including any legacy or undocumented codes | PAYMENT_001, USER_AUTH_FAILED, OLD_NOTIFY_ERR | Must be a flat list of strings. Validate that no code appears in more than one service without explicit cross-service intent. |
[DOMAIN_BOUNDARIES] | Business or technical domains that group related services | Payments, Identity, Messaging | Must be a non-empty array. Each domain should map to at least one service in [SERVICE_CATALOG]. |
[TAXONOMY_DEPTH] | Maximum hierarchy levels: domain, category, specific error | 3 | Must be an integer between 2 and 5. Reject values outside this range before prompt assembly. |
[NAMING_CONVENTION] | Rules for error code format: prefix, separator, casing | DOMAIN_CAT_### | Must be a string describing the pattern. Validate that the convention includes a domain prefix and a numeric or alphanumeric suffix component. |
[LEGACY_MAPPING_REQUIRED] | Whether the taxonomy must include a mapping from old codes to new codes | Must be boolean. If true, [EXISTING_ERROR_CODES] must be non-empty and a migration mapping section will be expected in the output. | |
[OUTPUT_SCHEMA] | Expected structure for the taxonomy output | JSON Schema object | Must be a valid JSON Schema. Validate with a schema parser before prompt assembly. Reject if schema is not parseable. |
Implementation Harness Notes
How to wire the Error Code Taxonomy Builder prompt into an API governance pipeline with validation, review gates, and versioned output.
The Error Code Taxonomy Builder prompt is designed to be a deterministic governance tool, not a conversational assistant. It should be integrated into a CI/CD or API design review pipeline where it receives a structured input payload of existing error codes, domain boundaries, and legacy mappings. The prompt's output is a machine-readable taxonomy object that downstream systems—such as API gateways, documentation generators, and monitoring dashboards—will consume. Because the output directly shapes error contracts that clients depend on, the implementation harness must enforce strict validation before the taxonomy is accepted.
Wire the prompt into an application as a gated transformation step. The application should: (1) assemble the input context from a service registry, OpenAPI specs, or a configuration repository; (2) call the LLM with the prompt template, setting temperature=0 and using a model with strong JSON mode support (e.g., GPT-4o, Claude 3.5 Sonnet); (3) validate the output against a JSON Schema that checks for unique error codes, non-overlapping semantics, required fields (domain, category, code, http_status, description), and valid migration mappings from legacy codes; (4) on validation failure, retry once with the validation errors injected into the [CONSTRAINTS] block, then escalate to a human reviewer if the second attempt fails; (5) log the input, output, model version, and validation result for auditability. Do not auto-merge the taxonomy into production error catalogs without human approval when the change set includes breaking changes to existing error codes or HTTP status codes.
For cross-service consistency validation, implement a post-generation diff step that compares the new taxonomy against the existing taxonomy from other services in the same domain. Flag any error code that duplicates an existing code's semantics under a different name, or any HTTP status code assignment that conflicts with the organization's status code conventions. The [CONSTRAINTS] placeholder in the prompt template should be populated with these organization-specific rules (e.g., 'all authentication errors must use 401 or 403, never 400'). For legacy migration mappings, add a drift detection check that verifies every legacy code in the input appears in the output's legacy_mapping field, and that no legacy code is mapped to multiple new codes without an explicit disambiguation rule. If the prompt is used in a regulated industry, require a human governance board sign-off on the final taxonomy before it is published to API consumers.
Expected Output Contract
Validate the generated taxonomy against this contract before integrating it into your API governance pipeline. Each field must pass the specified validation rule.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
taxonomy_version | string (semver) | Must match 'major.minor.patch' format. Parse with a semver library and reject if invalid. | |
generated_at | string (ISO 8601) | Must parse as a valid UTC datetime. Reject if timestamp is in the future or unparseable. | |
domains | array of objects | Schema check: each object must have 'domain_id', 'domain_name', and 'categories' fields. Array must not be empty. | |
domains[].domain_id | string (kebab-case) | Must match pattern '^[a-z]+(-[a-z]+)*$'. Uniqueness check: no duplicate domain_id values across the array. | |
domains[].categories | array of objects | Schema check: each object must have 'category_id', 'category_name', and 'error_codes' fields. Array must not be empty. | |
domains[].categories[].error_codes | array of objects | Schema check: each object must have 'code', 'http_status', 'severity', 'description', and 'retry_strategy'. Array must not be empty. | |
domains[].categories[].error_codes[].code | string (UPPER_SNAKE_CASE) | Must match pattern '^[A-Z]+(_[A-Z]+)*$'. Uniqueness check: no duplicate code values across the entire taxonomy. | |
domains[].categories[].error_codes[].http_status | integer | Must be a valid HTTP status code (100-599). Cross-reference against [HTTP_STATUS_CONSTRAINTS] if provided. Reject if outside valid range. |
Common Failure Modes
Taxonomy prompts fail in predictable ways: overlapping semantics, inconsistent granularity, and legacy-code collisions. These cards help you catch the most common breaks before they reach production.
Semantic Overlap Between Categories
What to watch: The model creates sibling categories that describe the same error condition (e.g., RESOURCE_NOT_FOUND and ENTITY_MISSING), causing routing ambiguity. Guardrail: Add a post-generation deduplication pass that clusters error descriptions by embedding similarity and flags pairs above a threshold for human merge.
Inconsistent Granularity Across Domains
What to watch: One service domain gets 30 specific error codes while another gets only 3 generic ones, breaking cross-service consistency. Guardrail: Include a [GRANULARITY_CONSTRAINT] in the prompt specifying maximum and minimum codes per domain, and validate the output distribution before acceptance.
Legacy Code Collision
What to watch: The taxonomy reuses numeric codes or string identifiers already claimed by existing services, creating silent conflicts in logs and dashboards. Guardrail: Provide a [RESERVED_CODES] blocklist in the prompt and run a collision check script against the generated taxonomy before publishing.
Missing Migration Mapping
What to watch: The taxonomy introduces clean new codes but provides no mapping from legacy codes, leaving support teams unable to connect old errors to new runbooks. Guardrail: Require a [LEGACY_MAPPING] output section in the schema and validate that every legacy code in the input appears in the mapping with a non-null target.
Category Name Drift from Standards
What to watch: The model invents category names that diverge from your organization's existing terminology or industry standards like RFC 9110, confusing API consumers. Guardrail: Supply a [TERMINOLOGY_GLOSSARY] of approved terms and add a validation step that rejects output containing unlisted category names.
Unmapped Error Conditions
What to watch: The taxonomy covers documented error paths but omits edge cases like timeouts, partial failures, or infrastructure errors that appear in production. Guardrail: Cross-reference the generated taxonomy against a [PRODUCTION_ERROR_LOG_SAMPLE] and flag any error pattern that appears in logs but has no matching taxonomy entry.
Evaluation Rubric
Use this rubric to test the taxonomy output before shipping to production. Each criterion targets a specific failure mode common in error code standardization. Run these checks against a representative sample of generated error codes, and gate release on all criteria passing.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Naming Convention Adherence | All error codes match the pattern [DOMAIN][CATEGORY][SPECIFIC] with uppercase snake_case and no trailing underscores | Codes like | Regex validation: |
Semantic Non-Overlap | No two error codes describe the same condition with different names; each code has a unique, non-overlapping definition | Two codes like | LLM-as-judge pairwise comparison: for every code pair, ask 'Do these describe distinct error conditions?' with a 0.95 confidence threshold |
Domain Completeness | Every domain in [INPUT_DOMAINS] has at least one category and one specific error code; no domain is empty | The | Set difference check: extract unique domains from output, compare to [INPUT_DOMAINS]; flag any missing domains |
Legacy Code Mapping | Every code in [LEGACY_ERROR_CODES] maps to exactly one generated taxonomy code; no legacy code is orphaned | A legacy code | Join check: left-join [LEGACY_ERROR_CODES] against output |
HTTP Status Code Alignment | Each error code maps to exactly one HTTP status code from [ALLOWED_STATUS_CODES]; no unmapped or ambiguous status codes | An error code has | Enum validation: check every |
Resolution Step Presence | Every error code classified as | A critical error code has | Field presence check: filter output by severity, assert |
Cross-Service Consistency | The same error condition across services uses the same error code; no service-specific variants of the same semantic error | Service A uses | LLM-as-judge cross-reference: group codes by semantic meaning across [SERVICE_NAMES], flag codes with >1 variant for the same condition |
Migration Path Validity | Every | A legacy code maps to a new taxonomy code but | Field presence check: for every row with non-empty |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt\nUse the base prompt with a smaller scope—start with one service's error codes before attempting cross-service normalization. Remove the cross-service consistency validation and migration mapping sections. Replace [SERVICE_LIST] with a single service name. Use a simpler output schema: just domain, category, code, and description. Skip the legacy mapping table.\n\n### Watch for\n- Overlapping semantics when you later add a second service\n- Codes that look consistent in isolation but collide across services\n- Missing HTTP status code alignment—add it before production

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us