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

# Drill into a brand stance: the AI responses where it was discouraged/recommended/…

> Returns the AI responses where one brand earned a given mention_type (e.g. discouraged), each with its full text and the brand’s theme evidence inside it (the why). entityId is expanded to its merge family. Paginated, most recent first. All standard analytics filters apply.



## OpenAPI

````yaml https://api.mentionlab.io/api/docs-json post /api/analytics/themes/entity-responses
openapi: 3.0.0
info:
  title: MentionLab Public API v0.3.4-rc
  description: ''
  version: 0.3.4-rc
  contact: {}
servers:
  - url: https://api.mentionlab.io
security: []
tags: []
paths:
  /api/analytics/themes/entity-responses:
    post:
      tags:
        - Analytics - Themes
      summary: >-
        Drill into a brand stance: the AI responses where it was
        discouraged/recommended/…
      description: >-
        Returns the AI responses where one brand earned a given mention_type
        (e.g. discouraged), each with its full text and the brand’s theme
        evidence inside it (the why). entityId is expanded to its merge family.
        Paginated, most recent first. All standard analytics filters apply.
      operationId: ThemesController_getEntityStanceResponses
      parameters:
        - name: x-project-id
          in: header
          description: Project ID to specify the project context
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntityStanceDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityStanceResponse'
        '400':
          description: >-
            The request failed validation — the body, query or path parameters
            are malformed or out of range.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: The request is missing valid authentication credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: >-
            The authenticated principal lacks the required permission, or access
            to the requested organisation/project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
components:
  schemas:
    EntityStanceDto:
      type: object
      properties:
        startDate:
          type: string
          description: Start date (inclusive)
          example: '2025-01-01'
        endDate:
          type: string
          description: End date (exclusive)
          example: '2025-02-01'
        countries:
          description: Filter by country codes
          example:
            - BE
            - FR
          type: array
          items:
            type: string
        languages:
          description: Filter by language codes
          example:
            - en
            - fr
          type: array
          items:
            type: string
        models:
          description: Filter by AI models
          example:
            - gpt-4o
            - claude-3-5-sonnet
          type: array
          items:
            type: string
        queryIds:
          description: Filter by query IDs
          example:
            - 3fa85f64-5717-4562-b3fc-2c963f66afa6
          type: array
          items:
            type: string
        hasSources:
          type: string
          description: >-
            Filter by source presence: "sources" (only with sources),
            "no_sources" (only without), "all" (no filter). Legacy true/false
            values are still accepted.
          enum:
            - all
            - sources
            - no_sources
        hasShopping:
          type: string
          description: >-
            Filter by shopping presence: "shopping" (only with shopping),
            "no_shopping" (only without), "all" (no filter). Legacy true/false
            values are still accepted.
          enum:
            - all
            - shopping
            - no_shopping
        queryTagIds:
          description: Filter by query tag IDs (numeric — bigint column)
          example:
            - '42'
          type: array
          items:
            type: string
        execTagIds:
          description: Filter by execution tag IDs
          example:
            - 3fa85f64-5717-4562-b3fc-2c963f66afa6
          type: array
          items:
            type: string
        queryTagGroupIds:
          description: >-
            Filter by query tag group IDs — matches rows carrying any tag filed
            under a selected group. Combines with queryTagIds per queryTagMode.
          example:
            - 3fa85f64-5717-4562-b3fc-2c963f66afa6
          type: array
          items:
            type: string
        execTagGroupIds:
          description: >-
            Filter by execution tag group IDs — matches rows carrying any tag
            filed under a selected group. Combines with execTagIds per
            execTagMode.
          example:
            - 3fa85f64-5717-4562-b3fc-2c963f66afa6
          type: array
          items:
            type: string
        queryTypes:
          type: array
          description: >-
            Filter by query type. Include "untyped" to also match queries
            without a type. Results from since-deleted queries are excluded when
            this filter is set.
          items:
            type: string
            enum:
              - comparative
              - informative
              - perception
              - untyped
        queryTagMode:
          type: string
          description: >-
            Query tag matching mode: "or" matches ANY tag (default), "and"
            matches ALL tags.
          enum:
            - and
            - or
          default: or
        execTagMode:
          type: string
          description: >-
            Execution tag matching mode: "or" matches ANY tag (default), "and"
            matches ALL tags.
          enum:
            - and
            - or
          default: or
        timezone:
          type: string
          description: >-
            IANA timezone for date bucketing and filtering (e.g.
            "Europe/Brussels"). Defaults to UTC.
          example: Europe/Brussels
          default: UTC
        groupBy:
          type: string
          description: >-
            Row grouping level for entity results. "none" = one row per entity,
            "division" = one row per division (entities not in a division get
            their own row), "group" = one row per top-level group (divisions
            roll up into their group). Defaults to "none".
          enum:
            - none
            - division
            - group
        groupByEntityGroup:
          type: boolean
          description: >-
            Deprecated — use groupBy instead. true is equivalent to
            groupBy="group".
          deprecated: true
          example: false
        showAllEntities:
          type: boolean
          description: >-
            Include entities that have only ever been seen in a single AI
            response. These are mostly one-off extraction noise and are hidden
            by default.
          example: false
        entityId:
          type: string
          description: Entity (brand) id — canonical or a merged source.
          example: 550e8400-e29b-41d4-a716-446655440000
        mentionType:
          type: string
          description: Stance (mention_type) to filter on.
          enum:
            - mentioned
            - discussed
            - recommended
            - discouraged
        page:
          type: number
          description: 'Page number (1-based). Default: 1.'
          example: 1
        pageSize:
          type: number
          description: 'Results per page. Default: 10, max: 50.'
          example: 10
      required:
        - entityId
        - mentionType
    EntityStanceResponse:
      type: object
      properties:
        responses:
          type: array
          items:
            $ref: '#/components/schemas/EntityStanceResponseItem'
        page:
          $ref: '#/components/schemas/Paging'
      required:
        - responses
        - page
    ApiErrorResponse:
      type: object
      properties:
        statusCode:
          type: number
          description: HTTP status code of the error.
          example: 400
        message:
          type: string
          description: >-
            Human-readable description of the error. Validation failures return
            an array of per-field validation errors instead of a single string.
          example: Validation failed
        error:
          type: string
          description: Short name of the HTTP error.
          example: Bad Request
      required:
        - statusCode
    EntityStanceResponseItem:
      type: object
      properties:
        aiResponseId:
          type: string
        initiatedAt:
          type: string
          description: When the response was generated (ISO 8601).
        model:
          type: string
          nullable: true
        queryId:
          type: string
          nullable: true
        queryText:
          type: string
          nullable: true
          description: The query prompt text.
        sentiment:
          type: string
          nullable: true
          enum:
            - positive
            - neutral
            - negative
            - mixed
        sentimentScore:
          type: number
          nullable: true
          description: Entity sentiment score 1–100 in this response.
        mentionType:
          type: string
          enum:
            - mentioned
            - discussed
            - recommended
            - discouraged
        text:
          type: string
          nullable: true
          description: Full AI response text.
        reasons:
          description: The brand's theme evidence in this response.
          type: array
          items:
            $ref: '#/components/schemas/StanceReason'
      required:
        - aiResponseId
        - initiatedAt
        - model
        - queryId
        - queryText
        - sentiment
        - sentimentScore
        - mentionType
        - text
        - reasons
    Paging:
      type: object
      properties:
        totalRecords:
          type: number
        limit:
          type: number
        currentPage:
          type: number
        totalPages:
          type: number
        nextPage:
          type: number
        prevPage:
          type: number
      required:
        - totalRecords
        - limit
        - currentPage
        - totalPages
        - nextPage
        - prevPage
    StanceReason:
      type: object
      properties:
        evidenceSpan:
          type: string
          nullable: true
          description: Verbatim quote from the response.
        sentiment:
          type: string
          nullable: true
          enum:
            - positive
            - neutral
            - negative
            - mixed
        themeLabel:
          type: string
          nullable: true
          description: The theme this evidence rolls up to.
      required:
        - evidenceSpan
        - sentiment
        - themeLabel

````