# Felo Präsentation erstellen

POST /api/v1/data/ppts

Erzeuge eine Präsentation asynchron und exportiere dann eine PPTX-Datei. Halte Generierung und Export getrennt: Eine erstellte Aufgabe ist noch keine fertige Datei.

Alle Beispiele verwenden `FELO_API_KEY` aus der [Übersicht](https://openapi.felo.ai/de/docs/data-api/guides/felo-overview.md). Aufrufe verwenden **Plattform-Guthaben**, nicht Felo-Pro-Guthaben. Antwortbeispiele sind illustrativ; Live-Inhalte und optionale Felder variieren.





## 1. Erstelle die Präsentation

`POST /api/v1/data/ppts`

| Feld | Typ | Erforderlich | Bedeutung |
|---|---|---|---|
| `query` | string | Ja | Generierungsanweisungen, 1–25.000 Zeichen |
| `stream_protocol` | string | Nein | Standard `message_center_v1`; normalerweise unverändert lassen |
| `ppt_config` | object | Nein | Optionale Konfiguration; die aktuelle Implementierung liest `ai_theme_id` |
| `livedoc_short_id` | string | Nein | Bestehende Kontext-ID, bis zu 100 Zeichen; muss die nativen API-Prüfungen für Besitz und Ablauf bestehen |
| `resource_ids` | string array | Nein | Bis zu 100 UUID-Ressourcen-IDs; unterliegt denselben Kontextzugriffsprüfungen |

Für eine erste Integration lasse Kontext- und Konfigurationsfelder weg. Ein über `/v2` erstellter Kontext ist hier nicht automatisch wiederverwendbar.

```bash
curl -sS --request POST "https://openapi.felo.ai/api/v1/data/ppts" \
  -H "Authorization: Bearer $FELO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"Create a 5-slide introduction to retrieval augmented generation for software developers."}'
```

HTTP 200 gibt Kennungen an der Root zurück:

```json
{
  "task_id":"example-task-id",
  "ppt_business_id":"example-ppt-id",
  "livedoc_short_id":"example-livedoc-id",
  "expires_at":"2026-11-13T00:00:00Z"
}
```

Zusätzliche Kennungen wie `resource_id`, `stream_key` und `thread_short_id` können vorhanden sein. Eine erfolgreiche Erstellungsantwort bedeutet, dass die Aufgabe angenommen wurde, nicht dass die Generierung abgeschlossen ist. Die angeforderte Folienanzahl ist eine Anweisung; die Abrechnung verwendet die tatsächlich generierte Seitenanzahl.

```bash
TASK_ID="example-task-id"
PPT_ID="example-ppt-id"
```

### Generierungsereignisse mit SSE lesen

Wenn die Erstellung einen `stream_key` zurückgibt, verbinde dich sofort mit einem API-Schlüssel desselben Kontos. Wenn kein Stream-Key zurückgegeben wird, verwende die Status- und Ergebnisabfragen unten.

```bash
curl -N 'https://openapi.felo.ai/api/v1/data/conversations/stream/YOUR_STREAM_KEY?format=structured' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Accept: text/event-stream'
```

| Query-Parameter | Bedeutung |
|---|---|
| `format` | `raw` (Standard) erhält den `content`-String; `structured` dekodiert gültiges JSON in ein Objekt oder Array |
| `offset` | Optionale Resume-Position des Upstreams für die Wiederverbindung; nicht aus deiner lokalen Ereignisanzahl ableiten |

Lies jedes vollständige SSE-Ereignis, dekodiere das äußere JSON und verarbeite dann `content`. Ein `answer`-Anwendungsereignis trägt Text in `data.text`; `finished` signalisiert den Abschluss der Generierung im Stream. Behandle außerdem Upstream-Signale `done`, `[DONE]` und `error`. Wenn die Verbindung ohne Abschluss-Signal endet, frage den Aufgabenstatus ab.

Verwende die Parsing-Regeln und das Client-Beispiel in [SuperAgent SSE](https://openapi.felo.ai/de/docs/api-reference/superagent.md#2-sse-stream-konsumieren), jedoch mit der URL dieses Abschnitts `/api/v1/data/conversations/stream/{stream_key}`. Lies das Aufgabenergebnis nach dem Ende des Streams; der PPTX-Export bleibt ein separater Schritt. Dieser Endpunkt aktiviert nicht `stream: true` auf `/api/v1/data/chat`.



## Lebensdauer, Besitz und Abrechnung

- Präsentationen laufen **sieben Tage nach der Erstellung** ab. Abfragen und Exporte verlängern diesen Zeitraum nicht. Die `expires_at`-Angabe der Präsentation und die `expires_at`-Angabe der signierten Download-URL beschreiben unterschiedliche Lebensdauern.
- Nur das erstellende API-Konto kann auf seine Aufgaben und Präsentationen zugreifen. Eine fehlende oder nicht zugängliche Ressource kann 404 zurückgeben; eine abgelaufene oder gelöschte Ressource kann 410 zurückgeben, oder nach der Bereinigung 404.
- Die Generierung wird pro generierter Seite (`ppt.generate`) abgerechnet. Bei der Seitenpreis-Abrechnung reserviert die Erstellung den Preis von zehn Seiten, rechnet dann die tatsächlich erfolgreiche Ausgabe ab und gibt die ungenutzte Reservierung frei. Dein Konto benötigt genug verfügbares Guthaben für die Reservierung, auch wenn der Prompt weniger Seiten anfordert.
- Der Export hat einen separaten Anfragepreis (`ppt.export`). Statusabfragen, Ergebnisabfragen, Exportstatusabfragen und Löschung verursachen keine neue Gebühr.
- Frage nach einem Timeout die gespeicherte Aufgabe ab, statt eine weitere Präsentation zu erstellen. Siehe [Abrechnung und Fehler](https://openapi.felo.ai/de/docs/data-api/guides/felo-billing.md).
