Felo APIs
PPT Task API
Erstellen Sie PPT-Generierungsaufgaben, listen Sie Themes auf und fragen Sie gemeinsame Task-Endpoints ab.
/v2/pptsAuthentifizierung
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_KEYVerwendung 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-themesQuery-Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
lang | string | Nein | Sprachcode für lokalisierte Inhalte (z. B. en, zh-Hans). Standard: en |
type | string | Nein | Nach Themetyp filtern (z. B. default, custom) |
keyword | string | Nein | Suchstichwort; entspricht den Thementiteln |
page | integer | Nein | Seitennummer, beginnend bei 1. Standard: 1 |
size | integer | Nein | Seitengröß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
| Feld | Typ | Beschreibung |
|---|---|---|
total | integer | Gesamtzahl der Themes, die dem Filter entsprechen |
page | integer | Aktuelle Seitennummer |
size | integer | Seitengröße |
items | array | Liste der Theme-Objekte |
items[].id | string | Theme-ID; verwenden Sie sie beim Erstellen der PPT als ai_theme_id |
items[].title | string | Thementitel (lokalisiert) |
items[].subtitle | string | Untertitel des Themes (lokalisiert) |
items[].description | string | Themenbeschreibung (lokalisiert) |
2. PPT-Aufgabe erstellen
Endpoint
POST https://openapi.felo.ai/v2/pptsAnfrage-Header
| Header | Erforderlich | Beschreibung |
|---|---|---|
Authorization | Ja | Ihr API-Schlüssel im Format Bearer YOUR_API_KEY |
Content-Type | Ja | application/json oder multipart/form-data |
Anfrage-Textkörper
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
query | string | Ja | Prompt für die PPT-Generierung |
livedoc_short_id | string | Nein | Kurz-ID eines vorhandenen LiveDocs, die der PPT-Sitzung zugeordnet wird. Wenn nicht angegeben, wird automatisch ein neues LiveDoc erstellt. |
resource_ids | array of strings | Nein | Liste der LiveDoc-Ressourcen-IDs, die als Kontext für die PPT-Generierung verwendet werden |
ppt_config | object | Nein | PPT-Konfigurationsoptionen |
ppt_config.ai_theme_id | string | Nein | Theme-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.
| Teil | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
query | string | Ja | Prompt für die PPT-Generierung |
file | file | Ja | Quelldatei, die als PPT-Kontext verwendet wird |
stream_protocol | string | Nein | Streaming-Protokoll; standardmäßig message_center_v1 |
livedoc_short_id | string | Nein | Vorhandenes LiveDoc, das die Datei aufnimmt. Wenn nicht angegeben, wird ein neues LiveDoc erstellt. |
ppt_config | JSON | Nein | PPT-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}/statusBeispiel
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}/historicalBeispiel
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
| Feld | Typ | Beschreibung |
|---|---|---|
task_id | string | Aufgaben-ID |
task_status | string | Aktueller Aufgabenstatus |
ppt_biz_id | string | PPT-Business-ID (zugeordnet aus dem Backend-Feld thread_short_id) |
ppt_url | string | PPT-URL, Format: https://felo.ai/slides/{ppt_biz_id} |
error_message | string | Vorhanden bei FAILED / PENDING / EXPIRED / CANCELED; leere Zeichenfolge "", wenn der nachgelagerte Dienst keine Fehlerdetails liefert |
ai_page_html | string | Vorhanden, wenn die Aufgabe im AI_PAGE-Modus läuft und die historische Antwort des nachgelagerten Dienstes eine HTML-Ergebnis-URL liefert |
live_doc_short_id | string | LiveDoc-Kurz-ID. Bei COMPLETED stammt sie aus der nachgelagerten live_doc_short_id; bei Endfehlerstatus wird sie zurückgegeben, sofern verfügbar |
live_doc_url | string | LiveDoc-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 miterror_messageerreicht;live_doc_urlwird 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
| Code | HTTP-Status | Beschreibung |
|---|---|---|
UNAUTHORIZED | 401 | Der API-Schlüssel ist ungültig oder widerrufen |
PPT_TASK_CREATE_FAILED | 502 | Der nachgelagerte Aufruf zum Erstellen der Aufgabe ist fehlgeschlagen |
PPT_TASK_QUERY_FAILED | 502 | Der nachgelagerte Aufruf zum Abfragen des Aufgabenstatus ist fehlgeschlagen |