Circle V2 API Docs
    Preparing search index...
    • Parameters

      • answer: {
            annotation_generated_by_ai: boolean | null;
            annotation_id: string;
            annotation_is_exclusive: boolean | null;
            annotation_prompt: string | null;
            annotation_type: "ai_prompt" | "checkbox" | "text" | "contact";
            citations: unknown;
            contact_link: { contactTypeName: string; fieldKey: string } | null;
            context_sources: NormalizedContextSource[];
            coordinates: {
                height: string | null;
                id: number;
                page: string | null;
                value: string | null;
                width: string | null;
                x: string | null;
                y: string | null;
            }[];
            coordinates_snapshot: unknown[]
            | null;
            created_at: string | null;
            font_size: string | null;
            has_ai_value: boolean;
            id: string;
            no_answer_reason: NoAnswerReasonCode | null;
            prompt_snapshot: string | null;
            run_id: string;
            status: string | null;
            updated_at: string | null;
            value: DecodedAnswerValue;
        }
      • Optionaloptions: ClassifyAnswerOptions

      Returns {
          annotationId: string;
          annotationPrompt: string | null;
          annotationType: "ai_prompt" | "checkbox" | "text" | "contact";
          answerId: string;
          canRevertToAiAnswer: boolean;
          citations: unknown;
          contactLink: { contactTypeName: string; fieldKey: string } | null;
          contextSources: NormalizedContextSource[];
          coordinates: FormAnswerCoordinate[];
          coordinatesSource: CoordinateSource;
          createdAt: string | null;
          fieldStatus: FormRunFieldStatus;
          fontSize: string | null;
          generatedByAi: boolean | null;
          isExclusive: boolean | null;
          noAnswerReason: NoAnswerReasonCode | null;
          status: string | null;
          subfieldProgress: { filled: number; total: number } | null;
          updatedAt: string | null;
          value: DecodedAnswerValue;
      }

      • annotationId: string
      • annotationPrompt: string | null
      • annotationType: "ai_prompt" | "checkbox" | "text" | "contact"
      • answerId: string
      • canRevertToAiAnswer: boolean

        Whether "Revert to AI answer" has anything to restore: a human replaced this answer AND the pipeline's own answer is still on the row.

        A boolean, not the value. The value is a second full copy of a chart-derived answer and this shape rides getAnswers, which the review screen polls every five seconds; revertAnswer reads the one row it needs when the button is actually pressed.

      • citations: unknown
      • contactLink: { contactTypeName: string; fieldKey: string } | null

        The (contact type, field) pair a contact annotation binds to, or null — its only identity.

      • contextSources: NormalizedContextSource[]
      • coordinates: FormAnswerCoordinate[]
      • coordinatesSource: CoordinateSource
      • createdAt: string | null
      • fieldStatus: FormRunFieldStatus

        Derived outcome the UI renders; status is the raw at-rest column beside it.

      • fontSize: string | null

        As-persisted numeric-as-string; NULL falls back to the form's default downstream.

      • generatedByAi: boolean | null
      • isExclusive: boolean | null

        annotations.is_exclusive — whether ticking one option unticks the rest. Null means nobody recorded it, which sends the editor back to matching v1's sentence in annotationPrompt.

      • noAnswerReason: NoAnswerReasonCode | null

        Why this field is blank, as a stable code; null for rows written before reasons were persisted.

      • status: string | null
      • subfieldProgress: { filled: number; total: number } | null

        How many of a sub-field answer's boxes hold a value, from the per-coordinate statuses in the cell — no extra query, no extra payload beyond two integers. Null for a simple answer and for any row written before per-coordinate statuses existed.

      • updatedAt: string | null
      • value: DecodedAnswerValue

        Decoded union — see form-answers.codec for the shapes.