Felo API PlatformFelo API Platform

PPT-Generierung und Export

Anbieter: Felo · Bezahlt mit Plattform-Guthaben

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. Aufrufe verwenden Plattform-Guthaben, nicht Felo-Pro-Guthaben. Antwortbeispiele sind illustrativ; Live-Inhalte und optionale Felder variieren.

Workflow und Kennungen

  1. Erstelle eine Generierungsaufgabe; speichere task_id, ppt_business_id und expires_at.
  2. Frage den Generierungsstatus anhand von task_id ab.
  3. Lies die Generierungsergebnisse anhand von task_id.
  4. Starte den PPTX-Export anhand von ppt_business_id.
  5. Frage den Exportstatus ab und lade die fertige Datei herunter.
  6. Lösche die Präsentation optional frühzeitig.

In Routenplatzhaltern bedeutet {business_id} die zurückgegebene `ppt_business_id`, nicht task_id, resource_id oder livedoc_short_id. Verwende für den gesamten Workflow dasselbe API-Konto. IDs in den Beispielen sind Platzhalter.

1. Erstelle die Präsentation

POST /api/v1/data/ppts

FeldTypErforderlichBedeutung
querystringJaGenerierungsanweisungen, 1–25.000 Zeichen
stream_protocolstringNeinStandard message_center_v1; normalerweise unverändert lassen
ppt_configobjectNeinOptionale Konfiguration; die aktuelle Implementierung liest ai_theme_id
livedoc_short_idstringNeinBestehende Kontext-ID, bis zu 100 Zeichen; muss die nativen API-Prüfungen für Besitz und Ablauf bestehen
resource_idsstring arrayNeinBis 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.

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:

{
  "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.

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.

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-ParameterBedeutung
formatraw (Standard) erhält den content-String; structured dekodiert gültiges JSON in ein Objekt oder Array
offsetOptionale 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, 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.

2. Generierungsstatus abfragen

GET /api/v1/data/tasks/{task_id}/status

curl -sS --request GET "https://openapi.felo.ai/api/v1/data/tasks/$TASK_ID/status" \
  -H "Authorization: Bearer $FELO_API_KEY"

Die Antwort hat einen status-String an der Root, zum Beispiel RUNNING oder COMPLETED. Frage in einem begrenzten Intervall ab (zum Beispiel 2–5 Sekunden) und mit einer Frist. Fahre nach Abschluss mit den Ergebnissen fort; behandle Fehler und unerwartete Status, ohne Erfolg anzunehmen. Eine Abfragefrist bricht die Aufgabe nicht ab.

{"status":"COMPLETED"}

3. Generierungsergebnisse lesen

POST /api/v1/data/tasks/{task_id}/historical

Dies ist ein POST, ohne erforderlichen JSON-Body.

curl -sS --request POST "https://openapi.felo.ai/api/v1/data/tasks/$TASK_ID/historical" \
  -H "Authorization: Bearer $FELO_API_KEY"
{
  "task_id":"example-task-id",
  "task_status":"COMPLETED",
  "history_data":{},
  "error_message":null
}

Lies task_status, bevor du history_data verwendest. Die History-Payload kann je nach Aufgabe variieren und kann null sein. ai_page_html und thread_short_id sind optional. Diese Antwort ist keine garantierte PPTX-Download-URL; verwende als Nächstes den Export.

4. PPTX-Export starten

POST /api/v1/data/ppts/{business_id}/export

curl -sS --request POST "https://openapi.felo.ai/api/v1/data/ppts/$PPT_ID/export" \
  -H "Authorization: Bearer $FELO_API_KEY"
{"status":"PROCESSING","download_url":null,"expires_at":null}

Die Generierung muss abgeschlossen sein, bevor du exportierst. Wenn du POST bei laufendem Export derselben Präsentation wiederholst, wird dieser wiederverwendet. Wenn du nach Abschluss einen weiteren Export startest, wird ein neuer Export erstellt und es kann erneut eine Gebühr anfallen. Verwende GET zum Abfragen und Aktualisieren des Download-Links.

5. Export abfragen und herunterladen

GET /api/v1/data/ppts/{business_id}/export

curl -sS --request GET "https://openapi.felo.ai/api/v1/data/ppts/$PPT_ID/export" \
  -H "Authorization: Bearer $FELO_API_KEY"
StatusNächste Aktion
NOT_STARTEDSende den Export einmal ab
PROCESSINGWarte und frage dann erneut per GET ab
COMPLETEDLies download_url und lade die Datei herunter
FAILEDPrüfe den Fehler und den Aufgabenstatus, bevor du einen neuen Export absendest
{
  "status":"COMPLETED",
  "download_url":"https://example.com/presentation.pptx?signature=example",
  "expires_at":"2026-11-06T00:30:00Z"
}

Die Beispiel-URL dient nur zur Veranschaulichung. Verwende die tatsächliche signierte URL aus der Antwort. Sie ist 30 Minuten gültig; der GET-Exportstatus kann einen frischen Link zurückgeben, solange die Präsentation verfügbar bleibt. Speichere die Datei innerhalb ihrer Lebensdauer. Sende deinen Felo API-Schlüssel nicht an den Datei-Download-Host.

6. Präsentation löschen

DELETE /api/v1/data/ppts/{business_id}

curl -sS --request DELETE "https://openapi.felo.ai/api/v1/data/ppts/$PPT_ID" \
  -H "Authorization: Bearer $FELO_API_KEY"

Erfolg gibt HTTP 204 ohne Body zurück. Parst das nicht als JSON. Eine Löschung während der Generierung läuft, gibt 409 zurück.

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.

Brauchst du Hilfe?