# Felo プレゼンテーション作成

POST /api/v1/data/ppts

プレゼンテーションを非同期で生成し、その後 PPTX ファイルをエクスポートします。生成とエクスポートの手順は分けてください。作成されたタスクはまだ完成したファイルではありません。

すべての例は [概要](https://openapi.felo.ai/ja/docs/data-api/guides/felo-overview.md) の `FELO_API_KEY` を使用します。呼び出しには **プラットフォーム残高** が使われ、Felo Pro クレジットは使われません。レスポンス例は説明用であり、実際の内容や任意フィールドは変動します。





## 1. プレゼンテーションを作成する

`POST /api/v1/data/ppts`

| フィールド | 型 | 必須 | 意味 |
|---|---|---|---|
| `query` | string | はい | 生成指示、1〜25,000 文字 |
| `stream_protocol` | string | いいえ | 既定は `message_center_v1`。通常は変更しないでください |
| `ppt_config` | object | いいえ | 任意の設定。現在の実装では `ai_theme_id` を読み取ります |
| `livedoc_short_id` | string | いいえ | 既存のコンテキスト ID、最大 100 文字。ネイティブ API の所有権および有効期限チェックを通過する必要があります |
| `resource_ids` | string array | いいえ | 最大 100 個の UUID リソース ID。同じコンテキストアクセスチェックの対象です |

最初の統合では、コンテキストと設定のフィールドは省略してください。`/v2` で作成されたコンテキストは、この場所で自動的に再利用可能になるわけではありません。

```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 は、ルートに識別子を返します:

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

`resource_id`、`stream_key`、`thread_short_id` などの追加の識別子が含まれる場合があります。成功した作成レスポンスは、タスクが受け入れられたことを意味し、生成が完了したことを意味しません。要求されたスライド数は指示であり、課金は実際に生成されたページ数に基づきます。

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

### SSE で生成イベントを読み取る

作成が `stream_key` を返した場合は、同じアカウントに属する API キーでただちに接続してください。stream key が返らない場合は、以下のステータスおよび結果照会を使用してください。

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

| クエリパラメーター | 意味 |
|---|---|
| `format` | `raw`（既定）は `content` 文字列をそのまま保持します。`structured` は有効な JSON をオブジェクトまたは配列にデコードします |
| `offset` | 再接続用の上流再開位置。ローカルのイベント数から推測しないでください |

完全な SSE イベントを 1 件ずつ読み取り、外側の JSON をデコードしてから `content` を処理してください。`answer` アプリケーションイベントは `data.text` にテキストを持ちます。`finished` はストリーム内での生成完了を示します。上流の `done`、`[DONE]`、`error` シグナルにも対応してください。接続が完了シグナルなしで閉じた場合は、タスクステータスを問い合わせてください。

[SuperAgent SSE](https://openapi.felo.ai/ja/docs/api-reference/superagent.md#2-sse-消費) の解析ルールとクライアント例を、このセクションの `/api/v1/data/conversations/stream/{stream_key}` URL とともに使用してください。ストリーム終了後にタスク結果を読み取ってください。PPTX エクスポートは引き続き別ステップです。このエンドポイントは `/api/v1/data/chat` で `stream: true` を有効にしません。



## 有効期間、所有権、課金

- プレゼンテーションは **作成から 7 日後** に期限切れになります。クエリやエクスポートではこの期間は延長されません。プレゼンテーションの `expires_at` と署名付きダウンロード URL の `expires_at` は、異なる有効期間を示します。
- 作成した API アカウントのみが、そのタスクとプレゼンテーションにアクセスできます。存在しない、またはアクセスできないリソースは 404 を返す場合があります。期限切れまたは削除済みのリソースは 410、またはクリーンアップ後に 404 を返す場合があります。
- 生成は生成ページごとに課金されます（`ppt.generate`）。ページ単価では、作成時に 10 ページ分の価格が予約され、実際の成功出力で精算され、未使用の予約分は解放されます。プロンプトで要求するページ数が少なくても、アカウントには予約に十分な利用可能残高が必要です。
- エクスポートには別のリクエスト単価（`ppt.export`）があります。ステータス照会、結果照会、エクスポートステータス照会、削除では新しい課金は発生しません。
- タイムアウト後は、別のプレゼンテーションを作成するのではなく、保存済みのタスクを問い合わせてください。[課金とエラー](https://openapi.felo.ai/ja/docs/data-api/guides/felo-billing.md) を参照してください。
