Circle V2 API Docs
    Preparing search index...
    type DryRunFormFillResult = {
        aiFieldCount: number;
        aiFieldIds: string[];
        aiFieldsAnswered: number;
        degradations: DegradationSummaryEntry[];
        deterministicAnswerCount: number;
        fields: DryRunFormFillField[];
        formId: FormId;
        patientId: PatientId;
        pdf: { base64: string; byteLength: number; fileName: string } | null;
        pdfOmittedReason: "not_requested" | "too_large" | null;
        skippedFieldIds: string[];
        truncated: boolean;
        undrawnCount: number;
        unpositionedCount: number;
    }
    Index

    Properties

    aiFieldCount: number

    AI fields the template has in total, so the caller can say "10 of 47".

    aiFieldIds: string[]

    Every AI field id, in template order: the chunking plan a caller walks through annotationIds.

    aiFieldsAnswered: number

    AI fields this dry run actually asked for — min(aiFieldCount, cap).

    degradations: DegradationSummaryEntry[]

    Grouped and redaction-aware, the same projection the run log carries; raw details never leave the server.

    deterministicAnswerCount: number

    Answered fields, deterministic lane first, then the AI lane in template order.

    formId: FormId
    patientId: PatientId
    pdf: { base64: string; byteLength: number; fileName: string } | null

    The filled PDF, base64, never stored anywhere. Null when it was not asked for or was too large to return.

    pdfOmittedReason: "not_requested" | "too_large" | null
    skippedFieldIds: string[]

    Annotations with no prompt and no sub-prompts: no question to answer, left for a human.

    truncated: boolean

    The cap left AI fields unanswered; the preview is a sample, not the form.

    undrawnCount: number

    Answers the renderer refused to draw (off-page, degenerate box, unencodable text).

    unpositionedCount: number

    Boxes this preview put no ink into, counted per box.