Vision
For instructions on how to authenticate to use this endpoint, see API overview.
Endpoints
GET | |
POST | |
GET | |
POST | |
POST | |
POST | |
GET | |
GET | |
POST | |
POST | |
DELETE | |
POST | |
DELETE | |
POST | |
GET | |
GET | |
POST | |
GET | |
GET | |
GET |
List all vision scanners backfills
Historical backfills of a scanner over a closed time window (nested under a scanner).
Required API key scopes
replay_scanner:readsession_recording:readPath parameters
- scanner_idstring
Query parameters
- limitinteger
- offsetinteger
Response
Example request
GET /api /projects /:project_id /vision /scanners /:scanner_id /backfillsExample response
Status 200
Create vision scanners backfills
Create a backfill: freeze the scanner config, enumerate the exact candidate set, start the tick schedule.
The enumeration reruns here rather than trusting the client-confirmed estimate: the count is billing-relevant, so the authoritative value is computed server-side at creation time. New settled sessions between estimate and confirm can nudge total_count slightly.
Required API key scopes
replay_scanner:writesession_recording:readPath parameters
- scanner_idstring
Request parameters
- window_startstring
- window_endstring
- max_total_creditsinteger
Response
Example request
POST /api /projects /:project_id /vision /scanners /:scanner_id /backfillsExample response
Status 201
Retrieve vision scanners backfills
Historical backfills of a scanner over a closed time window (nested under a scanner).
Required API key scopes
replay_scanner:readsession_recording:readPath parameters
- idstring
- scanner_idstring
Response
Example request
GET /api /projects /:project_id /vision /scanners /:scanner_id /backfills /:idExample response
Status 200
Create vision scanners backfills cancel
Stop an active backfill; already-dispatched observations finish, nothing new dispatches.
Required API key scopes
replay_scanner:writesession_recording:readPath parameters
- idstring
- scanner_idstring
Request parameters
Response
Example request
POST /api /projects /:project_id /vision /scanners /:scanner_id /backfills /:id /cancelExample response
Status 200
Create vision scanners backfills resume
Restart a backfill that paused when the monthly quota ran out.
Required API key scopes
replay_scanner:writesession_recording:readPath parameters
- idstring
- scanner_idstring
Request parameters
Response
Example request
POST /api /projects /:project_id /vision /scanners /:scanner_id /backfills /:id /resumeExample response
Status 200
Create vision scanners backfills estimate
Exactly enumerate what a backfill over the given window would dispatch and cost.
Required API key scopes
replay_scanner:writesession_recording:readPath parameters
- scanner_idstring
Request parameters
- window_startstring
- window_endstring
Response
Example request
POST /api /projects /:project_id /vision /scanners /:scanner_id /backfills /estimateExample response
Status 200
List all vision scanners observations
Read-only access to observations produced by a scanner.
Required API key scopes
replay_scanner:readsession_recording:readPath parameters
- scanner_idstring
Query parameters
- backfill_idstring
- date_fromstring
- date_tostring
- labeledboolean
- limitinteger
- max_scorenumber
- min_scorenumber
- offsetinteger
- order_bystringOne of:
"-completed_at""-created_at""-label""-recording_subject_email""-result_confidence""-result_score""-result_verdict""-scanner_version""-started_at""-status""completed_at""created_at""label""recording_subject_email""result_confidence""result_score""result_verdict""scanner_version""started_at""status" - recording_subjectstring
- session_idstring
- statusstring
- tagsstring
- triggered_bystring
- variantstring
- verdictstring
Response
Example request
GET /api /projects /:project_id /vision /scanners /:scanner_id /observationsExample response
Status 200
Retrieve vision scanners observations
Retrieve one observation. Any list filters passed along (status, tags, order_by, …) scope the previous_observation_id/next_observation_id navigation to the matching, identically-ordered set — so prev/next from a filtered table stays within that filtered list.
Required API key scopes
replay_scanner:readsession_recording:readPath parameters
- idstring
- scanner_idstring
Query parameters
- backfill_idstring
- date_fromstring
- date_tostring
- labeledstring
- max_scorenumber
- min_scorenumber
- order_bystringOne of:
"-completed_at""-created_at""-label""-recording_subject_email""-result_confidence""-result_score""-result_verdict""-scanner_version""-started_at""-status""completed_at""created_at""label""recording_subject_email""result_confidence""result_score""result_verdict""scanner_version""started_at""status" - recording_subjectstring
- session_idstring
- statusstring
- tagsstring
- triggered_bystring
- variantstring
- verdictstring
Response
Example request
GET /api /projects /:project_id /vision /scanners /:scanner_id /observations /:idExample response
Status 200
Create vision scanners observations create task
Create a PostHog Task from this observation's finding so it can be triaged and fixed. Title and description are derived from the scanner and its result. Record-only: this does not start the coding agent. Idempotent per observation: once a task exists, repeat calls return its id with a 200 instead of creating a duplicate.
Required API key scopes
replay_scanner:writesession_recording:readtask:writePath parameters
- idstring
- scanner_idstring
Response
Example request
POST /api /projects /:project_id /vision /scanners /:scanner_id /observations /:id /create_taskExample response
Status 200
Status 201
Create vision scanners observations feed dismissal
Mark this observation not useful for the calling user, with an optional reason. What to watch stops showing it to that user. Sending it again replaces the reason.
Required API key scopes
replay_scanner:readsession_recording:readPath parameters
- idstring
- scanner_idstring
Request parameters
- reason
Example request
POST /api /projects /:project_id /vision /scanners /:scanner_id /observations /:id /feed_dismissalExample response
Status 204 No response body
Delete vision scanners observations feed dismissal
Undo the calling user's not-useful mark, so What to watch can show the observation again.
Required API key scopes
replay_scanner:readsession_recording:readPath parameters
- idstring
- scanner_idstring
Example request
DELETE /api /projects /:project_id /vision /scanners /:scanner_id /observations /:id /feed_dismissalExample response
Status 204 No response body
Create vision scanners observations label
Set or update the observation's shared label: whether the scanner scored the session correctly, plus optional feedback on what it got wrong. One label per observation, shared across the team; these labels feed prompt improvement. Requires editor access to the scanner.
Required API key scopes
replay_scanner:writesession_recording:readPath parameters
- idstring
- scanner_idstring
Request parameters
- is_correctboolean
- feedbackstringDefault:
Response
Example request
POST /api /projects /:project_id /vision /scanners /:scanner_id /observations /:id /labelExample response
Status 200
Delete vision scanners observations label
Remove the observation's shared label. Requires editor access to the scanner.
Required API key scopes
replay_scanner:writesession_recording:readPath parameters
- idstring
- scanner_idstring
Example request
DELETE /api /projects /:project_id /vision /scanners /:scanner_id /observations /:id /labelExample response
Status 204 No response body
Create vision scanners observations retry
Delete a failed or ineligible observation and re-run its scanner on the same recording. Returns 202 with the workflow handle.
Required API key scopes
replay_scanner:writesession_recording:readPath parameters
- idstring
- scanner_idstring
Response
Example request
POST /api /projects /:project_id /vision /scanners /:scanner_id /observations /:id /retryExample response
Status 202
Status 409 The previous run is still finishing.
Status 503 The retry couldn't be started.
List all vision scanners observations signal reports
The inbox reports this observation's emitted signals were grouped into, newest first.
Required API key scopes
replay_scanner:readsession_recording:readtask:readPath parameters
- idstring
- scanner_idstring
Query parameters
- backfill_idstring
- date_fromstring
- date_tostring
- labeledboolean
- max_scorenumber
- min_scorenumber
- order_bystring
- recording_subjectstring
- session_idstring
- statusstring
- tagsstring
- triggered_bystring
- variantstring
- verdictstring
Example request
GET /api /projects /:project_id /vision /scanners /:scanner_id /observations /:id /signal_reportsExample response
Status 200
Retrieve vision scanners observations thumbnail
Redirect to the frame that illustrates this observation, so a caller with only the observation id can show it.
Required API key scopes
replay_scanner:readsession_recording:readPath parameters
- idstring
- scanner_idstring
Query parameters
- chapterinteger
Example request
GET /api /projects /:project_id /vision /scanners /:scanner_id /observations /:id /thumbnailExample response
Status 302 Redirect to the image.
Status 404 The observation has no such frame, or its render has not landed yet.
Create vision scanners observations viewed
Record that the calling user opened this observation. Idempotent.
Required API key scopes
replay_scanner:readsession_recording:readPath parameters
- idstring
- scanner_idstring
Example request
POST /api /projects /:project_id /vision /scanners /:scanner_id /observations /:id /viewedExample response
Status 204 No response body
Retrieve vision scanners observations stats
Aggregate counts and per-scanner-type distributions over the filtered observation set. Same filters as the list endpoint apply.
Required API key scopes
replay_scanner:readsession_recording:readPath parameters
- scanner_idstring
Query parameters
- backfill_idstring
- date_fromstring
- date_tostring
- labeledstring
- max_scorenumber
- min_scorenumber
- recent_daysinteger
- recording_subjectstring
- session_idstring
- statusstring
- tagsstring
- triggered_bystring
- variantstring
- verdictstring
Response
Example request
GET /api /projects /:project_id /vision /scanners /:scanner_id /observations /statsExample response
Status 200
List all vision scanners scout reports
Reports filed by this scanner's scouts, newest first.
Required API key scopes
replay_scanner:readsession_recording:readtask:readPath parameters
- scanner_idstring
Example request
GET /api /projects /:project_id /vision /scanners /:scanner_id /scout_reportsExample response
Status 200
Retrieve vision scanners scout reports
One report filed by this scanner's scouts.
Required API key scopes
replay_scanner:readsession_recording:readtask:readPath parameters
- idstring
- scanner_idstring
Response
Example request
GET /api /projects /:project_id /vision /scanners /:scanner_id /scout_reports /:id










