> ## Documentation Index
> Fetch the complete documentation index at: https://docs.summerengine.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SummerServiceError

> Immutable versioned failure identity shared by Summer services.

**Class:** `SummerServiceError` · **Inherits:** RefCounted

Immutable versioned failure identity shared by Summer services.

A service owns its [`family`](/api-reference/gdscript/types/service-error#family), [`family_version`](/api-reference/gdscript/types/service-error#family_version), and stable [`reason`](/api-reference/gdscript/types/service-error#reason). Generic game flows can switch on [`category`](/api-reference/gdscript/types/service-error#category) and [`retry_disposition`](/api-reference/gdscript/types/service-error#retry_disposition) without depending on product routes or one ever-growing global error-code list. Instances are constructed only by trusted native adapters and cannot be mutated or forged by scripts.

## Properties

| Property | Type | Access | Description |
| - | - | - | - |
| <a id="category" />`category` | [`SummerServiceError.Category`](/api-reference/gdscript/types/service-error#category) | read-only, `get_category()` | Cross-service failure category. |
| <a id="family" />`family` | StringName | read-only, `get_family()` | Stable service-owned error family, such as `&"summer.economy"`. |
| <a id="family_version" />`family_version` | int | read-only, `get_family_version()` | Positive version of the error-family contract. |
| <a id="reason" />`reason` | StringName | read-only, `get_reason()` | Stable family-specific reason. Human-readable text remains in `SummerResult.message`. |
| <a id="retry_disposition" />`retry_disposition` | [`SummerServiceError.RetryDisposition`](/api-reference/gdscript/types/service-error#retrydisposition) | read-only, `get_retry_disposition()` | Machine-readable retry instruction. |

## Enums and constants

### Category

| Name | Value | Description |
| - | - | - |
| `CATEGORY_CONFLICT` | `0` | The request conflicts with committed or in-flight state. |
| `CATEGORY_FENCED` | `1` | The caller's capability, epoch, or lease is no longer current. |
| `CATEGORY_SCHEMA` | `2` | The request or response violates its declared schema. |
| `CATEGORY_QUOTA` | `3` | A declared resource or rate bound was reached. |
| `CATEGORY_UNAVAILABLE` | `4` | The service or adapter is temporarily unavailable. |
| `CATEGORY_TIMEOUT` | `5` | The bounded operation deadline elapsed. |
| `CATEGORY_INVALID` | `6` | The caller supplied an invalid argument or idempotency contract. |
| `CATEGORY_UNAUTHORIZED` | `7` | The verified execution context does not authorize the operation. |
| `CATEGORY_INTERNAL` | `8` | The service failed without a more specific safe category. |

### RetryDisposition

| Name | Value | Description |
| - | - | - |
| `RETRY_NEVER` | `0` | Do not automatically retry. |
| `RETRY_SAFE` | `1` | An exact bounded retry is safe under the operation's idempotency contract. |
| `RETRY_AFTER_REFRESH` | `2` | Refresh capability or context before retrying. |

***

What is live on the platform today: [platform capability status](/knowledge-base/source-status). Check availability at runtime before you offer a feature.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.