Skip to main content

Read contest submission events

GET 

/contests/:id/events

Returns metadata-only events ordered by occurred_at, oldest first, with event UUID as the tie-breaker for equal timestamps. Each event describes a submission entering the contest, a change to its visible log fields, or its withdrawal. Changes outside this contest do not appear. Recording starts when the feature is enabled; existing logs do not receive fabricated historical submission events.

Omit cursor or use 0 to read from the beginning. Use now once to obtain an empty page with the latest visible event ID, or 0 for an empty feed. Otherwise pass a retained event ID to read strictly after that event. Event UUIDs are stable deduplication keys. The server resolves a cursor ID to its stored (occurred_at, id) pair; consumers use response order. occurred_at is the source operation's timestamp, stored once at creation. Occurrence order is not commit order: a transaction that commits late can appear before an already-consumed cursor. Forward polling alone does not guarantee delivery of those late events.

A nonempty page's next_cursor is its final event ID. An ordinary empty page preserves the supplied event ID, or 0 when starting at the beginning. Save the cursor only after processing the page. When has_more is false, poll later using that same cursor. Retrying can repeat events. Events are retained for the lifetime of the contest.

Uses the same public read access as the contest log list. A cursor never grants access to another contest or tenant. Fetch current log contents separately through this contest's log endpoint; event records contain no log contents or historical snapshots.

Request​

Responses​

Event page, including an empty page with a reusable cursor.

Response Headers
    Cache-Control