Skip to content

Check Manuscript Consistency

POST
/api/writing/outline/check-consistency/manuscript

Run the contradiction engine across every scene in the active project.

Returns 409 analysis_pack_required when the Deep Analysis Pack is not installed.

ConsistencyCheckRequest

Body for POST /check-consistency/* routes.

scope_kind is always redundant with the route itself but is echoed back in applied_parameters for tracing. Callers MUST NOT send a mismatched scope_kind; the server validates per-route.

object
strictness
Strictness
string
default: medium
Allowed values: off low medium high
queries
Any of:
Array<string>
Allowed values: pov_violation knowledge_violation entity_presence_declared_missing entity_presence_prose_undeclared dead_character_appearance timeline_ordering_violation
maxOutput
Any of:
integer
concurrency
Any of:
integer

Successful Response

ConsistencyCheckResponse

Terminal response for a completed consistency scan.

Streamed endpoints (chapter + manuscript) emit progress chunks plus this payload as the final SSE event.

object
scopeKind
required
Scopekind
string
Allowed values: scene chapter manuscript
scopeRef
required
Scoperef
string
findings
required
Findings
Array<object>
ConsistencyFinding

A single contradiction finding surfaced to the UI.

Frontend-facing view of the service-layer ContradictionFinding dataclass. Serialized as camelCase via the base model aliases.

object
id
required
Id
string
queryId
required
Queryid
string
Allowed values: pov_violation knowledge_violation entity_presence_declared_missing entity_presence_prose_undeclared dead_character_appearance timeline_ordering_violation
severity
required
Severity
string
Allowed values: error warning info
sceneId
required
Sceneid
string
message
required
Message
string
locationStart
Any of:
integer
locationEnd
Any of:
integer
citedEntityIds
Citedentityids
Array<string>
citedSceneIds
Citedsceneids
Array<string>
suggestion
Any of:
string
metadata
Metadata
object
key
additional properties
string
sourceHandler
Sourcehandler
string
default: divinity/scene-contradictions
findingsTruncated
required
Findingstruncated
boolean
coverage
required
MetadataCoverageSummary

Scan-wide metadata coverage stats — separate from findings.

The UI renders this as “Metadata coverage: N%”, not as findings rows. A scene counts as “fully covered” when every enabled query could run on it (no skips).

object
totalScenes
required
Totalscenes
integer
scenesFullyCovered
required
Scenesfullycovered
integer
coveragePct
required
Coveragepct
number
perQuery
Perquery
Array<object>
MetadataCoveragePerQuery

Per-query metadata coverage counts within a scan scope.

object
queryId
required
Queryid
string
Allowed values: pov_violation knowledge_violation entity_presence_declared_missing entity_presence_prose_undeclared dead_character_appearance timeline_ordering_violation
runnableSceneCount
required
Runnablescenecount
integer
skippedSceneCount
required
Skippedscenecount
integer
skipReasons
Skipreasons
object
key
additional properties
integer
cache
required
ConsistencyCacheStats

Cache-hit metadata surfaced in scan responses for debuggability.

object
hits
required
Hits
integer
misses
required
Misses
integer
queriesRun
required
Queriesrun
Array<string>
Allowed values: pov_violation knowledge_violation entity_presence_declared_missing entity_presence_prose_undeclared dead_character_appearance timeline_ordering_violation
strictnessApplied
required
Strictnessapplied
string
Allowed values: off low medium high
scenesScanned
required
Scenesscanned
integer
scenesErrored
Sceneserrored
Array<string>

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