# Get visibility index score

Retrieves the visibility index score over time for filtered locations within a date range. Scores are returned per time period with granularity auto-determined by the date range: daily (<=31d), weekly (<90d), monthly (<=365d), or quarterly (>365d). Defaults to the last week if startDate is not provided.

Endpoint: GET /dashboard/visibility-index
Version: 20260701

## Query parameters:

  - `v` (any)
    API version. Defaults to the latest version. Versions older than 20260713 label each period by granularity (weekly '2025 3', monthly and quarterly 2025-3, yearly 2025) instead of returning the ISO start date of the period.

  - `startDate` (any)
    Start date (inclusive) as an ISO-8601 date or date-time, with or without zone/offset (e.g. 2025-01-01, 2025-01-01T14:30:00, 2025-01-01T14:30:00Z, 2025-01-01T14:30:00%2B02:00). Zone-aware values are normalised to UTC. The formats yyyy.MM.dd, dd.MM.yyyy, dd-MM-yyyy HH:mm:ss and dd.MM.yyyy HH:mm:ss are also accepted. Optional for most endpoints — defaults to a period before end date if omitted.

  - `endDate` (any)
    End date (inclusive) as an ISO-8601 date or date-time, with or without zone/offset. Zone-aware values are normalised to UTC. The formats yyyy.MM.dd, dd.MM.yyyy, dd-MM-yyyy HH:mm:ss and dd.MM.yyyy HH:mm:ss are also accepted. Defaults to today.

  - `group` (string)
    Overrides the automatic granularity of the date range. Case-insensitive. When omitted, granularity is derived from the range length. Legacy values DAY, WEEK, MONTH and YEAR are also accepted. HOUR returns the whole range as a single bucket holding the ACTIONS_PHONE hour-of-day profile (phone0..phone23) and is only valid for the ACTIONS_PHONE metric; other endpoints treat it as DAILY.

  - `filterCategory` (string)
    Filter strategy to use for scoping locations

  - `locationIds` (any)
    Comma-separated location IDs (used when filterCategory=location)

  - `businessIds` (any)
    Comma-separated business IDs (used when filterCategory=business)

  - `labels` (any)
    Label names (used when filterCategory=labels)

  - `locationGroupIds` (any)
    Location group IDs (used when filterCategory=location-groups)

  - `excludedLocationIds` (any)
    Comma-separated location IDs to exclude from results

  - `excludedBusinessIds` (any)
    Comma-separated business IDs to exclude from results

  - `excludedLabels` (any)
    Label names to exclude from results

  - `excludedLocationGroupIds` (any)
    Location group IDs to exclude from results

## Response 200 fields (*/*):

  - `status` (any, required)
    Response status
    Example: SUCCESS

  - `response` (object, required)
    Response payload

  - `response.scores` (array, required)
    Visibility scores per time period

  - `response.scores.date` (any, required)
    Start date of the period as an ISO date. API versions older than 20260713 instead get a label formatted by granularity: daily 2025-01-15, weekly '2025 3' (ISO year+week), monthly and quarterly 2025-1, yearly 2025
    Example: 2025-01-01

  - `response.scores.score` (any, required)
    Visibility index score value

  - `response.granularity` (string, required)
    Time period granularity. Auto-determined by the date range span unless overridden by the `group` query parameter.
    Enum: "HOUR", "DAILY", "WEEKLY", "MONTHLY", "QUARTERLY", "YEARLY"

