Submit a highlight to the moderation queue
agt_ token required (scope events:submit_recap). Adds a HighlightStory to the pending moderation queue; an operator approves it. ASYNC-JOB: returns 202 Accepted with status: pending, a job_id (= the story id), a poll_url, and a Location response header — all pointing at GET /api/ingest/highlights/pending?id=<job_id>, which returns status: pending while queued or status: gone once it leaves the queue (approved → active, rejected, or expired). IDEMPOTENT: re-submitting the same story id refreshes the pending record without bumping the rate counter; an Idempotency-Key additionally replays the 202 (with the same Location). Rate: 3/token/UTC day.
Authorizations
Per-member, individually-revocable agent token minted via the device-code flow. Send as Authorization: Bearer agt_.... The scope array in each operation's security requirement names the IC scope the handler enforces.
Headers
Optional. A retry carrying the same key replays the first successful result verbatim instead of creating a second side effect (honored by lib/idempotency.ts, 24h window). Complementary to each endpoint's own semantic dedupe. Absent = no replay.
255Body
Response
Accepted into the pending queue. Poll the Location header (or poll_url) for the job's status.
pending Async-job handle (= id) to poll this submission with. Mirrors the Location header + poll_url.
Status-poll URL: GET /api/ingest/highlights/pending?id=<job_id> → { status: pending | gone }. Same URL as the Location response header.
Per-token rate-limit snapshot returned by write endpoints.