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

# Search Research

> Rank candidate content, then return canonical stored JSON.



## OpenAPI

````yaml /api-reference/openapi.json post /api/public/v1/research/search/
openapi: 3.1.0
info:
  title: User Intuition Public API
  description: >-
    ## Public Integration API


    Programmatic access to User Intuition for external integrators: manage
    studies, participants, interviews, reports, and panels.


    ### Authentication


    All endpoints require a Bearer token — either an API key (prefixed `ui_sk_`,
    created in the dashboard) or a dashboard JWT:


    ```

    Authorization: Bearer <ui_sk_… or JWT>

    ```


    ### Base URLs


    - **Production:** `https://api.userintuition.ai`

    - **Staging:** `https://staging.userintuition.ai`


    ### Support


    For API support, contact support@userintuition.ai
  version: 1.0.0
  contact:
    name: User Intuition Support
    email: support@userintuition.ai
servers:
  - url: https://api.userintuition.ai
    description: Production
  - url: https://staging.userintuition.ai
    description: Staging
security:
  - BearerAuth: []
paths:
  /api/public/v1/research/search/:
    post:
      tags:
        - public-research-search
      summary: Search Research
      description: Rank candidate content, then return canonical stored JSON.
      operationId: searchResearch
      parameters:
        - name: X-UI-Organization-ID
          in: header
          required: false
          schema:
            anyOf:
              - type: string
                maxLength: 128
              - type: 'null'
            description: >-
              Platform admins only: choose an organization for scoped reads and
              writes. Required to change another organization's study or use its
              wallet.
            title: X-Ui-Organization-Id
          description: >-
            Platform admins only: choose an organization for scoped reads and
            writes. Required to change another organization's study or use its
            wallet.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicResearchSearchRequest'
            examples:
              Find pricing evidence:
                summary: Find pricing evidence
                description: >-
                  Search one indexed study and return canonical finding/response
                  JSON; cursor must be null in this release.
                value:
                  query: What makes people think The Ribbon is too expensive?
                  filters:
                    study_ids:
                      - 11111111-2222-3333-4444-555555555555
                    content_types:
                      - study_finding
                      - participant_response
                    research_date_from: '2026-01-01'
                    research_date_to: '2026-09-16'
                  limit: 10
                  cursor: null
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicResearchSearchResponse'
        '422':
          description: Public API error. X-Request-ID matches error.request_id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
        default:
          description: Public API error. X-Request-ID matches error.request_id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
components:
  schemas:
    PublicResearchSearchRequest:
      properties:
        query:
          type: string
          maxLength: 2000
          minLength: 1
          title: Query
        filters:
          $ref: '#/components/schemas/PublicResearchSearchFilters'
        limit:
          type: integer
          maximum: 50
          minimum: 1
          title: Limit
          default: 10
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
          description: Reserved for future pagination. The first release accepts only null.
      type: object
      required:
        - query
        - filters
      title: PublicResearchSearchRequest
    PublicResearchSearchResponse:
      properties:
        studies:
          items:
            $ref: '#/components/schemas/PublicResearchStudyResults'
          type: array
          title: Studies
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
        generated_content_returned:
          type: boolean
          const: false
          title: Generated Content Returned
          default: false
      type: object
      title: PublicResearchSearchResponse
    PublicApiErrorResponse:
      type: object
      required:
        - detail
        - error
      properties:
        detail:
          description: Legacy error detail; may be a string, list, or object.
        error:
          $ref: '#/components/schemas/PublicApiError'
    PublicResearchSearchFilters:
      properties:
        study_ids:
          items:
            type: string
          type: array
          maxItems: 20
          minItems: 1
          title: Study Ids
        content_types:
          anyOf:
            - items:
                type: string
                enum:
                  - study_plan
                  - study_finding
                  - participant_profile
                  - participant_response
                  - recommended_next_step
              type: array
            - type: 'null'
          title: Content Types
        research_date_from:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Research Date From
          description: >-
            Include research whose interview period overlaps this UTC date or
            later; legacy undated records are excluded
        research_date_to:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Research Date To
          description: >-
            Include research whose interview period overlaps this UTC date or
            earlier; legacy undated records are excluded
      type: object
      required:
        - study_ids
      title: PublicResearchSearchFilters
    PublicResearchStudyResults:
      properties:
        study_id:
          type: string
          title: Study Id
        index_status:
          type: string
          enum:
            - ready
            - updating
            - not_indexed
          title: Index Status
        latest_report_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Latest Report Id
        indexed_report_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Indexed Report Id
        results:
          items:
            anyOf:
              - $ref: '#/components/schemas/PublicStudyPlanSearchResult'
              - $ref: '#/components/schemas/PublicStudyFindingSearchResult'
              - $ref: '#/components/schemas/PublicParticipantProfileSearchResult'
              - $ref: '#/components/schemas/PublicParticipantResponseSearchResult'
              - $ref: '#/components/schemas/PublicRecommendedNextStepSearchResult'
          type: array
          title: Results
      type: object
      required:
        - study_id
        - index_status
      title: PublicResearchStudyResults
    PublicApiError:
      type: object
      required:
        - code
        - message
        - field
        - request_id
        - outcome
        - recovery_action
        - docs_url
      properties:
        code:
          type: string
        message:
          type: string
        field:
          anyOf:
            - type: string
            - type: 'null'
        request_id:
          type: string
          format: uuid
        outcome:
          type: string
          enum:
            - not_started
            - failed
            - unknown
        recovery_action:
          type: string
        docs_url:
          type: string
          format: uri
    PublicStudyPlanSearchResult:
      properties:
        content_id:
          type: string
          title: Content Id
        report_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Report Id
        report_generated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Report Generated At
        research_period:
          anyOf:
            - $ref: '#/components/schemas/PublicResearchPeriod'
            - type: 'null'
          description: >-
            Start and end timestamps of interviews included in the indexed
            report; null for legacy or undated evidence
        content_type:
          type: string
          const: study_plan
          title: Content Type
        content:
          $ref: '#/components/schemas/PublicStudyPlanOut'
      type: object
      required:
        - content_id
        - content_type
        - content
      title: PublicStudyPlanSearchResult
    PublicStudyFindingSearchResult:
      properties:
        content_id:
          type: string
          title: Content Id
        report_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Report Id
        report_generated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Report Generated At
        research_period:
          anyOf:
            - $ref: '#/components/schemas/PublicResearchPeriod'
            - type: 'null'
          description: >-
            Start and end timestamps of interviews included in the indexed
            report; null for legacy or undated evidence
        content_type:
          type: string
          const: study_finding
          title: Content Type
        content:
          $ref: '#/components/schemas/PublicSearchStudyFinding'
      type: object
      required:
        - content_id
        - content_type
        - content
      title: PublicStudyFindingSearchResult
    PublicParticipantProfileSearchResult:
      properties:
        content_id:
          type: string
          title: Content Id
        report_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Report Id
        report_generated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Report Generated At
        research_period:
          anyOf:
            - $ref: '#/components/schemas/PublicResearchPeriod'
            - type: 'null'
          description: >-
            Start and end timestamps of interviews included in the indexed
            report; null for legacy or undated evidence
        content_type:
          type: string
          const: participant_profile
          title: Content Type
        content:
          $ref: '#/components/schemas/PublicParticipantProfileSection'
      type: object
      required:
        - content_id
        - content_type
        - content
      title: PublicParticipantProfileSearchResult
    PublicParticipantResponseSearchResult:
      properties:
        content_id:
          type: string
          title: Content Id
        report_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Report Id
        report_generated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Report Generated At
        research_period:
          anyOf:
            - $ref: '#/components/schemas/PublicResearchPeriod'
            - type: 'null'
          description: >-
            Start and end timestamps of interviews included in the indexed
            report; null for legacy or undated evidence
        content_type:
          type: string
          const: participant_response
          title: Content Type
        interview_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Interview Id
          description: Public interview ID to use with get_interview
        content:
          $ref: '#/components/schemas/PublicParticipantResponse'
      type: object
      required:
        - content_id
        - content_type
        - content
      title: PublicParticipantResponseSearchResult
    PublicRecommendedNextStepSearchResult:
      properties:
        content_id:
          type: string
          title: Content Id
        report_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Report Id
        report_generated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Report Generated At
        research_period:
          anyOf:
            - $ref: '#/components/schemas/PublicResearchPeriod'
            - type: 'null'
          description: >-
            Start and end timestamps of interviews included in the indexed
            report; null for legacy or undated evidence
        content_type:
          type: string
          const: recommended_next_step
          title: Content Type
        content:
          $ref: '#/components/schemas/PublicRecommendedNextStep'
      type: object
      required:
        - content_id
        - content_type
        - content
      title: PublicRecommendedNextStepSearchResult
    PublicResearchPeriod:
      properties:
        start:
          type: string
          format: date-time
          title: Start
        end:
          type: string
          format: date-time
          title: End
      type: object
      required:
        - start
        - end
      title: PublicResearchPeriod
    PublicStudyPlanOut:
      properties:
        objectives:
          anyOf:
            - type: string
            - type: 'null'
          title: Objectives
        conversation_flow:
          anyOf:
            - type: string
            - type: 'null'
          title: Conversation Flow
        background:
          anyOf:
            - type: string
            - type: 'null'
          title: Background
        learning_goals:
          anyOf:
            - type: string
            - type: 'null'
          title: Learning Goals
        learning_goals_structured:
          anyOf:
            - items:
                $ref: '#/components/schemas/PublicLearningGoal'
              type: array
            - type: 'null'
          title: Learning Goals Structured
          description: >-
            Stable goals whose IDs match report learning_goal_id values. Older
            plans also return goal IDs; evidence_needed is null if no
            requirements were recorded.
        study_specific_rules:
          anyOf:
            - type: string
            - type: 'null'
          title: Study Specific Rules
        study_improvements:
          anyOf:
            - type: string
            - type: 'null'
          title: Study Improvements
      type: object
      title: PublicStudyPlanOut
      description: >-
        Response variant — all sections optional (a study's stored prompt may
        not

        contain every section).
    PublicSearchStudyFinding:
      properties:
        heading:
          type: string
          title: Heading
        content:
          type: string
          title: Content
          default: ''
        reference_ids:
          items:
            type: string
          type: array
          title: Reference Ids
          description: Citation IDs that resolve through the report's references array
        finding_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Finding Id
        learning_goal_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Learning Goal Id
      type: object
      required:
        - heading
      title: PublicSearchStudyFinding
    PublicParticipantProfileSection:
      properties:
        heading:
          type: string
          title: Heading
        content:
          items:
            $ref: '#/components/schemas/PublicParticipantProfileAnswer'
          type: array
          title: Content
        reference_ids:
          items:
            type: string
          type: array
          title: Reference Ids
      type: object
      required:
        - heading
      title: PublicParticipantProfileSection
    PublicParticipantResponse:
      properties:
        interview_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Interview Id
          description: Public interview record ID
        overall_takeaways:
          items:
            type: string
          type: array
          title: Overall Takeaways
        learning_goal_responses:
          items:
            $ref: '#/components/schemas/PublicParticipantLearningGoalResponse'
          type: array
          title: Learning Goal Responses
      type: object
      title: PublicParticipantResponse
    PublicRecommendedNextStep:
      properties:
        gap_ids:
          items:
            type: string
          type: array
          title: Gap Ids
        action:
          type: string
          title: Action
        study_slug:
          anyOf:
            - type: string
            - type: 'null'
          title: Study Slug
        title:
          type: string
          title: Title
        rationale:
          type: string
          title: Rationale
        context:
          anyOf:
            - type: string
            - type: 'null'
          title: Context
      type: object
      required:
        - action
        - title
        - rationale
      title: PublicRecommendedNextStep
    PublicLearningGoal:
      properties:
        id:
          type: string
          title: Id
        question:
          type: string
          title: Question
        evidence_needed:
          anyOf:
            - type: string
            - type: 'null'
          title: Evidence Needed
          description: >-
            Evidence requirements; null for legacy plans that did not record
            them.
      type: object
      required:
        - id
        - question
      title: PublicLearningGoal
    PublicParticipantProfileAnswer:
      properties:
        answer:
          type: string
          title: Answer
        participants:
          type: integer
          minimum: 0
          title: Participants
        percentage:
          type: integer
          maximum: 100
          minimum: 0
          title: Percentage
      type: object
      required:
        - answer
        - participants
        - percentage
      title: PublicParticipantProfileAnswer
    PublicParticipantLearningGoalResponse:
      properties:
        learning_goal_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Learning Goal Id
        learning_goal_index:
          anyOf:
            - type: integer
            - type: 'null'
          title: Learning Goal Index
        learning_goal:
          anyOf:
            - type: string
            - type: 'null'
          title: Learning Goal
        assessment_state:
          anyOf:
            - type: string
            - type: 'null'
          title: Assessment State
        unavailability_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Unavailability Reason
        explored:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Explored
        answered:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Answered
        summary:
          anyOf:
            - type: string
            - type: 'null'
          title: Summary
        quote:
          anyOf:
            - type: string
            - type: 'null'
          title: Quote
      type: object
      title: PublicParticipantLearningGoalResponse
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Authenticate with an API key (prefixed `ui_sk_`) or a JWT token from the
        dashboard.

````

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