# Felo Criar Apresentação

POST /api/v1/data/ppts

Gere uma apresentação de forma assíncrona e depois exporte um arquivo PPTX. Mantenha as etapas de geração e exportação separadas: uma tarefa criada ainda não é um arquivo concluído.

Todos os exemplos usam `FELO_API_KEY` a partir da [visão geral](https://openapi.felo.ai/pt-BR/docs/data-api/guides/felo-overview.md). As chamadas usam **saldo da plataforma**, não créditos Pro da Felo. Os exemplos de resposta são ilustrativos; o conteúdo ao vivo e os campos opcionais variam.





## 1. Crie a apresentação

`POST /api/v1/data/ppts`

| Campo | Tipo | Obrigatório | Significado |
|---|---|---|---|
| `query` | string | Sim | Instruções de geração, 1–25.000 caracteres |
| `stream_protocol` | string | Não | Padrão `message_center_v1`; normalmente deixe sem alteração |
| `ppt_config` | object | Não | Configuração opcional; a implementação atual lê `ai_theme_id` |
| `livedoc_short_id` | string | Não | ID de contexto existente, até 100 caracteres; deve passar pelas verificações nativas de propriedade da API e expiração |
| `resource_ids` | array de strings | Não | Até 100 IDs de recursos UUID; sujeito às mesmas verificações de acesso ao contexto |

Para uma primeira integração, omita os campos de contexto e configuração. Um contexto criado por meio de `/v2` não é automaticamente elegível para reutilização aqui.

```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 retorna identificadores na raiz:

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

Identificadores adicionais como `resource_id`, `stream_key` e `thread_short_id` podem estar presentes. Uma resposta bem-sucedida de criação significa que a tarefa foi aceita, não que a geração foi concluída. A contagem de slides solicitada é uma instrução; a cobrança usa a contagem real de páginas geradas.

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

### Leia eventos de geração com SSE

Se a criação retornar uma `stream_key`, conecte-se imediatamente com uma API Key pertencente à mesma conta. Se nenhuma stream key for retornada, use as consultas de status e de resultado abaixo.

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

| Parâmetro de consulta | Significado |
|---|---|
| `format` | `raw` (padrão) preserva a string `content`; `structured` decodifica JSON válido em um objeto ou array |
| `offset` | Posição opcional de retomada upstream para reconexão; não a infira da contagem local de eventos |

Leia cada evento SSE completo, decodifique seu JSON externo e então processe `content`. Um evento de aplicativo `answer` carrega texto em `data.text`; `finished` sinaliza a conclusão da geração no stream. Também lide com sinais upstream `done`, `[DONE]` e `error`. Se a conexão for encerrada sem um sinal de conclusão, consulte o status da tarefa.

Use as regras de análise e o exemplo de cliente em [SuperAgent SSE](https://openapi.felo.ai/pt-BR/docs/api-reference/superagent.md#2-consumir-o-stream-sse), com a URL desta seção `/api/v1/data/conversations/stream/{stream_key}`. Leia o resultado da tarefa após o término do stream; a exportação de PPTX continua sendo uma etapa separada. Este endpoint não habilita `stream: true` em `/api/v1/data/chat`.



## Vida útil, propriedade e cobrança

- As apresentações expiram **sete dias após a criação**. Consultas e exportações não estendem esse período. O `expires_at` da apresentação e o `expires_at` da URL assinada de download descrevem durações diferentes.
- Apenas a conta de API que criou a apresentação pode acessar suas tarefas e apresentações. Um recurso ausente ou inacessível pode retornar 404; um recurso expirado ou excluído pode retornar 410, ou 404 após a limpeza.
- A geração é cobrada por página gerada (`ppt.generate`). No preço por página, a criação reserva o preço de dez páginas, depois acerta a saída real bem-sucedida e libera a reserva não utilizada. Sua conta precisa de saldo disponível suficiente para a reserva, mesmo que o prompt solicite menos páginas.
- A exportação tem um preço de solicitação separado (`ppt.export`). Consultas de status, consultas de resultado, consultas de status de exportação e exclusão não criam nova cobrança.
- Após um timeout, consulte a tarefa salva em vez de criar outra apresentação. Veja [Cobrança e Erros](https://openapi.felo.ai/pt-BR/docs/data-api/guides/felo-billing.md).
