--- title: "Best Practice | Global API Exception Handling" slug: "best-practice-global-api-exception-handling" updated: 2025-10-16T15:26:12Z published: 2025-10-16T15:26:12Z canonical: "developers.cmicglobal.com/best-practice-global-api-exception-handling" --- > ## Documentation Index > Fetch the complete documentation index at: https://developers.cmicglobal.com/llms.txt > Use this file to discover all available pages before exploring further. # Best Practice | Global API Exception Handling ## Introduction Effective Nexus 1, CMiC has introduced centralized error handling across all APIs. This ensures every API response follows a consistent, structured JSON format, making errors easier to trace, debug, and handle across all services. Each error message is automatically logged in CMiC with a unique UUID for traceability during runtime. ### Why this change? Previously, each module or service implemented its own error-handling logic, which led to: - Inconsistent error response formats (plain text or JSON) - Hidden exceptions - Unreliable HTTP status codes Responses may include only HTTP status code such as 400 Bad request or 500 Internal Server Error, without a detailed message or structure. In some cases, responses may differ in format (plain text or JSON) and may not include a CMiC error code or explanation of what went wrong, making it difficult to diagnose issues. #### Examples of Current Error Messages: ``` HTTP/1.1 400 Bad Request Content-Type: text/plain ``` ``` HTTP/1.1 500 Internal Server Error Content-Type: text/plain Internal Server Error ``` ### What's New? All APIs now return standardized error responses in the following JSON format: #### Field Definitions & JSON sample | Attribute | Type | Description | | --- | --- | --- | | **uuid** | String | Unique ID for finding the error in a CMiC log entry | | **status** | String | 'Error' by default | | **errorCode** | String | Uses CMiC error code, message key, or custom value. | | **errorMessage** | String | Error message | | **timestamp** | Timestamp | Time when the error occurred | | **moreDetails** | Map | Optional: extra information where applicable | | **ecid** | String | Oracle tracking Uuid, can we be used to further diagnose Oracle logs | #### Example JSON Error Message as of Nexus 1 : ``` "uuid": "e45214f8-5b11-4987-a1a6-7313d5fa6e0f", "status": "Error", "errorCode": "WSD-0000", "errorMessage": "Could not determine if the user is an internal user.", "timestamp": "2025-09-02 18:58:25.369", "moreDetails": { "ecid": "30393979-77ef-4887-9aaf-738475548f09-000003c6" } } ``` ## Recommendations If your integration consumes API error responses, please review and update your error-handling logic to ensure compatibility with the new format.