EU GPT logo
EU GPT

Public preview — Deze API is in public preview. Endpoints, schemas en limieten kunnen wijzigen vóór general availability.

API

Streaming events

Elk SSE-event-type dat /v1/responses uitstoot, met payload-shapes en ordering guarantees.

Streaming responses zijn Server-Sent Events. Elk event heeft een type-veld dat de shape identificeert en een sequence_number dat monotonisch oploopt binnen de response.

Deze pagina somt elk event-type op dat je kunt ontvangen van /v1/responses.

Event-envelope#

event: message
data: { "type": "<event-name>", "sequence_number": <int>, … }

De event:-regel is altijd message. Onderscheid vindt plaats via het JSON type-veld — dezelfde conventie als de OpenAI Responses API.

Lifecycle events#

response.created#

Het eerste event van elke response. Draagt de response-metadata.

{
  "type": "response.created",
  "sequence_number": 0,
  "response": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "object": "response",
    "created_at": 1716387200000,
    "model": "gpt-oss-120b",
    "status": "in_progress"
  }
}

response.completed#

Het terminal success-event. Draagt de uiteindelijke geconcateneerde text en eventuele tool-call-samenvatting.

{
  "type": "response.completed",
  "sequence_number": 42,
  "response": {
    "id": "550e8400-…",
    "status": "completed",
    "model": "gpt-oss-120b",
    "output_text": "Hello, world.",
    "tool_calls": [ /* optional */ ]
  }
}

Na dit event sluit de stream.

error#

Terminal failure-event. Kan optreden in plaats van response.completed.

{
  "type": "error",
  "code": "internal_error",
  "message": "Unexpected upstream failure"
}

Zie Fouten voor de volledige code-lijst.

Text events#

response.content_part.added#

Een text-content-part begint. Draagt de output-index en content-index zodat multi-part-responses opnieuw kunnen worden samengesteld.

{
  "type": "response.content_part.added",
  "sequence_number": 3,
  "output_index": 0,
  "content_index": 0,
  "part": { "type": "output_text", "text": "" }
}

response.output_text.delta#

Incrementele text-chunk. Append delta aan wat je hebt gebufferd voor (output_index, content_index).

{
  "type": "response.output_text.delta",
  "sequence_number": 4,
  "output_index": 0,
  "content_index": 0,
  "delta": "Hello"
}

Je ontvangt er veel per response — typisch één per token of kleine token-groep.

response.output_text.done#

Markeert het text-part als compleet met de volledige geassembleerde text. Bruikbaar als sanity check, of voor consumenten die deltas negeren en alleen om de uiteindelijke string geven.

{
  "type": "response.output_text.done",
  "sequence_number": 41,
  "output_index": 0,
  "content_index": 0,
  "text": "Hello, world."
}

Tool-call-events#

response.output_item.added#

Een nieuwe output-item start. Voor tool calls signaleert dit “het model heeft besloten deze tool aan te roepen”. Voor text-berichten signaleert dit het begin van een assistant-message.

{
  "type": "response.output_item.added",
  "sequence_number": 5,
  "output_index": 1,
  "item": {
    "type": "function_call",
    "name": "web_search",
    "call_id": "call_abc123",
    "arguments": "{\"query\":\"\"}"
  }
}

response.output_item.done#

De item is compleet. Voor tool calls draagt dit de tool-output en een status.

{
  "type": "response.output_item.done",
  "sequence_number": 12,
  "output_index": 1,
  "item": {
    "type": "function_call",
    "name": "web_search",
    "call_id": "call_abc123",
    "arguments": "{\"query\":\"\"}",
    "output": "[{\"title\":\"\",\"url\":\"\"}, …]",
    "status": "completed"
  }
}

status is completed of failed. Als failed, bevat output een string die de failure beschrijft.

Routing-events#

response.routing.completed#

Uitgestoten wanneer model: "auto" resolveert naar een concreet model. Bevat het gekozen model en de routing-decision-metadata. Overgeslagen wanneer model is gepinned.

{
  "type": "response.routing.completed",
  "sequence_number": 1,
  "model_id": "gpt-oss-120b",
  "category": "reasoning",
  "source": "router",
  "reasoning": "Input length > 500 tokens"
}

Post-processing-events#

response.rewrite.in_progress#

Geeft aan dat het platform een post-generation-rewrite-pass toepast (bv. taal-alignment, spelling). De uiteindelijke output_text.done reflecteert de herschreven text.

{ "type": "response.rewrite.in_progress", "sequence_number": 40 }

Events die je in de toekomst kunt zien#

Het schema is ontworpen om additief te zijn. Clients moeten onbekende event-types negeren in plaats van te falen. We kunnen nieuwe events toevoegen (bv. citations, partial usage reporting) zonder de API-versie te bumpen, zolang ze de betekenis van bestaande events niet veranderen.

Ordering guarantees#

  • response.created is altijd eerst.
  • response.completed of error is altijd laatste; een van hen is gegarandeerd.
  • sequence_number neemt toe met precies één per event binnen een response. Geen skips, geen duplicates.
  • Binnen één output-item gaat output_item.added vooraf aan alle deltas die voorafgaan aan output_item.done.
  • Over verschillende output-items (parallelle tool calls) kunnen events interleaven per sequence_number. Gebruik output_index om te disambigueren.