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

# Помилки та ліміти

> Стабільна обгортка помилок, кореляція через X-Request-Id, значення HTTP-статусів, заголовки лімітів запитів і поведінка при вичерпанні квоти на статусі 402.

## Обгортка помилок

Кожна помилка використовує одну стабільну форму — і ніколи не розкриває внутрішніх ID тенантів чи текст помилок бекенду:

```json theme={null}
{
  "statusCode": 409,
  "code": "stale_source_version",
  "message": "Version 6 is older than the applied version 7.",
  "requestId": "req_...",
  "details": { }
}
```

Розгалужуйте логіку за `code`, а не за `message` — повідомлення можна переформулювати, а коди стабільні.

## Request ID

Кожна відповідь містить `X-Request-Id`. Надсилайте свій (1–128 символів; перший — літеро-цифровий, далі `A-Za-z0-9._:-`), щоб корелювати один запит через край Conare та площину памʼяті; інакше Conare згенерує його сам. Цитуйте його в будь-якому запиті до підтримки.

## Коди статусу

| Статус | Значення                                                                 | Що робити                                                                             |
| ------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- |
| `400`  | Некоректний запит (наприклад, `model_not_served`, невідомий ID колекції) | Виправте запит — повідомлення точно каже, що не так                                   |
| `401`  | Відсутній чи недійсний ключ                                              | Перевірте Bearer-токен                                                                |
| `402`  | Ліміт використання і бюджет overage вичерпано                            | Відповідь містить метадані балансу/скидання — покажіть їх, не робіть сліпих ретраїв   |
| `403`  | Ключу бракує потрібного скоупу                                           | Надайте скоуп на інтеграції                                                           |
| `409`  | Конфлікт версій у життєвому циклі джерела                                | Див. [source-owned memories](/memory/lifecycle) — зазвичай означає «вже персистентне» |
| `413`  | Контент завеликий                                                        | Розбийте payload                                                                      |
| `429`  | Обмеження швидкості                                                      | Відступіть відповідно до заголовків rate-limit                                        |
| `503`  | Бекенд не готовий (наприклад, `integration_unbillable`)                  | Спробуйте пізніше з backoff; перевірте `/api/v1/status`                               |

## Деградація замість відмови

Там, де існує дешевша альтернатива, Conare деградує, а не повертає помилку:

* **Deep recall** на вичерпаній спадковій квоті повертає `{ answer: null, results: [...], deepUsed: false }` — ви все одно отримуєте ранжовану сиру памʼять.
* **Suggestions** не має осмисленого поверхневого фолбеку, тож вичерпання — це жорсткий `402` (спадкові плани квот: `429`).
* **Некоректний вивід моделі** для suggestions повертає `{ suggestions: [], raw: "<text>" }` — трактуйте `raw` як текст-фолбек для показу.

## Ніколи не тарифікується

Прийом сесій, `save` та поверхневі search/recall ніколи не тарифікуються, на жодному плані. Сповіщення про витрати спрацьовують на 75/90/100%, і за замовчуванням це жорсткий стоп — жодних несподіваних overage.
