---
title: "List revenue lines (v4)"
method: GET
path: "/api/v1/business/revenue-lines-v4"
tags: ["business"]
---

# List revenue lines (v4)

`GET /api/v1/business/revenue-lines-v4`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/business/revenue-lines-v4`
- 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`)

List every product (a revenue line: revenueLineId) with market assumptions in Tools › Products, for the organization or one business profile, at company scope (locationKey null) and each location, valued today. Every dollar is a share of aiInfluencedMarketUsd (SAM × AI influence, a year); aiInfluencedSalesUsd is annual sales × AI influence, the brand's own. winRate pools every Discovery campaign's measurement on that exact scope; winRatePoint (aiInfluencedMarketUsd ÷ 100, basis always ceiling), influencedUsd (winRatePoint × win rate; may exceed aiInfluencedSalesUsd) and influenceableUsd (winRatePoint × 100) are null, never zero, without a measurement. counted: whether the row enters totals (company scope when the company line was measured, else each measured location, never both). At every scope, Experience pools every Experience campaign's interactions on the site in the 30 UTC days ending today: siteSuccess (passed of judged journeys), experienceScore (0 to 100, scores weighted by judged journeys), and over matched pairs (one customer's journeys on our site and a competitor's, same cycle and device) matchedPairs, ourMatchedScore, competitorScore and gapPts (ours − theirs). experiencePoint (aiInfluencedMarketUsd ÷ 100) and experienceUsd (experiencePoint × gapPts; needs no Discovery measurement) are stated at company scope only, null without a pair scored on both sides. measuredBy names the campaigns pooled. A modeled annual estimate, not booked sales.

## Query parameters

- `limit` integer: Number of items to return (1–1000)
- `cursor` string: Opaque cursor returned as nextCursor by the previous page
- `businessProfileId` string, uuid: Omit for every profile.

## Headers

- `Point11-Organization` string, uuid

## Response `200`

Success.

- BusinessRevenueLinesListV4Response
  - `data` object[], required
    - `businessProfileId` string, uuid, required
    - `locationKey` string, nullable, required: Null at company scope.
    - `revenueLineId` string, required
    - `name` string, required
    - `annualSalesUsd` number, required
    - `aiInfluencePct` number, required
    - `serviceableAvailableMarketUsd` number, required: SAM: annual sales ÷ market share.
    - `aiInfluencedSalesUsd` number, required: Annual sales × AI influence: the brand's own sales AI assistants influence.
    - `aiInfluencedMarketUsd` number, required: SAM × AI influence, the line's AI-influenced market a year: one point of a rate is a hundredth of it.
    - `winRate` object, nullable, required
      - `successes` integer, required
      - `trials` integer, required
      - `ratePct` number, required
    - `siteSuccess` object, nullable, required
      - `successes` integer, required
      - `trials` integer, required
      - `ratePct` number, required
    - `winRatePoint` object, nullable, required: One point of winRate: aiInfluencedMarketUsd ÷ 100; null without a Discovery measurement.
      - `pointValueUsd` number, required: Dollars one point of the rate is worth on the line.
      - `basis` 'ceiling', required: The bound that sets it: always ceiling, the AI-influenced market ÷ 100, whatever the rate.
    - `influencedUsd` number, nullable, required: winRatePoint × win rate: the share of the AI-influenced market the brand's wins capture, a year.
    - `influenceableUsd` number, nullable, required: winRatePoint × 100: revenue influenced at a 100% win rate.
    - `counted` boolean, required
    - `measuredBy` object[], required
      - `campaignId` string, uuid, required
      - `product` 'discovery' | 'experience', required
    - `experienceScore` number, nullable, required: The line's Experience Score (0 to 100): the mean of the Experience campaigns' scores on the line, each weighted by its judged journeys; a campaign with no score is left out.
    - `matchedPairs` integer, required: Matched pairs the gap rests on: one per customer journey on our website matched to the same customer's on one competitor's, so a customer who shopped three competitors is three pairs.
    - `ourMatchedScore` number, nullable, required: Our Experience Score averaged over the matched pairs.
    - `competitorScore` number, nullable, required: The competitors' Experience Scores averaged over the same matched pairs.
    - `gapPts` number, nullable, required: ourMatchedScore less competitorScore, in points.
    - `experiencePoint` object, nullable, required: One point of Experience Score gap: aiInfluencedMarketUsd ÷ 100; null at a location and without a matched pair scored on both sides.
      - `pointValueUsd` number, required: Dollars one point of the rate is worth on the line.
      - `basis` 'ceiling', required: The bound that sets it: always ceiling, the AI-influenced market ÷ 100, whatever the rate.
    - `experienceUsd` number, nullable, required: experiencePoint × gapPts, plus or minus; null at a location, and when no matched pair has a score on both sides.
  - `nextCursor` string, nullable, required

## 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)
