---
title: "Fehler und Codes"
url: https://lumean.app/de/developers/docs/errors
locale: de
description: "HTTP-Codes und maschinelle `reason`-Werte erklärt: was passiert ist, warum und was als Nächstes zu tun ist."
generated: 2026-10-17
---

# Fehler und Codes

HTTP-Codes und maschinelle `reason`-Werte erklärt: was passiert ist, warum und was als Nächstes zu tun ist.

| HTTP | reason | Titel | `Retry-After`-Header | Seite |
| --- | --- | --- | --- | --- |
| 401 | — | 401 — key rejected | nein | [401](https://lumean.app/de/developers/docs/md/errors/401) |
| 402 | — | 402 — payment required | nein | [402](https://lumean.app/de/developers/docs/md/errors/402) |
| 403 | — | 403 — insufficient permissions | nein | [403](https://lumean.app/de/developers/docs/md/errors/403) |
| 404 | — | 404 — resource not found | nein | [404](https://lumean.app/de/developers/docs/md/errors/404) |
| 409 | — | 409 — state conflict | nein | [409](https://lumean.app/de/developers/docs/md/errors/409) |
| 422 | — | 422 — request not accepted | nein | [422](https://lumean.app/de/developers/docs/md/errors/422) |
| 429 | — | 429 — one of five limits was hit | manchmal | [429](https://lumean.app/de/developers/docs/md/errors/429) |
| 402 | `payg_topup_required` | payg_topup_required — PAYG top-up required | nein | [payg-topup-required](https://lumean.app/de/developers/docs/md/errors/payg-topup-required) |
| 409 | `quote_mismatch` | quote_mismatch — top-up quote is stale | nein | [quote-mismatch](https://lumean.app/de/developers/docs/md/errors/quote-mismatch) |
| 402 | `insufficient_balance` | insufficient_balance — not enough LMC | nein | [insufficient-balance](https://lumean.app/de/developers/docs/md/errors/insufficient-balance) |
| 402 | `insufficient_allowance` | insufficient_allowance — top-up not possible | nein | [insufficient-allowance](https://lumean.app/de/developers/docs/md/errors/insufficient-allowance) |
| 429 | `token_quota_exceeded` | token_quota_exceeded — key token quota exhausted | ja | [token-quota-exceeded](https://lumean.app/de/developers/docs/md/errors/token-quota-exceeded) |
| 429 | `limit_exceeded` | limit_exceeded — subscription usage limit exceeded | nein | [limit-exceeded](https://lumean.app/de/developers/docs/md/errors/limit-exceeded) |
| 429 | `concurrency_limit_exceeded` | concurrency_limit_exceeded — concurrent task slots are full | nein | [concurrency-limit-exceeded](https://lumean.app/de/developers/docs/md/errors/concurrency-limit-exceeded) |
| 429 | `policy_cooldown_active` | policy_cooldown_active — cooldown after policy blocks | ja | [policy-cooldown-active](https://lumean.app/de/developers/docs/md/errors/policy-cooldown-active) |
| 422 | `content_blocked` | content_blocked — text is on the blocklist | nein | [content-blocked](https://lumean.app/de/developers/docs/md/errors/content-blocked) |
| 422 | `text_empty` | text_empty — nothing to voice | nein | [text-empty](https://lumean.app/de/developers/docs/md/errors/text-empty) |
| 202 | `policy_flagged` | policy_flagged — chunk rejected by policy | nein | [policy-flagged](https://lumean.app/de/developers/docs/md/errors/policy-flagged) |
| 403 | `template_access_denied` | template_access_denied — no access to the template | nein | [template-access-denied](https://lumean.app/de/developers/docs/md/errors/template-access-denied) |
| 422 | `service_not_found` | service_not_found — no such service | nein | [service-not-found](https://lumean.app/de/developers/docs/md/errors/service-not-found) |
| 422 | `invalid_order_status` | invalid_order_status — order is in the wrong status | nein | [invalid-order-status](https://lumean.app/de/developers/docs/md/errors/invalid-order-status) |
| 202 | `max_attempts_reached` | max_attempts_reached — chunk attempts exhausted | nein | [max-attempts-reached](https://lumean.app/de/developers/docs/md/errors/max-attempts-reached) |
| 404 | `storage_expired` | storage_expired — files deleted by retention | nein | [storage-expired](https://lumean.app/de/developers/docs/md/errors/storage-expired) |

## Fünf Quellen von 429

| Quelle | reason | `Retry-After`-Header | Woran erkennbar | Was zu tun ist |
| --- | --- | --- | --- | --- |
| Key rate limit (request frequency) | — | nein | There is no `reason` in the body at all, and no `Retry-After` header either — the body consists of `success` and `message`. This is the only one of the five sources without a machine code. | Client-side backoff based on the configured windows of the key (`limits.requests.per_minute\|per_hour\|per_day`). The default is "no limit", not 60/min: a key without explicit request windows is not rate-limited at all, and a numeric default applies only if an operator has set one. The active windows are visible in the developer section. |
| Key token quota (generation volume) | `token_quota_exceeded` | ja | The only detailed body: `window`, `limit`, `used`, `requested`, `reset_at`, `retry_after` — plus a `Retry-After` header. | Wait for `reset_at`, or reduce the size of a single request so that `requested` fits into what remains in the window (`limit − used`). The check happens before the order is created, so a 429 comes instead of a 201 and nothing is charged. |
| Subscription usage limit | `limit_exceeded` | nein | `reason: "limit_exceeded"`, but there are no window fields and no `Retry-After`. It is precisely the missing header that distinguishes it from the token quota. | Wait for the end of the billing period (`period_end` / `resets_in` in `GET /usage`) or change your plan. The limit is account-wide: switching keys does not help, all keys hit the same counter. |
| Concurrently active task limit | `concurrency_limit_exceeded` | nein | `reason: "concurrency_limit_exceeded"`, no `Retry-After`. Typical context: a burst of many orders while quotas are free. | Wait for YOUR OWN active orders to finish, not for the end of the period: a retry right after any of them reaches a terminal status goes through. The fix is a queue with a concurrency cap, not pauses. The ceiling and the current count are in the `limit_type: "concurrent"` entry in `GET /usage`. |
| Cooldown after policy blocks | `policy_cooldown_active` | ja | `reason: "policy_cooldown_active"` plus `retry_after` / `retry_at` in the body and a `Retry-After` header. The second and last source with the header — it differs from the token quota precisely by `reason`. | Edit the text instead of waiting: the same text will be blocked again after the pause and raise the step (5 → 10 → 15 minutes). Any successfully completed task resets both the counter and the step. |

---

- Diese Seite im Browser: https://lumean.app/de/developers/docs/errors
- Vollständige maschinenlesbare Referenz: https://api.lumean.app/docs/llm.md
