Vision
For instructions on how to authenticate to use this endpoint, see API overview.
Endpoints
POST | |
GET | |
GET | |
POST | |
POST | |
POST | |
GET | |
POST | |
GET |
Create vision scanners scouts
Create a scout that watches this scanner, recorded as belonging to it.
Required API key scopes
replay_scanner:writesession_recording:readllm_skill:writesignal_scout:writePath parameters
- scanner_idstring
Request parameters
- display_namestring
- namestring
- descriptionstring
- bodystring
- config
- variant_analysisbooleanDefault:
false
Response
Example request
POST /api /projects /:project_id /vision /scanners /:scanner_id /scoutsExample response
Status 200 The scout already existed; the supplied config was applied.
Status 201 The scout and its config were created.
Status 403 The caller may not edit this scanner.
List all vision scanners variants
Per-variant readout for an experiment scanner: observation counts, distinct people, median session length, sampling rate and latest observations per variant, read live, plus the digests and differences of the scanner's variant analysis scout.
Required API key scopes
replay_scanner:readsession_recording:readPath parameters
- scanner_idstring
Response
Example request
GET /api /projects /:project_id /vision /scanners /:scanner_id /variantsExample response
Status 200
Status 400 The scanner is not an experiment scanner.
Retrieve vision scanners creators
Distinct creators across the team's scanners — feeds the Created by filter dropdown.
Required API key scopes
replay_scanner:readResponse
Example request
GET /api /projects /:project_id /vision /scanners /creatorsExample response
Status 200
Create vision scanners draft
Draft a full scanner configuration from a natural-language goal and a monthly credit budget.
Required API key scopes
replay_scanner:writesession_recording:readRequest parameters
- goalstring
- monthly_credit_budgetinteger
- free_onlybooleanDefault:
false - experiment_idinteger
Response
Example request
POST /api /projects /:project_id /vision /scanners /draftExample response
Status 200
Status 400 The goal is missing or AI consent hasn't been granted.
Status 403 The caller lacks the required access, or the feature isn't enabled.
Status 503 The draft couldn't be generated.
Create vision scanners estimate
Estimate the observation volume a proposed scanner would generate, for the pre-save cost preview.
Required API key scopes
replay_scanner:readsession_recording:readRequest parameters
- query
- sampling_ratenumberDefault:
1 - sampling_modeDefault:
comprehensive - scanner_idstring | null
- modelDefault:
gemini-3-flash-preview - experiment_targeting
- experiment
Response
Example request
POST /api /projects /:project_id /vision /scanners /estimateExample response
Status 200
Create vision scanners inline scan
Scan named sessions against a prompt without saving a scanner first, for one-off questions.
The config resolves to a scanner minted on first use, so asking the same question twice reuses the observations it already has, while a different question about the same session gets its own.
With scanner_type set to summarizer, this is how you get PostHog's own AI summary for a
recording ID. It resolves to the Summarize button's own scanner only when the prompt and
scanner_config match what the button sends, since the config is what the key fingerprints.
Required API key scopes
replay_scanner:writesession_recording:readRequest parameters
- built_in
- promptstring
- scanner_type
- scanner_config
- modelDefault:
gemini-3-flash-preview - session_idsarray
Response
Example request
POST /api /projects /:project_id /vision /scanners /inline_scanExample response
Status 202
Retrieve vision scanners stats
Team-wide scanner counts — independent of list filters, so the overview stays stable.
Required API key scopes
replay_scanner:readResponse
Example request
GET /api /projects /:project_id /vision /scanners /statsExample response
Status 200
Create vision scanners suggest tags
Suggest classifier tags grounded in the scanner's own observations and the org's product data.
Required API key scopes
replay_scanner:readsession_recording:readRequest parameters
- promptstring
- tagsarray
- multi_labelbooleanDefault:
true - allow_freeform_tagsbooleanDefault:
false - scanner_idstring | null
Response
Example request
POST /api /projects /:project_id /vision /scanners /suggest_tagsExample response
Status 200
Status 503 Tag suggestions couldn't be generated.
Retrieve vision scanners watch feed
Succeeded observations in the window worth watching, ranked — feeds the What to watch tab.
Required API key scopes
replay_scanner:readsession_recording:readQuery parameters
- created_bystring
- date_fromstringDefault:
-7d - date_tostring
- limitintegerDefault:
20 - scanner_idsstring
- scanner_typestringOne of:
"monitor""classifier""scorer""summarizer""experiment" - searchstring
- tagsstring
Response
Example request
GET /api /projects /:project_id /vision /scanners /watch_feed










