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

# Datenstromübertragung

> Empfange schrittweise Ausgaben, verarbeite endpunktspezifische Ereignisse und behandle unterbrochene Streams.

Setze `stream: true`, um Ausgaben als Server-Sent Events (SSE) zu empfangen. Bewahre den Phaseo-API-Schlüssel auf deinem Server auf und leite die Ausgabe an die Oberfläche weiter.

## Streaming-Anfrage senden

```bash theme={null}
curl --no-buffer https://api.phaseo.app/v1/responses \
  -H "Authorization: Bearer $PHASEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-5-nano",
    "input": "Say hello in one sentence.",
    "stream": true
  }'
```

Prüfe den HTTP-Status vor dem Lesen des Streams. Fehler vor Streaming-Beginn liefern die normale [JSON-Fehlerantwort](../api-reference/errors.mdx).

## Ereignisse lesen

Nutze das Ereignisformat des aufgerufenen Endpunkts:

| Endpunkt | Schrittweise Ausgabe | Abschluss |
| - | - | - |
| [Responses](../api-reference/endpoint/responses.mdx) | Ereignisse wie `response.output_text.delta` | Prüfe das abschließende Antwortereignis und seinen Status |
| [Chat Completions](../api-reference/endpoint/chat-completions.mdx) | `choices[].delta` | Prüfe `finish_reason`; `[DONE]` beendet den Stream |
| [Messages](../api-reference/endpoint/anthropic-messages.mdx) | `message_start`, `content_block_delta`, und verwandte Ereignisse | `message_stop` |

SSE-Ereignisse sind durch Leerzeilen getrennt. Ein Netzwerkfragment kann einen Teil eines Ereignisses oder mehrere Ereignisse enthalten; parse es nicht als eigenständiges JSON. Puffere unvollständige Frames oder nutze einen SDK-Streaminghelfer. Nicht jeder Endpunkt sendet `[DONE]`.

Die SDK-Helfer übernehmen den Streamtransport:

* TypeScript: `streamResponses()`, `streamChat()`, `streamMessages()`.
* Python: `stream_responses()`, `stream_chat()`, `stream_message()`.
* Vercel AI SDK: `streamText()` mit `@phaseo/ai-sdk-provider`.

Siehe die [TypeScript-Anleitung](../sdk-reference/typescript/usage.mdx) oder [Python-Anleitung](../sdk-reference/python/usage.mdx) zur Clienteinrichtung.

## Tool-Aufrufe streamen

Das Gateway akzeptiert Streaming mit Tools; die Unterstützung hängt vom Modell und Anbieter ab. Sammle Argumentfragmente bis zum vollständigen Tool-Aufruf und parse, validiere und autorisiere sie vor der Ausführung. Führe niemals unvollständige Argumente aus.

Nutze [Tool-Aufrufmuster](./tool-calling-patterns.mdx) für Fortsetzungsanfragen und [Toolsicherheit](./tool-calling-safety.mdx) für Validierung und Freigabe.

## Abbrechen und wiederherstellen

Übergib dem serverseitigen HTTP-Client ein `AbortSignal` und brich ab, wenn der Nutzer stoppt oder die Verbindung trennt. Setze eine passende Frist. Ein Abbruch garantiert weder einen sofortigen Anbieterstop noch kostenlose generierte Ausgaben.

Zeige Teiltexte schrittweise an, aber markiere eine Antwort erst nach dem erfolgreichen Abschlussereignis als vollständig. Eine geschlossene Verbindung allein belegt keinen Abschluss.

Wenn ein Stream nach Ausgabebeginn fehlschlägt:

1. Markiere die Teilantwort als unterbrochen.
2. Speichere Anfrage- oder Generierungs-ID, Endpunkt und Modell in deinen Logs.
3. Biete einen ausdrücklichen Wiederholungsversuch an. Eine neue Anfrage kann andere Ausgaben und zusätzliche Kosten erzeugen.
4. Führe ausgeführte Tools nicht erneut aus und hänge Wiederholungsantworten nicht automatisch an die Teilausgabe an.

Begrenze Wiederholungsversuche bei Fehlern vor Ausgabebeginn und beachte [Rate-Limit-Header](../api-reference/limits.mdx). Muss deine Anwendung die gesamte Ausgabe vor dem Anzeigen validieren, nutze eine Anfrage ohne Streaming oder puffere das Ergebnis serverseitig.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.