Generowanie i eksport PPT
Dostawca: Felo · Płatność z salda platformy
Wygeneruj prezentację asynchronicznie, a następnie wyeksportuj plik PPTX. Rozdziel krok generowania i eksportu: utworzone zadanie nie jest jeszcze gotowym plikiem.
Wszystkie przykłady używają FELO_API_KEY z przeglądu. Wywołania korzystają z salda platformy, a nie z kredytów Felo Pro. Przykłady odpowiedzi mają charakter poglądowy; rzeczywista treść i opcjonalne pola mogą się różnić.
Przepływ pracy i identyfikatory
- Utwórz zadanie generowania; zapisz
task_id,ppt_business_idiexpires_at. - Sprawdzaj status generowania używając
task_id. - Odczytaj wyniki generowania używając
task_id. - Rozpocznij eksport PPTX używając
ppt_business_id. - Sprawdzaj status eksportu i pobierz gotowy plik.
- Opcjonalnie usuń prezentację wcześniej.
W placeholderach tras {business_id} oznacza zwrócone `ppt_business_id`, a nie task_id, resource_id ani livedoc_short_id. Użyj tego samego konta API przez cały przepływ pracy. Identyfikatory w przykładach są symbolami zastępczymi.
1. Utwórz prezentację
POST /api/v1/data/ppts
| Pole | Typ | Wymagane | Znaczenie |
|---|---|---|---|
query | string | Tak | Instrukcje generowania, 1–25 000 znaków |
stream_protocol | string | Nie | Domyślnie message_center_v1; zwykle pozostaw bez zmian |
ppt_config | object | Nie | Opcjonalna konfiguracja; bieżąca implementacja odczytuje ai_theme_id |
livedoc_short_id | string | Nie | Istniejące ID kontekstu, do 100 znaków; musi przejść natywne sprawdzenia własności API i wygaśnięcia |
resource_ids | tablica stringów | Nie | Do 100 UUID ID zasobów; obowiązują te same kontrole dostępu do kontekstu |
Dla pierwszej integracji pomiń pola kontekstu i konfiguracji. Kontekst utworzony przez /v2 nie jest automatycznie uprawniony do ponownego użycia tutaj.
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 zwraca identyfikatory w korzeniu:
{
"task_id":"example-task-id",
"ppt_business_id":"example-ppt-id",
"livedoc_short_id":"example-livedoc-id",
"expires_at":"2026-11-13T00:00:00Z"
}Dodatkowe identyfikatory, takie jak resource_id, stream_key i thread_short_id, mogą być obecne. Udana odpowiedź create oznacza, że zadanie zostało przyjęte, a nie że generowanie zostało zakończone. Żądana liczba slajdów jest instrukcją; rozliczenie używa rzeczywistej liczby wygenerowanych stron.
TASK_ID="example-task-id"
PPT_ID="example-ppt-id"Odczyt zdarzeń generowania z SSE
Jeśli tworzenie zwróci stream_key, połącz się natychmiast za pomocą API Key należącego do tego samego konta. Jeśli nie zwrócono klucza strumienia, użyj poniższych zapytań o status i wyniki.
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'| Parametr zapytania | Znaczenie |
|---|---|
format | raw (domyślnie) zachowuje ciąg content; structured dekoduje prawidłowy JSON do obiektu lub tablicy |
offset | Opcjonalna pozycja wznowienia w nadrzędnym źródle przy ponownym połączeniu; nie wyprowadzaj jej z lokalnej liczby zdarzeń |
Odczytaj każde kompletne zdarzenie SSE, zdekoduj jego zewnętrzny JSON, a następnie przetwórz content. Zdarzenie aplikacyjne answer niesie tekst w data.text; finished sygnalizuje zakończenie generowania w strumieniu. Obsługuj także sygnały nadrzędne done, [DONE] i error. Jeśli połączenie zamknie się bez sygnału zakończenia, sprawdź status zadania.
Użyj zasad parsowania i przykładu klienta z SuperAgent SSE, z tym adresem URL sekcji /api/v1/data/conversations/stream/{stream_key}. Odczytaj wynik zadania po zakończeniu strumienia; eksport PPTX pozostaje osobnym krokiem. Ten punkt końcowy nie włącza stream: true dla /api/v1/data/chat.
2. Sprawdzaj status generowania
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"Odpowiedź ma w korzeniu ciąg status, na przykład RUNNING lub COMPLETED. Odpytywanie wykonuj w ograniczonym odstępie czasu (na przykład 2–5 sekund) i z terminem końcowym. Po zakończeniu przejdź do wyników; obsłuż niepowodzenie i nieoczekiwane statusy bez zakładania sukcesu. Termin odpytywania nie anuluje zadania.
{"status":"COMPLETED"}3. Odczytaj wyniki generowania
POST /api/v1/data/tasks/{task_id}/historical
To jest POST, bez wymaganego ciała JSON.
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
}Przeczytaj task_status przed użyciem history_data. Ładunek historii może się różnić w zależności od zadania i może mieć wartość null. ai_page_html i thread_short_id są opcjonalne. Ta odpowiedź nie jest gwarantowanym adresem pobierania PPTX; użyj najpierw eksportu.
4. Rozpocznij eksport PPTX
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}Generowanie musi zostać zakończone przed eksportem. Powtarzanie POST, gdy ten sam eksport jest w trakcie, ponownie go wykorzystuje. Rozpoczęcie kolejnego eksportu po zakończeniu tworzy nowy eksport i może skutkować kolejną opłatą. Używaj GET do odpytywania i odświeżania linku pobierania.
5. Sprawdzaj eksport i pobierz plik
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"| Status | Następna czynność |
|---|---|
NOT_STARTED | Wyślij eksport raz |
PROCESSING | Poczekaj, a następnie ponownie odpytaj GET |
COMPLETED | Odczytaj download_url i pobierz plik |
FAILED | Sprawdź błąd i stan zadania przed wysłaniem nowego eksportu |
{
"status":"COMPLETED",
"download_url":"https://example.com/presentation.pptx?signature=example",
"expires_at":"2026-11-06T00:30:00Z"
}Przykładowy URL ma charakter poglądowy. Użyj rzeczywistego podpisanego URL z odpowiedzi. Jest ważny przez 30 minut; status eksportu GET może zwrócić świeży link, dopóki prezentacja pozostaje dostępna. Zapisz plik w czasie jego ważności. Nie wysyłaj klucza Felo API do hosta pobierania pliku.
6. Usuń prezentację
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"Sukces zwraca HTTP 204 bez ciała. Nie parsuj tego jako JSON. Usunięcie w trakcie generowania zwraca 409.
Czas życia, własność i rozliczenia
- Prezentacje wygasają siedem dni po utworzeniu. Zapytania i eksporty nie wydłużają tego okresu.
expires_atprezentacji i podpisany URL pobieraniaexpires_atopisują różne czasy życia. - Tylko konto API, które utworzyło zasób, może uzyskiwać dostęp do swoich zadań i prezentacji. Brakujący lub niedostępny zasób może zwrócić 404; wygasły lub usunięty zasób może zwrócić 410 albo 404 po sprzątaniu.
- Generowanie jest rozliczane za wygenerowaną stronę (
ppt.generate). Przy cenach per strona utworzenie rezerwuje cenę dziesięciu stron, a następnie rozlicza rzeczywisty udany wynik i zwalnia niewykorzystaną rezerwację. Twoje konto potrzebuje wystarczającego dostępnego salda na rezerwację, nawet jeśli prompt prosi o mniej stron. - Eksport ma osobną cenę za żądanie (
ppt.export). Zapytania o status, zapytania o wyniki, zapytania o status eksportu i usuwanie nie tworzą nowej opłaty. - Po przekroczeniu limitu czasu sprawdź zapisane zadanie, zamiast tworzyć kolejną prezentację. Zobacz Rozliczenia i błędy.