---
title: "GET /orders/chunks/preview — Preview Lookup"
url: https://lumean.app/de/developers/docs/api/get-orders-chunks-preview
locale: de
description: "Preview Lookup"
generated: 2026-10-17
operationId: order.lookupPreview
method: GET
path: /orders/chunks/preview
scopes: [orders.read]
spec_version: 0.0.1
---

# GET /orders/chunks/preview

**Preview Lookup**

Preflight: is a split for this text already cached — **without sending the text
itself**. Send `text_hash` (sha256 of the raw `input_text`, lowercase hex) +
`template_id` (+ `generation_mode` and `config_override`, if used) — the server rebuilds the same
`preview_id` and checks the cache.

- **200** `status=ready` — already computed, no need to send the text.
- **202** `status=processing` — the calculation for this text is still running.
- **404** — nothing cached → send the full text via `POST /orders/chunks/preview`.

**Required key permission:** `orders.read`.

- Benötigtes Recht: `orders.read`

## Anfrage

```bash
curl -X GET 'https://api.lumean.app/api/public/orders/chunks/preview' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY'
```

## Parameter

| Feld | In | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- | --- |
| `template_id` | query | `string` — uuid | Pflicht | Template UUID — the same one that was sent to `POST /orders/chunks/preview` for the calculation. Part of the `preview_id` identity. |
| `text_hash` | query | `string` — Muster: ^[a-f0-9]{64}$ | Pflicht | sha256 of the RAW `input_text` (lowercase hex, 64 characters) — compute it yourself; the server normalizes the text on its own side and does not fold that into the hash. Together with `template_id` and `generation_mode` it determines `preview_id`: the same triple yields the same response, without sending the text itself. |
| `generation_mode` | query | `string` — `default` · `paragraph` | — | Generation mode, if one was used for the calculation (`paragraph` — paragraph-based split). Must match what was sent to `POST` — the mode is part of the `preview_id` identity. |
| `config_override[]` | query | `array<string>` | — | The `config_override` the preview was computed with in `POST` (if any). Settings that affect the split are part of the `preview_id` identity, the rest are not. Send it as a JSON string (`config_override={"tts_settings":{"mode":"mode_v1"}}`, URL-encoded) or as nested keys (`config_override[tts_settings][mode]=mode_v1`). |

## Request-Body

Kein Body.

## Antworten

### 200 — Success. The payload is in `data`.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Success flag. Branch on the HTTP status code instead: any 2xx response carries `true` here, while an error comes back in a different shape that need not contain this field at all. |
| `message` | `string` | Pflicht | A human-readable note in the account language. Fine to show to a user; do not parse it — the wording changes without notice and is not an error code. |
| `data` | `object` | Pflicht | The response payload. |
| `data.status` | `string` | Pflicht | Always `ready` for a 200 response — the calculation is done. |
| `data.preview_id` | `string` | Pflicht | A content-based preview id (sha256 of text+template+mode+algorithm version). Use it for incremental re-preview (`previous_preview_id`) and for pagination (`GET .../{previewId}`). |
| `data.summary` | `string` | Pflicht | Totals for the whole text — not just the current page of chunks. |
| `data.chunks` | `array<any>` | Pflicht | Only the CURRENT page (see `data.page`), not the full list — use pagination (`GET .../{previewId}?page=`) for the rest. |
| `data.page` | `string` | Pflicht | Pagination meta for the CURRENT page of `data.chunks`. |

**Beispiel**

```json
{
  "success": true,
  "message": "string",
  "data": {
    "status": "string",
    "preview_id": "string",
    "summary": "string",
    "chunks": [
      "string"
    ],
    "page": "string"
  }
}
```

### 202 — Accepted for processing. The result arrives asynchronously.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Success flag. Branch on the HTTP status code instead: any 2xx response carries `true` here, while an error comes back in a different shape that need not contain this field at all. |
| `message` | `string` | Pflicht | A human-readable note in the account language. Fine to show to a user; do not parse it — the wording changes without notice and is not an error code. |
| `data` | `object` | Pflicht | The response payload. |
| `data.status` | `string` | Pflicht | Always `processing` for a 202 response — the calculation is running in the background. |
| `data.preview_id` | `string` | Pflicht | The preview id. Use it to subscribe to the `private-chunks.preview.{userId}` WS channel (the `.ready` event), or to poll `GET /orders/chunks/preview/{previewId}` manually. |
| `data.summary` | `string` | Pflicht | Totals for the whole text — not just the current page of chunks. |
| `data.chunks` | `array<any>` | Pflicht | Only the CURRENT page (see `data.page`), not the full list — use pagination (`GET .../{previewId}?page=`) for the rest. |
| `data.page` | `string` | Pflicht | Pagination meta for the CURRENT page of `data.chunks`. |

**Beispiel**

```json
{
  "success": true,
  "message": "string",
  "data": {
    "status": "string",
    "preview_id": "string",
    "summary": "string",
    "chunks": [
      "string"
    ],
    "page": "string"
  }
}
```

### 401 — The key is missing, unknown, disabled or expired.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Always `false` in error responses. |
| `message` | `string` | Pflicht | Error text in the key's language (set through the `X-Locale` header). |
| `data` | `null` — nullable | Pflicht | Always `null` when the request is rejected before processing. |

**Beispiel**

```json
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
```

### 403 — The key lacks the required permission, or the object belongs to another user.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Always `false` in error responses. |
| `message` | `string` | Pflicht | Error text in the key's language (set through the `X-Locale` header). |

**Beispiel**

```json
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
```

### 404 — Not found, or not reachable with this key.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Always `false` in error responses. |
| `message` | `null \| array<any> \| string \| object` — nullable | Pflicht | The reason for the rejection in words, in the account language. Meant for display; do not branch on it, the wording changes. |
| `errors` | `null` — nullable | Pflicht | A per-field breakdown — present only on validation errors (`422`): the key names a request field, the value lists the complaints about it. Other codes send `null`, since there is nothing to break down and the whole reason is in `message`. |

**Beispiel**

```json
{
  "success": false,
  "message": "Resource not found."
}
```

### 422 — Validation error. Offending fields are listed in `errors`.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `message` | `string` | Pflicht | Errors overview. |
| `errors` | `object` | Pflicht | A detailed description of each field that failed validation. |
| `errors.*` | `array<string>` — beliebige Schlüssel | — |  |

**Beispiel**

```json
{
  "message": "string",
  "errors": {
    "key": [
      "string"
    ]
  }
}
```

### 429 — Limit exceeded: either the key's request rate or its token quota. Retry no earlier than `Retry-After`.

**Antwortfelder**

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `success` | `boolean` | Pflicht | Always `false` in error responses. |
| `message` | `string` | Pflicht | Error text in the key's language (set through the `X-Locale` header). |
| `reason` | `string` | Pflicht | Machine-readable failure reason — branch on this, not on the message text. |
| `error_code` | `string` | Pflicht | The same machine-readable code as in `reason` — a second name for the field. The values always match; branch on either. |
| `retry_after` | `integer` — nullable | — | How many seconds to wait before retrying (the same value is in the `Retry-After` header). |

**Beispiel**

```json
{
  "success": false,
  "message": "Too many attempts. Please wait a moment and try again.",
  "reason": "rate_limit_exceeded",
  "error_code": "rate_limit_exceeded",
  "retry_after": 30
}
```

---

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