> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plato.ae/llms.txt
> Use this file to discover all available pages before exploring further.

# AI Streaming

> Diffusez une réponse Connect360 AI en tant qu'événements envoyés par le serveur.

Utilisez le streaming AI lorsqu'un site Web ou une surface d'assistance doit afficher la réponse AI telle qu'elle est générée.

```text theme={null}
POST /api/v1/connect/ai-stream
```

La réponse utilise des événements envoyés par le serveur.

## Demande

```bash theme={null}
curl "https://api.plato.ae/api/v1/connect/ai-stream" \
  -X POST \
  -H "Authorization: Bearer $PLATO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agentId": "ai_agent_id",
    "conversationId": "conversation_id",
    "lastMessageId": "message_id"
  }'
```

## Corps

```ts theme={null}
{
  agentId: string;
  conversationId: string;
  channelId?: string | null;
  lastMessageId?: string | null;
  senderId?: string | null;
}
```

`senderId` est requis sauf si Plato peut le lire à partir de `lastMessageId`.

`channelId` est facultatif lorsque la conversation a déjà un canal ou que le dernier message a un canal.

## Événements

Le flux envoie des événements `data:`.

Événement Delta :

```json theme={null}
{
  "type": "delta",
  "delta": "Hello",
  "text": "Hello"
}
```

Événement terminé :

```json theme={null}
{
  "type": "done",
  "messageId": "message_id",
  "text": "Hello, how can I help?"
}
```

Événement d'erreur :

```json theme={null}
{
  "type": "error",
  "error": "Conversation not found."
}
```

## Exemple de navigateur

```ts theme={null}
const response = await fetch("https://api.plato.ae/api/v1/connect/ai-stream", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    agentId: "ai_agent_id",
    conversationId: "conversation_id",
    lastMessageId: "message_id",
  }),
});

const reader = response.body?.getReader();
```

Pour les sites Web publics, appelez ce point de terminaison depuis votre backend lorsque cela est possible. N'exposez pas les clés API de longue durée dans le code du navigateur.

## Autorisation

Le streaming AI nécessite :

```text theme={null}
connect360:conversation:engage
```
