Poll a v2 conversation for its status and the message tail since a seq
The HITL-04 §6.6 poll primitive — net-new, message+seq shaped.
Distinct from GET /{id}/turns (cursor-paginated over turns): this is
the one round-trip a caller loops on while a turn is parked, returning the
conversation’s current session_status AND every message with
seq > since_seq. The SAME primitive serves approval-resume polling
(awaiting_approval → active) and handoff operator-relay polling
(waiting_for_human → closed); the uniform waker generates+persists
the resumed/operator message and the caller’s next poll picks it up.
The caller watermarks on the returned next_seq (the max seq of the
tail, or the request since_seq when the tail is empty so an idle poll
never rewinds). Borrows the read-router message-row + worst-of-N delivery-
status plumbing; ordered by seq ascending. Org-scoped: cross-org /
missing id → 404 before any read.
Authorizations
Path Parameters
Query Parameters
Watermark: return only messages with seq > since_seq (exclusive). Message seqs are 0-based, so seed with the default -1 to fetch from the very start (includes seq 0), then pass the response's next_seq back.
x >= -1[ENG-670 T3] Attach each message's evidence package (the KB sources shown to the model). Off by default — the poll DEFERS the large citations column; opt in to load and project it.
Serialization view when include_evidence=true. Poll default is 'full' (staff/audit), matching the transcript page; 'display' is the end-user source-card subset.
display, full Response
Successful Response
The poll primitive's response (HITL-04 §6.6).
Backs GET /v2/conversations/{id}/messages?since_seq=N — one round-trip
that returns the conversation's current session_status and every
message with seq > since_seq (the new tail). The caller advances its
watermark to next_seq and re-polls. The SAME primitive serves both
approval-resume polling (awaiting_approval → active) and handoff
operator-relay polling (waiting_for_human → closed).
next_seq is the high-water mark to pass back as since_seq on the
next poll: the max seq of the returned messages, or the request's
own since_seq when the tail is empty (so an idle poll doesn't rewind
the watermark). The caller watermarks on this exactly as it would on
:attr:TurnResponse.message_seqs after a synchronous turn.