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

# Metrics Over Time

> One point per collection date for the selected score, aggregated across every selected engine and thematic. `score` picks the series: `presence_rate` (domain, domain citation or brand mention presence, %), `influence_score` (share of an AI answer's citations pointing to the project's domain, averaged over answers with at least one citation, a 0-100 score) or `average_position` (average best domain or ranked-citation position, lower is better). Uses an explicit inclusive `date_start`/`date_end` range: no period snapping, no previous-period comparison and no latest-N collect cap. Dates without a finished collect are absent from the series and an empty range returns `[]`; a date whose collects hold nothing in scope reports a zero point (with `total`/`response_count` 0 where the score has a count, which tells it apart from a genuine 0). `metric_type` depends on the score: `presence_rate` accepts `domain`, `citation` or `brand` (default `domain`); `average_position` accepts `domain` or `citation` (default `domain`); `influence_score` accepts none and rejects the parameter with a 422. `brand` only applies to `presence_rate` with `metric_type=brand` and is a 422 otherwise. Each item carries `score`, which tells the item shapes apart.



## OpenAPI

````yaml https://openapi.shareofmodel.ai/swagger-sos.json get /v1/organizations/{organization_id}/workspaces/{workspace_id}/analyses/{project_id}/search/metrics-over-time
openapi: 3.0.3
info:
  title: Share Of Model API
  version: v1
  description: >-
    ## Search



    The Share of Search API provides visibility, presence, and ranking metrics
    for tracked

    search and AI engine sources. Use it to analyse how a project performs
    across keywords,

    thematics, competitors, and ranked URLs over time.


    For the previous version of the API, see the [v1
    documentation](https://api.shareofsearch.jplus.io/docs/v1).
servers:
  - description: Search - Production API
    url: https://api.shareofsearch.jplus.io/
security: []
tags:
  - name: Projects
    description: >-
      Manage analyses (projects) within a workspace. Create new analyses and
      list existing ones.
  - name: Collects
    description: >-
      Access data collection runs and their raw results. List collect runs for
      an analysis, or retrieve the raw data captured during each run: domain
      rankings, brand mentions, keyword insights, and LLM/SERP responses.
  - name: Overview Metrics
    description: >-
      High-level, aggregated metrics that summarise the overall performance of
      an analysis. Use these endpoints to get a quick picture of visibility,
      presence, andranking across all keywords and sources.
  - name: Metrics
    description: >-
      Detailed, per-entity metrics for deep-diving into specific aspects of an
      analysis. Break down performance by domain, brand, keyword, URL, or
      competitor.
  - name: Insights
    description: >-
      Cross-project KPIs aggregated at the workspace level. These endpoints
      consolidate metrics from all active projects within a workspace to provide
      a unified view of visibility, mentions, citations, sentiment, and ranking.
  - name: Shopping
    description: >-
      Shopping-specific metrics for analyses that track product listings in
      shopping engines. Measure product visibility, pricing, merchant coverage,
      and share of shelf across all tracked keywords and sources.
  - name: Ads
    description: >-
      Sponsored-ad performance across tracked prompts and engines, including
      coverage, advertiser diversity, brand presence, and share of ad voice.
  - name: Creators
    description: >-
      YouTube creators cited as sources in AI-engine search results, enriched
      with channel metrics and an Influence Score. Browse creators across every
      project in a workspace, narrowed by country, engine, brand, category,
      analysis, and persona filters.
  - name: Video Analyses
    description: >-
      On-demand LLM analysis of an already-cited YouTube video: why it works as
      a citation source, the brands it treats, and an internal creator
      pre-brief. Price a selection before committing to it, trigger the
      analyses, and read the results.
  - name: CSV Export
    description: >-
      Generic CSV export gateway shared across features. `export_type` selects
      which dataset to export; each feature registers its own export types and
      usecases on the same CsvExportUsecase base rather than duplicating the
      CSV-writing/validation mechanics.
paths:
  /v1/organizations/{organization_id}/workspaces/{workspace_id}/analyses/{project_id}/search/metrics-over-time:
    get:
      tags:
        - Overview Metrics
      summary: Metrics Over Time
      description: >-
        One point per collection date for the selected score, aggregated across
        every selected engine and thematic. `score` picks the series:
        `presence_rate` (domain, domain citation or brand mention presence, %),
        `influence_score` (share of an AI answer's citations pointing to the
        project's domain, averaged over answers with at least one citation, a
        0-100 score) or `average_position` (average best domain or
        ranked-citation position, lower is better). Uses an explicit inclusive
        `date_start`/`date_end` range: no period snapping, no previous-period
        comparison and no latest-N collect cap. Dates without a finished collect
        are absent from the series and an empty range returns `[]`; a date whose
        collects hold nothing in scope reports a zero point (with
        `total`/`response_count` 0 where the score has a count, which tells it
        apart from a genuine 0). `metric_type` depends on the score:
        `presence_rate` accepts `domain`, `citation` or `brand` (default
        `domain`); `average_position` accepts `domain` or `citation` (default
        `domain`); `influence_score` accepts none and rejects the parameter with
        a 422. `brand` only applies to `presence_rate` with `metric_type=brand`
        and is a 422 otherwise. Each item carries `score`, which tells the item
        shapes apart.
      operationId: get_metrics_over_time
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            title: Organization Id
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            title: Workspace Id
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            title: Project Id
        - name: score
          in: query
          required: true
          schema:
            allOf:
              - $ref: '#/components/schemas/ScoreTimeseriesType'
            description: Score to return one point per collection date for.
          description: Score to return one point per collection date for.
        - name: metric_type
          in: query
          required: false
          schema:
            enum:
              - domain
              - citation
              - brand
            type: string
            nullable: true
            description: >-
              Which records the score is computed over. `presence_rate`: domain,
              citation or brand (default domain). `average_position`: domain or
              citation (default domain). `influence_score`: not accepted.
            title: Metric Type
          description: >-
            Which records the score is computed over. `presence_rate`: domain,
            citation or brand (default domain). `average_position`: domain or
            citation (default domain). `influence_score`: not accepted.
        - name: brand
          in: query
          required: false
          schema:
            type: string
            nullable: true
            description: >-
              Brand override for `presence_rate` with `metric_type=brand`;
              defaults to the project brand terms. Rejected with a 422 for any
              other combination.
            title: Brand
          description: >-
            Brand override for `presence_rate` with `metric_type=brand`;
            defaults to the project brand terms. Rejected with a 422 for any
            other combination.
        - name: date_start
          in: query
          required: true
          schema:
            type: string
            format: date
            description: Start of the date range (YYYY-MM-DD).
            title: Date Start
          description: Start of the date range (YYYY-MM-DD).
        - name: date_end
          in: query
          required: true
          schema:
            type: string
            format: date
            description: End of the date range (YYYY-MM-DD, inclusive).
            title: Date End
          description: End of the date range (YYYY-MM-DD, inclusive).
        - name: sources
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/SourcesEnum'
            nullable: true
            title: Sources
        - name: thematics
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              format: uuid
            nullable: true
            description: Filter by a list of thematic IDs
            title: Thematics
          description: Filter by a list of thematic IDs
        - name: keyword_type
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/KeywordOverviewMetricTypeEnum'
            nullable: true
            description: Filter by a list of keyword types
            title: Keyword Type
          description: Filter by a list of keyword types
        - name: funnel_stages
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/FunnelStage'
            nullable: true
            description: Filter by a list of Funnel Stages
            title: Funnel Stages
          description: Filter by a list of Funnel Stages
        - name: persona_ids
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
            nullable: true
            description: Filter by a list of persona IDs
            title: Persona Ids
          description: Filter by a list of persona IDs
        - name: topic_ids
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
            nullable: true
            description: Filter by a list of topic IDs
            title: Topic Ids
          description: Filter by a list of topic IDs
        - name: get_neutrals
          in: query
          required: false
          schema:
            type: boolean
            nullable: true
            description: >-
              Filter by to get results related to neutral prompts, without
              weakness or strength
            title: Get Neutrals
          description: >-
            Filter by to get results related to neutral prompts, without
            weakness or strength
        - name: strength_ids
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
            nullable: true
            description: Filter by a list of strength IDs
            title: Strength Ids
          description: Filter by a list of strength IDs
        - name: weakness_ids
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
            nullable: true
            description: Filter by a list of weakness IDs
            title: Weakness Ids
          description: Filter by a list of weakness IDs
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:
                    - $ref: '#/components/schemas/PresenceRateTimeseriesItem'
                    - $ref: '#/components/schemas/InfluenceScoreTimeseriesItem'
                    - $ref: '#/components/schemas/AveragePositionTimeseriesItem'
                  discriminator:
                    propertyName: score
                    mapping:
                      presence_rate:
                        $ref: '#/components/schemas/PresenceRateTimeseriesItem'
                      influence_score:
                        $ref: '#/components/schemas/InfluenceScoreTimeseriesItem'
                      average_position:
                        $ref: '#/components/schemas/AveragePositionTimeseriesItem'
                title: Response Get Metrics Over Time
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    ScoreTimeseriesType:
      type: string
      enum:
        - presence_rate
        - influence_score
        - average_position
      title: ScoreTimeseriesType
      description: Scores served by the unified scores-over-time endpoint.
    SourcesEnum:
      type: string
      enum:
        - Bing
        - BingAIO
        - ChatGPT
        - Perplexity
        - Google
        - GoogleAIO
        - GoogleAIMode
        - Claude
        - Gemini
        - AmazonRufus
        - Grok
        - Copilot
        - Mistral
      title: SourcesEnum
    KeywordOverviewMetricTypeEnum:
      type: string
      enum:
        - Generic
        - Brand
      title: KeywordOverviewMetricTypeEnum
    FunnelStage:
      type: string
      enum:
        - ToFu
        - MoFu
        - BoFu
      title: FunnelStage
    PresenceRateTimeseriesItem:
      properties:
        score:
          type: string
          enum:
            - presence_rate
          title: Score
          description: 'Discriminator: the score this item belongs to.'
        collection_date:
          type: string
          title: Collection Date
          description: Collection date in YYYY-MM-DD format.
        metric_type:
          type: string
          enum:
            - domain
            - citation
            - brand
          title: Metric Type
          description: Presence metric selected by the request.
        value:
          allOf:
            - $ref: '#/components/schemas/Metric'
          description: >-
            Presence rate (%) on this date, across every selected engine and
            thematic. Always numeric: a date whose collects held nothing in
            scope reports 0 with total 0, which is what distinguishes it from a
            genuine 0% over a non-zero total.
        total:
          type: integer
          title: Total
          description: Distinct eligible keyword/collect/engine observations on this date.
        occurrences:
          type: integer
          title: Occurrences
          description: Distinct observations containing the matching domain or brand.
      type: object
      required:
        - score
        - collection_date
        - metric_type
        - value
        - total
        - occurrences
      title: PresenceRateTimeseriesItem
    InfluenceScoreTimeseriesItem:
      properties:
        score:
          type: string
          enum:
            - influence_score
          title: Score
          description: 'Discriminator: the score this item belongs to.'
        collection_date:
          type: string
          title: Collection Date
          description: Collection date in YYYY-MM-DD format.
        value:
          allOf:
            - $ref: '#/components/schemas/Metric'
          description: >-
            Influence score (0-100) of the project's domain on this date, across
            every selected engine and thematic: the mean, over every AI answer
            holding at least one citation, of the share of that answer's
            citations pointing to the project's domain. Always numeric: a date
            whose collects held no citation in scope reports 0 with
            response_count 0.
        response_count:
          type: integer
          title: Response Count
          description: >-
            AI answers (keyword/collect/engine) holding at least one citation on
            this date.
      type: object
      required:
        - score
        - collection_date
        - value
        - response_count
      title: InfluenceScoreTimeseriesItem
    AveragePositionTimeseriesItem:
      properties:
        score:
          type: string
          enum:
            - average_position
          title: Score
          description: 'Discriminator: the score this item belongs to.'
        collection_date:
          type: string
          title: Collection Date
          description: Collection date in YYYY-MM-DD format.
        metric_type:
          type: string
          enum:
            - domain
            - citation
          title: Metric Type
        value:
          allOf:
            - $ref: '#/components/schemas/Metric'
          description: >-
            Rounded average best position across selected engines. Zero means no
            positions.
      type: object
      required:
        - score
        - collection_date
        - metric_type
        - value
      title: AveragePositionTimeseriesItem
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    Metric:
      properties:
        value:
          type: number
          title: Value
          description: Current value for the selected period.
        prev_value:
          type: number
          nullable: true
          title: Prev Value
          description: >-
            Value for the previous comparable period. Null when no comparison
            period is available.
        unit:
          type: string
          nullable: true
          title: Unit
          description: >-
            Unit of the metric (e.g. '%', 'ms'). Null when the value is
            dimensionless.
      type: object
      required:
        - value
      title: Metric
    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:
    HTTPBearer:
      type: http
      scheme: bearer

````