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

# Complete Interview

> Manually finish a campaign (operator override).

Flips an active or paused campaign to completed, triggering the same report
synthesis and ``campaign.completed`` webhook as an automatic threshold
completion. Use when enough interviews are in and you want to close the
campaign and generate the report without waiting for the completion
threshold, or to unstick a campaign whose interviews finished but never
rolled up. Idempotent for already-completed campaigns.



## OpenAPI

````yaml /openapi.json post /v1/interviews/{interview_id}/complete
openapi: 3.1.0
info:
  title: Ontora API
  description: >-
    Ontora's public API. Covers interview campaigns, transcripts, synthesis
    reports, graph queries, webhooks, and workspace management. 


    **Authentication**: endpoints accept either a Clerk JWT (`Authorization:
    Bearer <token>`) or a workspace API key (`X-API-Key: ont_...`). Workspace
    keys are managed via `/v1/api-keys`.
  version: 0.1.0
servers: []
security:
  - ClerkJWT: []
  - WorkspaceApiKey: []
tags:
  - name: interviews
    description: Campaign CRUD, lifecycle, contacts, question sets.
  - name: campaign-insights
    description: Synthesis outputs — cartography, roadmap, personas, conversations.
  - name: interview-query
    description: Graph RAG query over campaign data.
  - name: campaign-reports
    description: Versioned synthesis Reports — manual regenerate, version history.
  - name: interview-export
    description: Markdown / ZIP exports of transcripts and reports.
  - name: api-keys
    description: Manage workspace-scoped API keys for programmatic access.
  - name: webhook-endpoints
    description: Outbound webhook endpoints for automation.
  - name: booking
    description: Public self-scheduling endpoints for interview participants.
  - name: join
    description: Public QR-code / share-link self-registration for campaign participants.
  - name: workspaces
    description: Workspace and membership management.
  - name: vaults
    description: Context vault management.
paths:
  /v1/interviews/{interview_id}/complete:
    post:
      tags:
        - interviews
      summary: Complete Interview
      description: >-
        Manually finish a campaign (operator override).


        Flips an active or paused campaign to completed, triggering the same
        report

        synthesis and ``campaign.completed`` webhook as an automatic threshold

        completion. Use when enough interviews are in and you want to close the

        campaign and generate the report without waiting for the completion

        threshold, or to unstick a campaign whose interviews finished but never

        rolled up. Idempotent for already-completed campaigns.
      operationId: complete_interview_v1_interviews__interview_id__complete_post
      parameters:
        - name: interview_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Interview Id
        - name: X-API-Key
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: X-Api-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InterviewOut'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    InterviewOut:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        workspace_id:
          type: string
          format: uuid
          title: Workspace Id
        is_shared:
          type: boolean
          title: Is Shared
          default: false
        shared_from_workspace_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Shared From Workspace Name
        share_scope:
          type: string
          title: Share Scope
          default: restricted
        share_link_enabled:
          type: boolean
          title: Share Link Enabled
          default: false
        name:
          type: string
          title: Name
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        goal:
          anyOf:
            - type: string
            - type: 'null'
          title: Goal
        agent_behavior:
          anyOf:
            - type: string
            - type: 'null'
          title: Agent Behavior
        status:
          type: string
          title: Status
        channel:
          type: string
          title: Channel
        completion_threshold:
          type: integer
          title: Completion Threshold
        timeframe_start:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Timeframe Start
        timeframe_end:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Timeframe End
        interview_order:
          type: string
          title: Interview Order
        interview_duration_minutes:
          type: integer
          title: Interview Duration Minutes
        timezone:
          anyOf:
            - type: string
            - type: 'null'
          title: Timezone
        start_immediately:
          type: boolean
          title: Start Immediately
          default: true
        scheduling_mode:
          type: string
          title: Scheduling Mode
          default: availability
        quick_mode_hours:
          anyOf:
            - type: integer
            - type: 'null'
          title: Quick Mode Hours
        weekly_availability:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Weekly Availability
        project_context:
          anyOf:
            - type: string
            - type: 'null'
          title: Project Context
        success_criteria:
          anyOf:
            - type: string
            - type: 'null'
          title: Success Criteria
        interview_context_for_employee:
          anyOf:
            - type: string
            - type: 'null'
          title: Interview Context For Employee
        invitation_email_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Invitation Email Message
        teams_invitation_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Teams Invitation Message
        agent_profile_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Agent Profile Id
        agent_profile_snapshot:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Agent Profile Snapshot
        draft_guide:
          anyOf:
            - items: {}
              type: array
            - type: 'null'
          title: Draft Guide
        interview_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Interview Type
        default_language:
          anyOf:
            - type: string
            - type: 'null'
          title: Default Language
        voice_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Voice Id
        voice_provider:
          anyOf:
            - type: string
            - type: 'null'
          title: Voice Provider
        voice_language:
          anyOf:
            - type: string
            - type: 'null'
          title: Voice Language
        voice_speed:
          type: number
          title: Voice Speed
          default: 1
        participant_voice_selection_enabled:
          type: boolean
          title: Participant Voice Selection Enabled
          default: false
        participant_mode_selection_enabled:
          type: boolean
          title: Participant Mode Selection Enabled
          default: false
        participant_language_selection_enabled:
          type: boolean
          title: Participant Language Selection Enabled
          default: false
        participant_anonymity_selection_enabled:
          type: boolean
          title: Participant Anonymity Selection Enabled
          default: false
        participant_review_enabled:
          type: boolean
          title: Participant Review Enabled
          default: false
        result_summary_enabled:
          type: boolean
          title: Result Summary Enabled
          default: false
        result_summary_recipient_count:
          type: integer
          title: Result Summary Recipient Count
          default: 0
        welcome_screen:
          anyOf:
            - type: string
            - type: 'null'
          title: Welcome Screen
        closing_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Closing Message
        folder:
          anyOf:
            - type: string
            - type: 'null'
          title: Folder
        recurring_interval:
          anyOf:
            - type: string
            - type: 'null'
          title: Recurring Interval
        followup_enabled:
          type: boolean
          title: Followup Enabled
          default: false
        followup_strategy:
          anyOf:
            - type: string
            - type: 'null'
          title: Followup Strategy
        followup_intervals_hours:
          anyOf:
            - items:
                type: integer
              type: array
            - type: 'null'
          title: Followup Intervals Hours
        followup_deadline_days:
          anyOf:
            - items:
                type: integer
              type: array
            - type: 'null'
          title: Followup Deadline Days
        followup_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Followup Message
        report_floor_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Report Floor Count
        incremental_update_every_n:
          anyOf:
            - type: integer
            - type: 'null'
          title: Incremental Update Every N
        use_agentic_synthesis:
          type: boolean
          title: Use Agentic Synthesis
          default: false
        is_anonymous:
          type: boolean
          title: Is Anonymous
          default: false
        anonymity_level:
          type: string
          title: Anonymity Level
          default: none
        contact_count:
          type: integer
          title: Contact Count
          default: 0
        completed_count:
          type: integer
          title: Completed Count
          default: 0
        scheduled_count:
          type: integer
          title: Scheduled Count
          default: 0
        created_by:
          anyOf:
            - type: string
            - type: 'null'
          title: Created By
        created_by_email:
          anyOf:
            - type: string
            - type: 'null'
          title: Created By Email
        created_by_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Created By Name
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
        join_link_delivery:
          type: boolean
          title: Join Link Delivery
          default: false
      type: object
      required:
        - id
        - workspace_id
        - name
        - description
        - goal
        - agent_behavior
        - status
        - channel
        - completion_threshold
        - timeframe_start
        - timeframe_end
        - interview_order
        - interview_duration_minutes
        - created_by
        - created_at
        - updated_at
      title: InterviewOut
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ClerkJWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Clerk-issued RS256 JWT.
    WorkspaceApiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: 'Workspace-scoped API key (prefix: `ont_`).'
    HTTPBearer:
      type: http
      scheme: bearer

````