Skip to content

Analyze Content Style

POST
/api/creative/hawken/style/analyze-content

Run the DE scene-scan against a scene and return the composed report.

Contract change (M5): the content form field now carries the outline node ID (scene_id), not raw prose. The old LLM path passed prose in; the deterministic path loads the scene’s prose internally from its linked .docx document. expected_style is retained for backwards compatibility but ignored — the scan reports whichever register actually appears in the prose, not a target.

Body_analyze_content_style_api_creative_hawken_style_analyze_content_post
object
content
required
Content

Scene id (not raw content)

string
expected_style
required
Expected Style

Expected writing style (retained for API compat)

string

Successful Response

ContentStyleAnalysisResponse

Legacy name alias for :class:HawkenSceneScanResponse.

Kept because the M5 migration rewired /hawken/style/analyze-content in place and the historical import surface should not break. New callers should use :class:HawkenSceneScanResponse.

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