---
title: "Get competitor reasons (v2)"
method: GET
path: "/api/v1/discovery/competitor-reasons-v2/{id}"
tags: ["discovery"]
deprecated: true
---

# Get competitor reasons (v2)

`GET /api/v1/discovery/competitor-reasons-v2/{id}`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/discovery/competitor-reasons-v2/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://auth.point11.ai/oauth2/authorize`, token URL `https://auth.point11.ai/oauth2/token`)

> **Deprecated.**

Deprecated: use discovery.competitor-reasons.get.v3 (discovery_competitor_reasons_get_v3), which names no lightSrc or darkSrc on a leading icon: a favicon is one image for both themes, src. This version answers the same and names both, never sent. Read why the campaign's brand wins and loses against one competitor over the conversations dated in the 30 days ending its results window's as-of day, with each reason's count and its daily trend (null for a day whose window holds no conversation). An empty answer means the window records no reasons for that competitor.

## Path parameters

- `id` string, uuid, required: Discovery campaign id.

## Query parameters

- `dateRange` string, nullable: Result window: `all`, a preset id, or `yyyy-MM-dd..yyyy-MM-dd`. Omit for the campaign's default window.
- `segments` string[]: Narrows the read to these segments, ANDed: one `axis:id` per axis (any number of distinct `customer:` entries), in canonical axis order. Empty reads the whole dispatch.
- `brandName` string, nullable: The brand whose reasons are read, as the brand map names it; null (the default) reads the campaign's own brand.
- `competitorKey` string, required: The rival's normalized brand key (trimmed, single-spaced, lowercase name).

## Headers

- `Point11-Organization` string, uuid

## Response `200`

Success.

- DiscoveryCompetitorReasonsGetV2Response
  - `data` object, nullable, required: Null when the Competitors read holds no entry for that brand.
    - `option` DiscoveryOption, required
      - `id` string, required
      - `name` string, required
      - `label` string
      - `color` string, required
      - `dataCount` number
      - `leadingIcon` object
        - `src` string, nullable, required
        - `lightSrc` unknown
        - `darkSrc` unknown
        - `fallbackLabel` string, required
        - `fallbackSeed` string, nullable
        - `tone` 'dark' | 'light' | 'mixed' | 'unknown', nullable
        - `transparent` boolean, nullable
        - `needsLightBackplate` boolean, nullable
        - `needsDarkBackplate` boolean, nullable
        - `brandColor` string, nullable: The brand's assigned color when the row is a campaign brand.
        - `status` string, nullable
      - `depth` number
    - `winDrivers` DiscoveryItem2[], required: Why the campaign's brand wins against it.
      - `id` string, required
      - `segmentId` string, required
      - `kind` 'win' | 'loss', required
      - `label` string, required
      - `count` number, required: The as-of window's conversations that gave it.
      - `score` string: The score as it reads, where `count` is not a whole number of conversations.
      - `series` object[]: Its count in each day's window, one point per UTC day.
        - `day` string, date, required: UTC day; the value is its trailing 30-day window's.
        - `value` number, nullable, required: Null where that window holds no interaction.
    - `lossDrivers` DiscoveryItem2[], required: Why the campaign's brand loses to it.
      - `id` string, required
      - `segmentId` string, required
      - `kind` 'win' | 'loss', required
      - `label` string, required
      - `count` number, required: The as-of window's conversations that gave it.
      - `score` string: The score as it reads, where `count` is not a whole number of conversations.
      - `series` object[]: Its count in each day's window, one point per UTC day.
        - `day` string, date, required: UTC day; the value is its trailing 30-day window's.
        - `value` number, nullable, required: Null where that window holds no interaction.
    - `lineage` DiscoveryLineage, required
      - `win` union, required
        - object
          - `metricId` string, required
          - `tables` string[], required
          - `pipelineStage` number, nullable, required
          - `campaignId` string, required
          - `asOf` string, required: The UTC day the results window ends.
          - `days` number, required: The window's length in days.
        - object
          - `metricId` string, required
          - `tables` string[], required
          - `pipelineStage` number, nullable, required
          - `runId` string, required
      - `loss` union, required
        - object
          - `metricId` string, required
          - `tables` string[], required
          - `pipelineStage` number, nullable, required
          - `campaignId` string, required
          - `asOf` string, required: The UTC day the results window ends.
          - `days` number, required: The window's length in days.
        - object
          - `metricId` string, required
          - `tables` string[], required
          - `pipelineStage` number, nullable, required
          - `runId` string, required
    - `conversationCount` integer, required: The as-of window's conversations these reasons are counted from: those naming both brands where one of the two is the brand the conversation recommended. For the campaign's own brand, the conversations discovery.conversations.list.v2 lists with `rival` set to `option.id`.

## Other responses

- `400`: The input, query, or Idempotency-Key is invalid.
- `401`: The bearer is missing, expired, or not accepted.
- `403`: The credential lacks the operation's scope or role, or the operation needs a different door.
- `404`: The resource or organization does not exist for this caller.
- `405`: This path takes another HTTP method, named in `Allow`.
- `409`: The request conflicts with current state or with prior use of its Idempotency-Key.
- `413`: The request, or the answer it asks for, is too large; narrow it.
- `429`: The credential's rate budget is spent; retry after `Retry-After` seconds.
- `500`: An unexpected server failure; retry later. Only `request_id` identifies it.
- `503`: A dependency is temporarily unavailable; retry after `Retry-After` seconds.
- `default`: Another status a product answers for its own refusal (for example `415` for an unsupported attachment); branch on `code`.

---

[API](https://skmtc.dev/point11/apis/point11-api.md) · [All operations](https://skmtc.dev/point11/apis/point11-api/llms.txt) · [OpenAPI document](https://skmtc.dev/point11/apis/point11-api/revisions/36a84c7aca11?raw)
