# Créer une présentation Felo

POST /api/v1/data/ppts

Générez une présentation de façon asynchrone, puis exportez un fichier PPTX. Gardez les étapes de génération et d'export séparées : une tâche créée n'est pas encore un fichier terminé.

Tous les exemples utilisent `FELO_API_KEY` depuis l'[aperçu](https://openapi.felo.ai/fr/docs/data-api/guides/felo-overview.md). Les appels utilisent **le solde de plateforme**, et non les crédits Felo Pro. Les exemples de réponse sont illustratifs ; le contenu réel et les champs facultatifs varient.





## 1. Créer la présentation

`POST /api/v1/data/ppts`

| Champ | Type | Requis | Signification |
|---|---|---|---|
| `query` | string | Oui | Instructions de génération, 1–25 000 caractères |
| `stream_protocol` | string | Non | `message_center_v1` par défaut ; laissez généralement inchangé |
| `ppt_config` | objet | Non | Configuration facultative ; l'implémentation actuelle lit `ai_theme_id` |
| `livedoc_short_id` | string | Non | ID de contexte existant, jusqu'à 100 caractères ; doit passer les contrôles natifs d'API de propriété et d'expiration |
| `resource_ids` | tableau de strings | Non | Jusqu'à 100 IDs de ressources UUID ; soumis aux mêmes contrôles d'accès au contexte |

Pour une première intégration, omettez les champs de contexte et de configuration. Un contexte créé via `/v2` n'est pas automatiquement éligible à la réutilisation ici.

```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 renvoie les identifiants à la racine :

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

Des identifiants supplémentaires tels que `resource_id`, `stream_key` et `thread_short_id` peuvent être présents. Une réponse de création réussie signifie que la tâche a été acceptée, pas que la génération est terminée. Le nombre de diapositives demandé est une instruction ; la facturation utilise le nombre réel de pages générées.

```bash
TASK_ID="example-task-id"
PPT_ID="example-ppt-id"
```

### Lire les événements de génération avec SSE

Si la création renvoie une `stream_key`, connectez-vous immédiatement avec une clé API appartenant au même compte. Si aucune clé de flux n'est renvoyée, utilisez les requêtes de statut et de résultat ci-dessous.

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

| Paramètre de requête | Signification |
|---|---|
| `format` | `raw` (par défaut) préserve la chaîne `content` ; `structured` décode le JSON valide en objet ou tableau |
| `offset` | Position de reprise amont facultative pour la reconnexion ; ne l'inférez pas de votre nombre local d'événements |

Lisez chaque événement SSE complet, décodez son JSON externe, puis traitez `content`. Un événement d'application `answer` contient du texte dans `data.text` ; `finished` signale l'achèvement de la génération dans le flux. Gérez aussi les signaux amont `done`, `[DONE]` et `error`. Si la connexion se ferme sans signal d'achèvement, interrogez le statut de la tâche.

Utilisez les règles d'analyse et l'exemple client de [SuperAgent SSE](https://openapi.felo.ai/fr/docs/api-reference/superagent.md#2-consommer-le-flux-sse), avec l'URL `/api/v1/data/conversations/stream/{stream_key}` de cette section. Lisez le résultat de la tâche après la fin du flux ; l'export PPTX reste une étape séparée. Ce point de terminaison n'active pas `stream: true` sur `/api/v1/data/chat`.



## Durée de vie, propriété et facturation

- Les présentations expirent **sept jours après leur création**. Les requêtes et les exports ne prolongent pas cette période. Le `expires_at` de la présentation et le `expires_at` de l'URL signée de téléchargement décrivent des durées de vie différentes.
- Seul le compte API créateur peut accéder à ses tâches et présentations. Une ressource manquante ou inaccessible peut renvoyer 404 ; une ressource expirée ou supprimée peut renvoyer 410, ou 404 après nettoyage.
- La génération est facturée par page générée (`ppt.generate`). Avec la tarification par page, la création réserve le prix de dix pages, puis régularise la production réussie réelle et libère la réservation inutilisée. Votre compte doit disposer d'un solde disponible suffisant pour la réservation, même si l'invite demande moins de pages.
- L'export a un prix de requête séparé (`ppt.export`). Les requêtes de statut, de résultat, de statut d'export et la suppression ne créent aucun nouveau frais.
- Après un délai d'attente, interrogez la tâche enregistrée plutôt que de créer une autre présentation. Consultez [Facturation et erreurs](https://openapi.felo.ai/fr/docs/data-api/guides/felo-billing.md).
