# Error response shape

## Error response shape
Every error response carries the same structure:

```json
{
  "timestamp": 1705312200000,
  "codes":     ["SC302"],
  "messages":  ["User Identity Required"],
  "details":   []
}
```
| Field | Type | Description |
|  --- | --- | --- |
| `timestamp` | number | Unix epoch milliseconds when the error was generated |
| `codes` | string[] | One or more `SC` codes describing the failure |
| `messages` | string[] | Human-readable messages aligned by index with `codes` |
| `details` | string[] | Optional context for the failure (validation issues, upstream messages, etc.) |

Most failures return a single code. Validation errors and upstream service failures may return multiple codes in one response.
Always **route on `codes`**, not on `messages` — message text may be refined for clarity over time, but codes are stable.

Version: v3

## Description:

  - `Error response shape` ()
    Every error response carries the same structure: {
  "timestamp": 1705312200000,
  "codes":     ["SC302"],
  "messages":  ["User Identity Required"],
  "details":   []
}
{
  "timestamp": 1705312200000,
  "codes":     ["SC302"],
  "messages":  ["User Identity Required"],
  "details":   []
} FieldTypeDescriptiontimestampnumberUnix epoch milliseconds when the error was generatedcodesstring[]One or more SC codes describing the failuremessagesstring[]Human-readable messages aligned by index with codesdetailsstring[]Optional context for the failure (validation issues, upstream messages, etc.) Most failures return a single code. Validation errors and upstream service failures may return multiple codes in one response. Always route on codes, not on messages — message text may be refined for clarity over time, but codes are stable.

