> ## Documentation Index
> Fetch the complete documentation index at: https://docs.seneca.professionalaiagents.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Read the research report

> Return the stored customer report. detail=full, or omitting detail, returns that document. detail=compact removes the question object and places methodology last. Neither read starts research or writes a credit ledger row.



## OpenAPI

````yaml https://seneca-research.fly.dev/v1/openapi.json get /v1/research/{run_id}/result
openapi: 3.1.0
info:
  title: Seneca Research API
  version: 0.1.0
  description: >-
    Create a research run, poll it, then read the customer report. Original
    model text is a separate read: list /v1/research/{run_id}/responses, read
    one model at /v1/research/{run_id}/responses/text, or download the panel as
    JSONL from /v1/research/{run_id}/responses/export. Send Authorization:
    Bearer seneca_sk_… Narrative quickstart:
    https://seneca.professionalaiagents.com/api.md
servers:
  - url: https://seneca-research.fly.dev
    description: Production
security: []
paths:
  /v1/research/{run_id}/result:
    get:
      tags:
        - public-api
      summary: Read the research report
      description: >-
        Return the stored customer report. detail=full, or omitting detail,
        returns that document. detail=compact removes the question object and
        places methodology last. Neither read starts research or writes a credit
        ledger row.
      operationId: get_research_result_v1_research__run_id__result_get
      parameters:
        - name: run_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Run Id
        - name: detail
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              full returns the stored report, including the question. compact
              omits the question and places methodology last. The default is
              full.
            title: Detail
          description: >-
            full returns the stored report, including the question. compact
            omits the question and places methodology last. The default is full.
      responses:
        '200':
          description: >-
            Customer report. report is schema seneca_research_platform_report:
            answer, evidence, analysis, research record, and methodology.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicResultOut'
        '400':
          description: >-
            invalid_request when detail is not full or compact, or the run id
            cannot be read.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
        '401':
          description: >-
            authentication_required when the bearer token is missing or not a
            bearer token. invalid_api_key when the key is unknown, revoked, or
            expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
        '404':
          description: run_not_found. Another workspace's report is also run_not_found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
        '409':
          description: >-
            result_not_ready while status is queued, running, or synthesizing.
            research_failed when the run finished without a customer report.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
        '429':
          description: >-
            rate_limit_exceeded. Reads are limited to 120 requests per minute
            per key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
        '500':
          description: internal_error. The body does not include a traceback or a secret.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
      security:
        - SenecaApiKey: []
components:
  schemas:
    PublicResultOut:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        object:
          type: string
          const: research.result
          title: Object
          default: research.result
        status:
          type: string
          title: Status
          description: completed or partial when a customer report exists.
        report:
          $ref: '#/components/schemas/SenecaReportV3'
      additionalProperties: false
      type: object
      required:
        - id
        - status
        - report
      title: PublicResultOut
      description: >-
        Runtime result body. report stays the stored document and is not
        revalidated.
    PublicErrorResponse:
      properties:
        error:
          $ref: '#/components/schemas/PublicErrorObject'
      additionalProperties: false
      type: object
      required:
        - error
      title: PublicErrorResponse
      description: Error envelope returned by every /v1 failure. Documentation model only.
    SenecaReportV3:
      additionalProperties: false
      properties:
        schema_version:
          const: seneca_research_platform_report
          default: seneca_research_platform_report
          title: Schema Version
          type: string
        status:
          type: string
          title: Status
        errors:
          items:
            $ref: '#/components/schemas/SenecaReportError'
          title: Errors
          type: array
        question:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportQuestion'
            - type: 'null'
          default: null
        answer:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportAnswer'
            - type: 'null'
          default: null
        evidence:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportEvidence'
            - type: 'null'
          default: null
        analysis:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportAnalysis'
            - type: 'null'
          default: null
        research_record:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportResearchRecord'
            - type: 'null'
          default: null
        methodology:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportMethodology'
            - type: 'null'
          default: null
      required:
        - status
      title: SenecaReportV3
      type: object
    PublicErrorObject:
      properties:
        code:
          type: string
          title: Code
        message:
          type: string
          title: Message
        details:
          additionalProperties: true
          type: object
          title: Details
      additionalProperties: false
      type: object
      required:
        - code
        - message
      title: PublicErrorObject
    SenecaReportError:
      additionalProperties: true
      properties:
        code:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Code
        message:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Message
      title: SenecaReportError
      type: object
    SenecaReportQuestion:
      additionalProperties: true
      properties:
        text:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Text
        question_type:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Question Type
      title: SenecaReportQuestion
      type: object
    SenecaReportAnswer:
      additionalProperties: true
      properties:
        headline:
          title: Headline
          type: string
        direct_answer:
          title: Direct Answer
          type: string
        rationale:
          default: ''
          title: Rationale
          type: string
        recommended_option:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Recommended Option
        key_points:
          items:
            $ref: '#/components/schemas/SenecaReportKeyPoint'
          title: Key Points
          type: array
        recommendation:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportRecommendation'
            - type: 'null'
          default: null
        ranked_options:
          items:
            $ref: '#/components/schemas/SenecaReportRankedOption'
          title: Ranked Options
          type: array
        primary_disagreement_id:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Primary Disagreement Id
        notable_minority_insight_id:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Notable Minority Insight Id
      required:
        - headline
        - direct_answer
      title: SenecaReportAnswer
      type: object
    SenecaReportEvidence:
      additionalProperties: true
      properties:
        claims:
          items:
            $ref: '#/components/schemas/SenecaReportClaim'
          title: Claims
          type: array
        camps:
          description: >-
            Positions the panel formed, including which models belong to each
            camp.
          items:
            $ref: '#/components/schemas/SenecaReportCamp'
          title: Camps
          type: array
        unclassified_model_ids:
          items:
            type: string
          title: Unclassified Model Ids
          type: array
      title: SenecaReportEvidence
      type: object
    SenecaReportAnalysis:
      additionalProperties: true
      properties:
        disagreements:
          items:
            $ref: '#/components/schemas/SenecaReportDisagreement'
          title: Disagreements
          type: array
        minority_insights:
          items:
            $ref: '#/components/schemas/SenecaReportMinorityInsight'
          title: Minority Insights
          type: array
        uncertainties:
          items:
            $ref: '#/components/schemas/SenecaReportUncertainty'
          title: Uncertainties
          type: array
      title: SenecaReportAnalysis
      type: object
    SenecaReportResearchRecord:
      additionalProperties: true
      properties:
        research_snapshot:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportSnapshot'
            - type: 'null'
          default: null
        panel:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportPanel'
            - type: 'null'
          default: null
        provenance:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportProvenance'
            - type: 'null'
          default: null
        generation:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportGeneration'
            - type: 'null'
          default: null
        token_usage:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportTokenUsage'
            - type: 'null'
          default: null
      title: SenecaReportResearchRecord
      type: object
    SenecaReportMethodology:
      additionalProperties: true
      properties:
        evidence_collection:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Evidence Collection
        synthesis_and_audit:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Synthesis And Audit
        stages:
          items:
            $ref: '#/components/schemas/SenecaReportMethodologyStage'
          title: Stages
          type: array
        controls:
          items:
            $ref: '#/components/schemas/SenecaReportMethodologyControl'
          title: Controls
          type: array
        controlled_inference:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportControlledInference'
            - type: 'null'
          default: null
      title: SenecaReportMethodology
      type: object
    SenecaReportKeyPoint:
      additionalProperties: true
      properties:
        key_point_id:
          title: Key Point Id
          type: integer
        label:
          title: Label
          type: string
        statement:
          title: Statement
          type: string
        related_claim_ids:
          items:
            type: integer
          title: Related Claim Ids
          type: array
      required:
        - key_point_id
        - label
        - statement
      title: SenecaReportKeyPoint
      type: object
    SenecaReportRecommendation:
      additionalProperties: true
      properties:
        statement:
          title: Statement
          type: string
        related_claim_ids:
          items:
            type: integer
          title: Related Claim Ids
          type: array
      required:
        - statement
      title: SenecaReportRecommendation
      type: object
    SenecaReportRankedOption:
      additionalProperties: true
      properties:
        rank:
          title: Rank
          type: integer
        option:
          title: Option
          type: string
        rationale:
          default: ''
          title: Rationale
          type: string
        related_claim_ids:
          items:
            type: integer
          title: Related Claim Ids
          type: array
      required:
        - rank
        - option
      title: SenecaReportRankedOption
      type: object
    SenecaReportClaim:
      additionalProperties: true
      properties:
        claim_id:
          title: Claim Id
          type: integer
        statement:
          title: Statement
          type: string
        importance:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Importance
        supporting_model_ids:
          items:
            type: string
          title: Supporting Model Ids
          type: array
        opposing_model_ids:
          items:
            type: string
          title: Opposing Model Ids
          type: array
        mixed_or_uncertain_model_ids:
          items:
            type: string
          title: Mixed Or Uncertain Model Ids
          type: array
        caveats:
          items:
            type: string
          title: Caveats
          type: array
        supporting_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Supporting Count
        opposing_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Opposing Count
        mixed_or_uncertain_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Mixed Or Uncertain Count
        not_addressed_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Not Addressed Count
        addressed_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Addressed Count
        support_share_of_addressed:
          anyOf:
            - type: number
            - type: 'null'
          default: null
          title: Support Share Of Addressed
        oppose_share_of_addressed:
          anyOf:
            - type: number
            - type: 'null'
          default: null
          title: Oppose Share Of Addressed
        mixed_share_of_addressed:
          anyOf:
            - type: number
            - type: 'null'
          default: null
          title: Mixed Share Of Addressed
      required:
        - claim_id
        - statement
      title: SenecaReportClaim
      type: object
    SenecaReportCamp:
      additionalProperties: true
      properties:
        camp_id:
          title: Camp Id
          type: integer
        label:
          title: Label
          type: string
        thesis:
          default: ''
          title: Thesis
          type: string
        model_ids:
          items:
            type: string
          title: Model Ids
          type: array
        representative_model_ids:
          items:
            type: string
          title: Representative Model Ids
          type: array
        model_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Model Count
        eligible_model_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Eligible Model Count
        model_share:
          anyOf:
            - type: number
            - type: 'null'
          default: null
          title: Model Share
        equal_lab_weight_share:
          anyOf:
            - type: number
            - type: 'null'
          default: null
          title: Equal Lab Weight Share
        by_lab:
          anyOf:
            - $ref: '#/components/schemas/SenecaCensusBreakdown'
            - type: 'null'
          default: null
        by_country:
          anyOf:
            - $ref: '#/components/schemas/SenecaCensusBreakdown'
            - type: 'null'
          default: null
        by_model_family:
          anyOf:
            - $ref: '#/components/schemas/SenecaCensusBreakdown'
            - type: 'null'
          default: null
      required:
        - camp_id
        - label
      title: SenecaReportCamp
      type: object
    SenecaReportDisagreement:
      additionalProperties: true
      properties:
        disagreement_id:
          title: Disagreement Id
          type: integer
        issue:
          title: Issue
          type: string
        related_claim_ids:
          items:
            type: integer
          title: Related Claim Ids
          type: array
        related_camp_ids:
          items:
            type: integer
          title: Related Camp Ids
          type: array
        core_tension:
          default: ''
          title: Core Tension
          type: string
        assumptions:
          items:
            type: string
          title: Assumptions
          type: array
        why_it_matters:
          default: ''
          title: Why It Matters
          type: string
        resolving_information:
          items:
            type: string
          title: Resolving Information
          type: array
      required:
        - disagreement_id
        - issue
      title: SenecaReportDisagreement
      type: object
    SenecaReportMinorityInsight:
      additionalProperties: true
      properties:
        insight_id:
          title: Insight Id
          type: integer
        insight:
          title: Insight
          type: string
        supporting_model_ids:
          items:
            type: string
          title: Supporting Model Ids
          type: array
        related_claim_ids:
          items:
            type: integer
          title: Related Claim Ids
          type: array
        related_camp_ids:
          items:
            type: integer
          title: Related Camp Ids
          type: array
        why_it_matters:
          default: ''
          title: Why It Matters
          type: string
      required:
        - insight_id
        - insight
      title: SenecaReportMinorityInsight
      type: object
    SenecaReportUncertainty:
      additionalProperties: true
      properties:
        uncertainty_id:
          title: Uncertainty Id
          type: integer
        description:
          title: Description
          type: string
        affected_claim_ids:
          items:
            type: integer
          title: Affected Claim Ids
          type: array
        why_unresolved:
          default: ''
          title: Why Unresolved
          type: string
        what_would_resolve_it:
          items:
            type: string
          title: What Would Resolve It
          type: array
      required:
        - uncertainty_id
        - description
      title: SenecaReportUncertainty
      type: object
    SenecaReportSnapshot:
      additionalProperties: true
      properties:
        invited:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Invited
        successful:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Successful
        failed:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Failed
        excluded:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Excluded
        included_in_synthesis:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Included In Synthesis
        unclassified:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Unclassified
      title: SenecaReportSnapshot
      type: object
    SenecaReportPanel:
      additionalProperties: true
      properties:
        models:
          items:
            $ref: '#/components/schemas/SenecaReportPanelModel'
          title: Models
          type: array
      title: SenecaReportPanel
      type: object
    SenecaReportProvenance:
      additionalProperties: true
      properties:
        included:
          items:
            $ref: '#/components/schemas/SenecaReportProvenanceIncluded'
          title: Included
          type: array
        failed:
          items:
            $ref: '#/components/schemas/SenecaReportProvenanceFailed'
          title: Failed
          type: array
        excluded:
          items:
            $ref: '#/components/schemas/SenecaReportProvenanceExcluded'
          title: Excluded
          type: array
      title: SenecaReportProvenance
      type: object
    SenecaReportGeneration:
      additionalProperties: true
      properties:
        run_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Run Id
        rerun_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Rerun Id
        generated_at:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Generated At
        run_started_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Run Started At
        run_completed_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Run Completed At
      title: SenecaReportGeneration
      type: object
    SenecaReportTokenUsage:
      additionalProperties: true
      properties:
        input_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Input Tokens
        output_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Output Tokens
        total_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Total Tokens
      title: SenecaReportTokenUsage
      type: object
    SenecaReportMethodologyStage:
      additionalProperties: true
      properties:
        order:
          title: Order
          type: integer
        key:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Key
        label:
          title: Label
          type: string
      required:
        - order
        - label
      title: SenecaReportMethodologyStage
      type: object
    SenecaReportMethodologyControl:
      additionalProperties: true
      properties:
        id:
          title: Id
          type: string
        label:
          title: Label
          type: string
        description:
          title: Description
          type: string
      required:
        - id
        - label
        - description
      title: SenecaReportMethodologyControl
      type: object
    SenecaReportControlledInference:
      additionalProperties: true
      properties:
        title:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Title
        body:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Body
        why_this_matters:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Why This Matters
        conditions:
          anyOf:
            - $ref: '#/components/schemas/SenecaReportInferenceConditions'
            - type: 'null'
          default: null
        instrument_labels:
          items:
            type: string
          title: Instrument Labels
          type: array
      title: SenecaReportControlledInference
      type: object
    SenecaCensusBreakdown:
      additionalProperties: true
      properties:
        groups:
          items:
            $ref: '#/components/schemas/SenecaCensusGroup'
          title: Groups
          type: array
        unknown_count:
          default: 0
          title: Unknown Count
          type: integer
      title: SenecaCensusBreakdown
      type: object
    SenecaReportPanelModel:
      additionalProperties: true
      properties:
        model_id:
          title: Model Id
          type: string
        display_name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Display Name
        lab:
          anyOf:
            - $ref: '#/components/schemas/PublicLab'
            - type: string
            - type: 'null'
          default: null
          title: Lab
        lab_origin_country_code:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Lab Origin Country Code
        lab_origin_country_name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Lab Origin Country Name
        organization_geopolitical_region:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Organization Geopolitical Region
        model_family:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Model Family
      required:
        - model_id
      title: SenecaReportPanelModel
      type: object
    SenecaReportProvenanceIncluded:
      additionalProperties: true
      properties:
        model_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Model Id
        display_name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Display Name
        lab:
          anyOf:
            - $ref: '#/components/schemas/PublicLab'
            - type: 'null'
          default: null
        response_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Response Id
        input_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Input Tokens
        output_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Output Tokens
        total_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          title: Total Tokens
      title: SenecaReportProvenanceIncluded
      type: object
    SenecaReportProvenanceFailed:
      additionalProperties: true
      properties:
        model_id:
          title: Model Id
          type: string
        display_name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Display Name
        lab:
          anyOf:
            - $ref: '#/components/schemas/PublicLab'
            - type: 'null'
          default: null
        response_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Response Id
        status:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Status
        late_retry:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Late Retry
        error:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Error
      required:
        - model_id
      title: SenecaReportProvenanceFailed
      type: object
    SenecaReportProvenanceExcluded:
      additionalProperties: true
      properties:
        model_id:
          title: Model Id
          type: string
        display_name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Display Name
        lab:
          anyOf:
            - $ref: '#/components/schemas/PublicLab'
            - type: 'null'
          default: null
        response_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Response Id
        reason:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Reason
      required:
        - model_id
      title: SenecaReportProvenanceExcluded
      type: object
    SenecaReportInferenceConditions:
      additionalProperties: true
      properties:
        text_to_text_only:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Text To Text Only
        web_retrieval:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Web Retrieval
        cot_traces:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Cot Traces
        external_tools:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: External Tools
        rag:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Rag
        reasoning_models:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Reasoning Models
      title: SenecaReportInferenceConditions
      type: object
    SenecaCensusGroup:
      additionalProperties: true
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Id
        key:
          title: Key
          type: string
        count:
          title: Count
          type: integer
        share:
          anyOf:
            - type: number
            - type: 'null'
          default: null
          title: Share
      required:
        - key
        - count
      title: SenecaCensusGroup
      type: object
    PublicLab:
      additionalProperties: false
      properties:
        slug:
          title: Slug
          type: string
        display_name:
          title: Display Name
          type: string
      required:
        - slug
        - display_name
      title: PublicLab
      type: object
  securitySchemes:
    SenecaApiKey:
      type: http
      description: >-
        Workspace API key created while signed in on the Developers page. Send
        Authorization: Bearer seneca_sk_… A Clerk session token is not accepted.
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.