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.createdis altijd eerst.response.completedoferroris altijd laatste; een van hen is gegarandeerd.sequence_numberneemt toe met precies één per event binnen een response. Geen skips, geen duplicates.- Binnen één output-item gaat
output_item.addedvooraf aan alle deltas die voorafgaan aanoutput_item.done. - Over verschillende output-items (parallelle tool calls) kunnen events interleaven per
sequence_number. Gebruikoutput_indexom te disambigueren.