Get the reviewer's decision context for a review (BYO review-agent plane)
GET /v1/reviews/{id}/decision-context
The reviewer’s read-only decision surface (D5; §9): the intent + current draft + the append-only thread + the two-circuit-breaker budget (hop_count vs max_hops, and the hard review_deadline). The reviewer is an AGENT granted review:act, authorized for THIS review ONLY via a matching ACTIVE review_link (per-inbox beats account-wide); review:act alone is necessary, not sufficient. force_to_human is true when EITHER breaker has tripped; the reviewer’s next reject would be FORCED to the human regardless of intent (the human is the only terminal authority, D17). A cross-tenant id is 404 (no existence leak); a non-reviewer is 403. No mutation, no LLM.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Responses
Section titled “ Responses ”Ok
The reviewer’s read-only decision surface for a review (D5; §9): the intent + current draft + thread + the two-circuit-breaker budget. force_to_human is true when EITHER breaker has tripped (hop_count ≥ max_hops, or the hard review_deadline); the reviewer’s next reject would be FORCED to the human regardless of intent (the human is the only terminal authority, D17).
object
A review request (rr_…); the server-owned pre-send record of a message under the Review Loop. Carries intent, the current proposed draft, category, state machine fields, and (once sent) the sent body + diff.
object
Human-readable category name; absent when unavailable.
Pending reconsideration; does not assert that the composer is online.
Durable composer completion watermark independent of acknowledgement.
Highest available unresolved recheck event sequence.
Cause of pending reconsideration.
Console path to this draft. Sign in and claim the workspace if prompted before reviewing.
Captured sender name for this review; empty means bare address. Absent on legacy reviews.
object
Mail conversation ID for fetching reply or forward context; distinct from reviewer feedback.
Conversation snapshot used for this draft. Absent on legacy drafts whose composition context is unknown.
Newest message observed when composing this draft.
Message selectors in the conversation snapshot used for this draft; does not certify semantic comprehension.
Opaque parent message ID for replies; raw RFC5322 Message-ID for plain sends.
True once this review will never move again; sent, auto_sent, cancelled OR failed. It is the definitive per-review “am I done?” answer and the poll-side companion to the terminal review events; use it after a restart when your event cursor is gone. failed is included deliberately: nothing re-approves a failed review, so treating it as open means waiting forever.
Vendor-scrubbed delivery failure, present on a failed review.
How the message was released, once sent.
One immutable turn in a review’s append-only thread (turn_…).
object
object
object
Circuit breaker (a): reviewer hand-backs so far.
Circuit breaker (a): the ceiling; at hop_count ≥ max_hops the next action is forced to the human.
Circuit breaker (b): the hard per-review wall-clock deadline (created_at + review_deadline_s).
Breaker (b) tripped: now ≥ review_deadline.
Breaker (a) tripped: hop_count ≥ max_hops.
Either breaker tripped: a reject is overridden to a human escalation.
The tripped breaker (max_hops_reached | review_deadline_passed).
Missing or invalid credential.
The canonical error envelope. error is a stable machine code.
object
Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).
Example
forbiddenHuman-readable detail (never leaks internals).
Example
missing required scopeMachine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.
Consumed plus reserved units.
Requested additional units.
Next UTC usage-period boundary; pending reservations survive this boundary.
Authenticated but lacking the required scope, or out of quota.
The canonical error envelope. error is a stable machine code.
object
Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).
Example
forbiddenHuman-readable detail (never leaks internals).
Example
missing required scopeMachine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.
Consumed plus reserved units.
Requested additional units.
Next UTC usage-period boundary; pending reservations survive this boundary.
Resource not found.
The canonical error envelope. error is a stable machine code.
object
Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).
Example
forbiddenHuman-readable detail (never leaks internals).
Example
missing required scopeMachine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.
Consumed plus reserved units.
Requested additional units.
Next UTC usage-period boundary; pending reservations survive this boundary.