Felo API PlatformFelo API Platform

Felo APIs

PPT Task API

Erstellen Sie PPT-Generierungsaufgaben, listen Sie Themes auf und fragen Sie gemeinsame Task-Endpoints ab.

POST/v2/ppts

Authentifizierung

Bearer API key

Inhaltstyp

application/json

Hinweise zu Limits

Es können endpoint-spezifische Limits gelten.

Die PPT Task API bietet asynchrone Funktionen zur PPT-Generierung. Sie können eine Aufgabe erstellen und dann den Aufgabenstatus über task_id abfragen. Sie können außerdem verfügbare PPT-Themes durchsuchen und sie beim Erstellen von Aufgaben anwenden.

Dies ist eine asynchrone API. Das gemeinsame Muster aus Senden, Abfragen und Abrufen finden Sie unter Asynchrone Aufgaben.

Authentifizierung

Alle Anfragen erfordern einen API-Schlüssel im Authorization-Header:

Authorization: Bearer YOUR_API_KEY

Verwendung mit KI-Agenten

Um Folien aus einem Agenten zu erstellen, installieren Sie das vollständige Paket felo-ai statt einer festen Teilmenge von Skills. Sein Installer ermittelt dynamisch jedes Paketverzeichnis mit SKILL.md, einschließlich des PPT-Skills und künftiger Ergänzungen. Installieren Sie alle gefundenen Skills im nativen Verzeichnis für Ihren Agenten: Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills oder Hermes Agent ~/.hermes/skills. Folgen Sie der manuellen Einrichtungsanleitung für KI-Agenten für die plattformspezifische Konfiguration und Prüfung des API-Schlüssels.

1. PPT-Themes auflisten

Fragen Sie verfügbare PPT-Themes mit Paginierung, Stichwortsuche sowie Filterung nach Sprache und Typ ab.

Endpoint

GET https://openapi.felo.ai/v2/ppt-themes

Query-Parameter

ParameterTypErforderlichBeschreibung
langstringNeinSprachcode für lokalisierte Inhalte (z. B. en, zh-Hans). Standard: en
typestringNeinNach Themetyp filtern (z. B. default, custom)
keywordstringNeinSuchstichwort; entspricht den Thementiteln
pageintegerNeinSeitennummer, beginnend bei 1. Standard: 1
sizeintegerNeinSeitengröße, maximal 100. Standard: 20

Beispiel

curl -X GET 'https://openapi.felo.ai/v2/ppt-themes?lang=en&page=1&size=10' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Erfolgreiche Antwort (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "total": 8,
    "page": 1,
    "size": 10,
    "items": [
      {
        "id": "43122897-0d3c-4c9e-ae19-20527ad36c04",
        "title": "Inspiration Themes",
        "subtitle": "AI-tailored visual solutions",
        "description": "Style and layout, both crafted by AI from your content in real time"
      }
    ]
  }
}

Antwortfelder der Themes

FeldTypBeschreibung
totalintegerGesamtzahl der Themes, die dem Filter entsprechen
pageintegerAktuelle Seitennummer
sizeintegerSeitengröße
itemsarrayListe der Theme-Objekte
items[].idstringTheme-ID; verwenden Sie sie beim Erstellen der PPT als ai_theme_id
items[].titlestringThementitel (lokalisiert)
items[].subtitlestringUntertitel des Themes (lokalisiert)
items[].descriptionstringThemenbeschreibung (lokalisiert)

2. PPT-Aufgabe erstellen

Endpoint

POST https://openapi.felo.ai/v2/ppts

Anfrage-Header

HeaderErforderlichBeschreibung
AuthorizationJaIhr API-Schlüssel im Format Bearer YOUR_API_KEY
Content-TypeJaapplication/json oder multipart/form-data

Anfrage-Textkörper

ParameterTypErforderlichBeschreibung
querystringJaPrompt für die PPT-Generierung
livedoc_short_idstringNeinKurz-ID eines vorhandenen LiveDocs, die der PPT-Sitzung zugeordnet wird. Wenn nicht angegeben, wird automatisch ein neues LiveDoc erstellt.
resource_idsarray of stringsNeinListe der LiveDoc-Ressourcen-IDs, die als Kontext für die PPT-Generierung verwendet werden
ppt_configobjectNeinPPT-Konfigurationsoptionen
ppt_config.ai_theme_idstringNeinTheme-ID aus dem Endpoint PPT-Themes auflisten

Beispiel

curl -X POST 'https://openapi.felo.ai/v2/ppts' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "query": "Felo, 2 pages",
    "ppt_config": {
      "ai_theme_id": "02968979-a69f-42c4-b136-de02c40ab2d7"
    }
  }'

Aus einer hochgeladenen Datei erstellen

Verwenden Sie multipart/form-data, um eine Datei hochzuladen und in einer einzigen Anfrage eine PPT-Aufgabe zu erstellen. Die Plattform lädt die Datei zuerst als LiveDoc-Ressource hoch und übergibt dann ihre Ressourcen-ID an die PPT-Aufgabe.

TeilTypErforderlichBeschreibung
querystringJaPrompt für die PPT-Generierung
filefileJaQuelldatei, die als PPT-Kontext verwendet wird
stream_protocolstringNeinStreaming-Protokoll; standardmäßig message_center_v1
livedoc_short_idstringNeinVorhandenes LiveDoc, das die Datei aufnimmt. Wenn nicht angegeben, wird ein neues LiveDoc erstellt.
ppt_configJSONNeinPPT-Konfiguration mit derselben Struktur wie der JSON-Anfrage-Textkörper. Senden Sie diesen Teil als application/json.
curl -X POST 'https://openapi.felo.ai/v2/ppts' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -F 'query=Create a 10-page presentation based on this report' \
  -F 'ppt_config={"ai_theme_id":"02968979-a69f-42c4-b136-de02c40ab2d7"};type=application/json' \
  -F '[email protected]'

Die Antwort verwendet dasselbe Schema wie die JSON-Anfrage. Die zurückgegebene livedoc_short_id kennzeichnet das LiveDoc, das die hochgeladene Ressource enthält.

Erfolgreiche Antwort (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "livedoc_short_id": "PvyKouzJirXjFdst4uKRK3",
    "ppt_business_id": "BfLPuQKmChk9SPmyQawxgr",
    "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9"
  }
}

3. Aufgabenstatus abfragen

Endpoint

GET https://openapi.felo.ai/v2/tasks/{task_id}/status

Beispiel

curl -X GET 'https://openapi.felo.ai/v2/tasks/019cad6d-e874-55ef-d577-686344b5a7e9/status' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Erfolgreiche Antwort (200)

{
  "status": "ok",
  "message": null,
  "data": {
    "status": "RUNNING"
  }
}

4. Historische Informationen zur Aufgabe abfragen

Endpoint

GET https://openapi.felo.ai/v2/tasks/{task_id}/historical

Beispiel

curl -X GET 'https://openapi.felo.ai/v2/tasks/019cb17e-9e23-3d40-4447-48a651249460/historical' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Antwort für RUNNING

{
  "status": "ok",
  "message": null,
  "data": {
    "task_id": "019cb17e-9e23-3d40-4447-48a651249460",
    "task_status": "RUNNING",
    "ppt_biz_id": "oM8A9iJHg8dT4ZKgHThQTx",
    "ppt_url": "https://felo.ai/slides/oM8A9iJHg8dT4ZKgHThQTx"
  }
}

Antwort für COMPLETED

{
  "status": "ok",
  "message": null,
  "data": {
    "task_id": "019cb17e-9e23-3d40-4447-48a651249460",
    "task_status": "COMPLETED",
    "ppt_biz_id": "oM8A9iJHg8dT4ZKgHThQTx",
    "ppt_url": "https://felo.ai/slides/oM8A9iJHg8dT4ZKgHThQTx",
    "live_doc_short_id": "oM8A9iJHg8dT4ZKgHThQTx",
    "live_doc_url": "https://felo.ai/livedoc/oM8A9iJHg8dT4ZKgHThQTx"
  }
}

Antwort für COMPLETED (AI_PAGE)

{
  "status": "ok",
  "message": null,
  "data": {
    "task_id": "019d7a4d-6ab5-a96d-0f98-43ca434ab621",
    "task_status": "COMPLETED",
    "ppt_biz_id": "9qiLTmT77fA3aVurrMHvRJ",
    "ppt_url": "https://felo.ai/slides/9qiLTmT77fA3aVurrMHvRJ",
    "ai_page_html": "https://felo.ai/ai-page/9qiLTmT77fA3aVurrMHvRJ"
  }
}

Antwort für FAILED / PENDING / EXPIRED / CANCELED

{
  "status": "ok",
  "message": null,
  "data": {
    "task_id": "019cb17e-9e23-3d40-4447-48a651249460",
    "task_status": "FAILED",
    "ppt_biz_id": "oM8A9iJHg8dT4ZKgHThQTx",
    "ppt_url": "https://felo.ai/slides/oM8A9iJHg8dT4ZKgHThQTx",
    "error_message": "PPT generation failed",
    "live_doc_short_id": "oM8A9iJHg8dT4ZKgHThQTx",
    "live_doc_url": "https://felo.ai/livedoc/oM8A9iJHg8dT4ZKgHThQTx"
  }
}

Felder der historischen Antwort

FeldTypBeschreibung
task_idstringAufgaben-ID
task_statusstringAktueller Aufgabenstatus
ppt_biz_idstringPPT-Business-ID (zugeordnet aus dem Backend-Feld thread_short_id)
ppt_urlstringPPT-URL, Format: https://felo.ai/slides/{ppt_biz_id}
error_messagestringVorhanden bei FAILED / PENDING / EXPIRED / CANCELED; leere Zeichenfolge "", wenn der nachgelagerte Dienst keine Fehlerdetails liefert
ai_page_htmlstringVorhanden, wenn die Aufgabe im AI_PAGE-Modus läuft und die historische Antwort des nachgelagerten Dienstes eine HTML-Ergebnis-URL liefert
live_doc_short_idstringLiveDoc-Kurz-ID. Bei COMPLETED stammt sie aus der nachgelagerten live_doc_short_id; bei Endfehlerstatus wird sie zurückgegeben, sofern verfügbar
live_doc_urlstringLiveDoc-URL, die zu live_doc_short_id gehört

PPTX exportieren

Nachdem die PPT-Generierungsaufgabe COMPLETED erreicht hat, übermitteln Sie einen asynchronen Export mit der ppt_business_id aus der Erstellungsantwort (oder der ppt_biz_id aus der historischen Antwort):

curl -X POST 'https://openapi.felo.ai/v2/ppts/YOUR_PPT_BUSINESS_ID/export' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{}'

Fragen Sie GET https://openapi.felo.ai/v2/ppts/{ppt_business_id}/export mit demselben Bearer-API-Schlüssel alle 2–5 Sekunden ab. Der Eigentümer des API-Schlüssels muss auch Eigentümer der PPT sein. Beide Endpoints geben data.status zurück: NOT_STARTED, PROCESSING, COMPLETED oder FAILED. Nur COMPLETED enthält download_url und expires_at.

Die signierte Download-URL läuft 30 Minuten nach Ausstellung ab. Rufen Sie den GET-Endpoint erneut auf, um eine frische URL zu erhalten; die PPTX wird dabei nicht neu erzeugt. POST verwendet application/json und akzeptiert {}. Eine Wiederholung von POST während eines laufenden Exports startet keinen weiteren Auftrag; ein Aufruf nach Abschluss erzeugt die PPTX neu und verursacht die bestehende Guthabenbelastung für den PPT-Export. Bei unzureichendem Guthaben wird HTTP 402 zurückgegeben. Es können endpoint-spezifische Rate-Limits gelten; versuchen Sie es bei HTTP 429 später erneut. Ein fehlgeschlagener Export kann erneut übermittelt werden.

{
  "status": "ok",
  "message": null,
  "data": {
    "status": "COMPLETED",
    "download_url": "https://example.com/presentation.pptx?signature=...",
    "expires_at": "2026-09-29T10:30:00Z"
  }
}

Empfehlung zum Abfragen

Verwenden Sie die task_id aus der Erstellungsantwort und fragen Sie den Status alle 2–5 Sekunden ab, bis der Status einen Endzustand erreicht.

Häufige Statusbeispiele:

  • RUNNING: Die Aufgabe wird noch verarbeitet.
  • COMPLETED: Die Aufgabe wurde erfolgreich abgeschlossen.
  • FAILED / PENDING / EXPIRED / CANCELED: Die Aufgabe hat einen Endstatus mit error_message erreicht; live_doc_url wird ebenfalls zurückgegeben, sofern verfügbar.

Mit der Weiterentwicklung des Backends können unbekannte Statuswerte auftreten; behandeln Sie sie als nicht terminal, sofern nicht anders dokumentiert.

Fehlercodes

CodeHTTP-StatusBeschreibung
UNAUTHORIZED401Der API-Schlüssel ist ungültig oder widerrufen
PPT_TASK_CREATE_FAILED502Der nachgelagerte Aufruf zum Erstellen der Aufgabe ist fehlgeschlagen
PPT_TASK_QUERY_FAILED502Der nachgelagerte Aufruf zum Abfragen des Aufgabenstatus ist fehlgeschlagen