👋 Next.js Conf 2024 - Watch our Keynote Session "Live by Default"

Live Content API reference

The sync tag invalidation API underlying the Live Content API

The Live Content API is a more flexible and performant alternative to the Listen API.

This is a live API adhering to the Server Sent Events standard. It streams sync tags as they become invalid.

GET /<version>/data/live/events/<dataset>

The API does not require authentication. Since tags are opaque, we don’t consider these to pose any risk of information leakage.

Headers

  • last-event-id: An optional start event ID (”position”).
    • If provided, it must be a previously returned event ID. The stream will continue with the next event following this position. A client can choose to pick any ID it has seen, but the intent is to allow a client to continue after disconnecting.
    • If not given, the stream starts at the end, i.e. only new tags will be returned.
    • If not usable (e.g. invalid encoding, or we have truncated the underlying stream so it no longer refers to a valid position, or it is not within a valid range), the first message emitted will be a restart message, and the stream will start at the end.
    • We don’t guarantee the “lifetime” of a position. A client should always be prepared to receive a restart message. A client should assume a restart message invalidates earlier positions.

Response

  • 200 OK: If a streaming operation is started successfully.
  • 406 Unacceptable: If the Accept header does not include text/event-stream.
  • All errors are represented as other standard status code unless they occur after the stream have been started, in which case they are represented as error events.

Response headers

  • content-type will be text/event-stream.

Response body

  • The response body is a Server-Sent Events stream
  • The API may choose to disconnect at any time. It is the client’s responsibility to reconnect and continue from the last position.

SSE Messages

Welcome message

event: welcome

Restart

event: restart

Tags

In this message, the id field is the position.

id: MXxhYVlRejdGZUpPMA
data: {"tags": ["tag1","tag2"]}

Error

event: error
data: {"status": 500, "message": "Internal Server Error"}

Keepalive

An empty comment, as with the listener API.

: 

Was this article helpful?