SSE metadata access

View as Markdown

When your API uses server-sent events, iterating the generated SDK’s streaming response yields parsed data objects. To also read the SSE protocol fields — event ID, event type, and retry interval — TypeScript and Go SDKs expose metadata-aware iteration, typically used to resume a stream by event ID.

Metadata-aware iteration

Each event exposes the parsed data alongside its protocol fields. Default iteration is unchanged, so opting in is fully backward compatible.

1const stream = await client.plants.stream({ query: "fern" });
2
3for await (const event of stream.withMetadata()) {
4 event.data // parsed response object (same type as default iteration)
5 event.id // SSE event ID (string | undefined)
6 event.event // SSE event type (string | undefined)
7 event.retry // SSE retry interval in ms (number | undefined)
8}

withMetadata() requires TypeScript SDK generator version 3.73.0+, and RecvEvent() requires Go SDK generator version 1.32.0+.

Stream resumption

The event ID is useful for resuming a stream via the standard Last-Event-ID header: store the last received ID as you iterate, then pass it back to the server on reconnection. This requires server-side support for the Last-Event-ID header.