Skip to content

Scan Scene

POST
/api/creative/hawken/style/scene-scan

New M5 primary route for Hawken scene scans.

Same backing as /analyze-content but with a clean JSON request body and the richer native HawkenSceneScanResponse shape. New frontend code should target this route; /analyze-content remains for legacy form-based callers.

HawkenSceneScanRequest

Request body for POST /hawken/style/scene-scan (M5).

object
sceneId
required
Sceneid

Outline node ID to scan

string
subReports
Any of:
Array<string>
strictness
Strictness
string
default: medium

Successful Response

HawkenSceneScanResponse

Unified M5 Hawken scene-scan response.

Extends the legacy ContentStyleAnalysisResponse shape with richer deterministic measurements. The former LLM-subjective fields (style_consistency, detected_style, etc.) are retained and filled via deterministic calculation so existing frontend renders keep working.

object
styleConsistency
required
Styleconsistency

Deterministic style-consistency proxy (0-100)

number
detectedStyle
required
Detectedstyle

Dominant register mapped to a style label

string
confidence
required
Confidence

Classifier confidence (0-100)

number
tone
required
Tone

Detected tone from sentiment + register

string
audienceMatch
required
Audiencematch

Suggested audience from register

string
creativityScore
required
Creativityscore

Heuristic creativity score (0-100)

number
engagementLevel
required
Engagementlevel

Heuristic engagement score (0-100)

number
technicalQuality
required
Technicalquality

Heuristic mechanics score (0-100)

number
techniquesUsed
Techniquesused
Array<string>
suggestions
Suggestions
Array<string>
sceneId
required
Sceneid

Outline node id that was scanned

string
findings
Findings
Array<object>
HawkenFindingItem

One finding produced by a sub-scanner during a scene scan (M5).

object
ruleId
required
Ruleid

Source-prefixed rule identifier

string
severity
required
Severity

Error | warning | info

string
source
required
Source

Sub-report id that produced this finding

string
message
required
Message

Human-readable diagnosis

string
scopeRef
required
Scoperef

Scope the finding is about

string
locationStart
Any of:
integer
locationEnd
Any of:
integer
citations
Citations
Array<string>
suggestion
Any of:
string
metadata
Metadata
object
key
additional properties
string
findingsTruncated
Findingstruncated
boolean
sentiment
Any of:
SentimentReportResponse

Sentiment (VADER) analysis sub-report for a scene (M5).

object
posDensity
required
Posdensity

Positive-token density

number
negDensity
required
Negdensity

Negative-token density

number
neutralDensity
required
Neutraldensity

Neutral-token density

number
compoundScore
required
Compoundscore

Overall compound [-1, +1]

number
sentenceCurve
required
Sentencecurve

Per-sentence compound scores in reading order

Array<number>
scoredTokenCount
required
Scoredtokencount

Tokens that matched the lexicon

integer
register
Any of:
RegisterReportResponse

Register (formal/casual/archaic) sub-report for a scene (M5).

object
formalDensity
required
Formaldensity

Formal wordlist density

number
casualDensity
required
Casualdensity

Casual wordlist density

number
archaicDensity
required
Archaicdensity

Archaic wordlist density

number
dominantRegister
required
Dominantregister

Formal | casual | archaic | mixed | none

string
totalWordCount
Totalwordcount
integer
0
formalMatches
Formalmatches
integer
0
casualMatches
Casualmatches
integer
0
archaicMatches
Archaicmatches
integer
0
sceneMetrics
Any of:
SceneMetricsReportResponse

Quantitative scene-metric sub-report (M5).

object
wordCount
required
Wordcount

Total words in scene

integer
sentenceCount
required
Sentencecount

Total sentences

integer
avgSentenceLength
required
Avgsentencelength

Words / sentence

number
fleschKincaidGrade
required
Fleschkincaidgrade

Flesch-Kincaid grade level

number
adverbDensity
required
Adverbdensity

Adverb-count / word-count

number
filterWordDensity
required
Filterworddensity

ProseGuard filter-word count / word-count

number
syllableCount
Syllablecount
integer
0
subReports
Subreports
Array<object>
HawkenSubReportSummary

Per-sub-report status + count for the M5 scene scan.

object
name
required
Name

Sub-report identifier

string
status
required
Status

Complete | errored | skipped

string
durationMs
required
Durationms

Wall-clock duration

number
findingsCount
Findingscount
integer
0
error
Any of:
string
reason
Any of:
string
strictnessApplied
Strictnessapplied
string
default: medium
durationMs
Durationms
number
0

Validation Error

HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object