# Felo Utwórz prezentację

POST /api/v1/data/ppts

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](https://openapi.felo.ai/pl/docs/data-api/guides/felo-overview.md). 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ć.





## 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.

```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 zwraca identyfikatory w korzeniu:

```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"
}
```

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.

```bash
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.

```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'
```

| 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](https://openapi.felo.ai/pl/docs/api-reference/superagent.md#2-odbierz-strumie-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`.



## Czas życia, własność i rozliczenia

- Prezentacje wygasają **siedem dni po utworzeniu**. Zapytania i eksporty nie wydłużają tego okresu. `expires_at` prezentacji i podpisany URL pobierania `expires_at` opisują 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](https://openapi.felo.ai/pl/docs/data-api/guides/felo-billing.md).
