Skip to main content

Usage

const { data, error } = await vj.checkSpec({
  spec: { /* VidLang spec object */ },
  rules: {
    VL013: true,                        // enable
    VL011: { severity: "warning" },     // enable with override
    VL003: false,                       // explicitly disable (already off by default)
  },
});

Parameters

FieldTypeRequiredDescription
specobjectYesThe VidLang spec to validate
rulesRecord<string, boolean | { enabled?: boolean, severity?: string }>YesRules config. All off by default — enable at least one.

Rules

RuleNameUse for
VL001Temporal ContinuityAll formats
VL002Subject ConsistencyAll formats
VL003Camera PhysicsB-roll, cinematic
VL004Audio AlignmentTalking-head, dialogue
VL005Provider CompatibilityAll formats
VL006Description QualityB-roll, cinematic
VL009Expression ContinuityTalking-head
VL010Audio NormalizationB-roll, music
VL011Prosody ControlTalking-head, dialogue
VL012Anti-EmphasisTalking-head, dialogue
VL013Talking Head StillnessTalking-head only

Example configs

Talking-head format

const { data } = await vj.checkSpec({
  spec,
  rules: {
    VL001: true, VL002: true, VL004: true, VL005: true,
    VL009: true, VL011: true, VL012: true, VL013: true,
  },
});

B-roll format

const { data } = await vj.checkSpec({
  spec,
  rules: {
    VL001: true, VL002: true, VL003: true,
    VL005: true, VL006: true, VL010: true,
  },
});

Custom rules

Custom rules are plain-text strings stored per-client. They are stored by VidJutsu but evaluated by the agent layer, not the check endpoint.
// Get your saved custom rules
const { data: rules } = await vj.getCheckRules();

// Update your custom rules
await vj.updateCheckRules({
  rules: [
    "ai-reveal-required: Dialogue must contain a clear AI reveal",
    "first-person-dialogue: All dialogue must be first-person",
  ],
});

Credits

5 credits per check call. Custom rule CRUD is free.