---
title: "Get results (v5)"
method: GET
path: "/api/v1/research/results-v5/{id}"
tags: ["research"]
deprecated: true
---

# Get results (v5)

`GET /api/v1/research/results-v5/{id}`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/research/results-v5/{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 research.results.get.v7 (research_results_get_v7) for native audio; this version leaves audio out: a question card that showed audio shows no file. Get one Research campaign's results over a date range. Every figure counts the interviews completed on the range's UTC days (All time: every interview), an answer counting toward a question of the current study only when its interview's study asked that question exactly so; results are no time series, so nothing is read as of a day or compared with an earlier window. Answers the range (its days, interviews and customers), one card per question of the current study (the file or video it showed, figure, distribution, headline value with the distinct respondents behind it, the newest run's summary and evidence), the study's headline scorecard, and the newest run's status and coverage. Pass dateRange (by default the last 90 days, widened to All time when they hold no interview), segments to narrow the figures, or runId for one saved run as it ran, with no range.

## Path parameters

- `id` string, uuid, required: The campaign id from research.campaigns.list.v1; optional with runId, whose own campaign is read.

## Query parameters

- `runId` string, uuid: One customer-triggered run, read as it ran; without id its own campaign is read, with id it must be that campaign's. Omit for the date range.

## Headers

- `Point11-Organization` string, uuid

## Response `200`

Success.

- ResearchResultsGetV5Response
  - `campaignId` string, uuid, required
  - `study` 'ad_copy' | 'brand_health' | 'offers' | 'pricing' | 'product' | 'product_launch' | 'sales' | 'custom' | 'product_roadmap' | 'purchasing' | 'competitors', required
  - `description` string, nullable, required: The study's description as its author wrote it under the name in the study editor; null when it has none, as on every study launched before launch kept it.
  - `assumptions` string[], required: The customer assumptions every answer assumes: statements each respondent took as true of themselves for this study only, beside their own profile, in order. A saved run (runId) answers the ones it froze: the study's, and any a backtest's rerun added. Empty when the study states none.
  - `onCalendar` boolean, required: The study runs weekly or monthly, so a settings Save changes it from its next admission day; false for a study that runs once.
  - `runId` string, uuid, nullable, required: The run whose status, coverage and synthesized titles, summaries and quotes the results show: the saved run named, else the newest run with an interview in the date range; null before any run.
  - `runDay` string, date, nullable, required: The UTC day the run started; null before any run.
  - `runStatus` 'running' | 'succeeded' | 'failed' | 'cancelled' | 'partial', nullable, required
  - `runDelayed` boolean, required: The running run is past its phase's maximum wait with no terminal receipt.
  - `analysisRerunnable` boolean, required: The run failed after its interviews were analyzed; research.runs.reanalyze.v1 re-runs its analysis at no interview charge.
  - `coverage` object, nullable, required: The run's interviews owed and delivered; null before any run.
    - `requested` integer, required
    - `reserved` integer, required
    - `attempted` integer, required
    - `completed` integer, required
    - `extracted` integer, required
    - `failed` integer, required
    - `unresolved` integer, required
  - `entry` ResearchEntry, required
    - `id` string, required
    - `sequence` integer, required: The entry's ordinal among its campaign's entries, from 1.
    - `failureReason` string, nullable, required: The code the entry settled with when it failed or was cancelled (for example no_unit_delivered or no_eligible_customers); null otherwise, or when it recorded no code.
    - `progress` ResearchProgress, required: The entry's units, counted from its product's delivered evidence.
      - `unitLabel` 'visit' | 'interview' | 'conversation', required: What one unit of this entry's work is: an Experience visit, a Research interview, a Discovery conversation.
      - `admission` 'entry' | 'unit', required: `entry`: the entry's work is admitted and billed once; `unit`: each unit is.
      - `counts` object, required
        - `admitted` integer, required: Units admitted to run.
        - `delivered` integer, required: Settled units the product counts as delivered.
        - `failed` integer, required: Units that ended without delivering: counted as each one ends where the entry's work is admitted once, and when a unit's own admission settles where each unit is.
        - `open` integer, required: Units that have not ended yet.
      - `outcome` 'running' | 'succeeded' | 'failed' | 'cancelled' | 'partial', required: Running until the entry settles; failed or cancelled when its product settled it so (a failed final result still counts the units it delivered); otherwise counted from the units: succeeded when every admitted unit delivered, partial when some did, failed when none did. An entry its product settled succeeded whose units no longer exist (all counts 0) stays succeeded.
      - `failureReasons` object[], required: Why the failed units failed, one row per reason with how many units it ended. A unit that failed while its admission still runs has no reason until that settles.
        - `reason` string, required
        - `count` integer, required
  - `range` ResearchRange, required
    - `from` string, date, required: The range's first UTC day, never before the campaign's first interview.
    - `to` string, date, required: The range's last UTC day, never past today.
    - `interactionCount` integer, required: The interviews completed on the range's days, under the scope.
    - `customerCount` integer, required: The distinct customers of those interviews.
  - `interactionDays` object, nullable, required: The days of the campaign's first and last interviews, whatever the range; null before its first and on a saved run's results. With a null range, the range holds neither nor any between them.
    - `first` string, date, required: The UTC day of the campaign's first interview.
    - `last` string, date, required: The UTC day of its last.
  - `widenedToAllTime` boolean, required: A dateRange with widenWhenEmpty held no interview, so the figures read All time.
  - `rows` union[], required
    - union
      - object
        - `kind` 'gate', required
        - `title` string, required
        - `base` string, required: The respondents counted, as `n = …`.
      - object
        - `kind` 'question', required
        - `id` string, required: The question id.
        - `badge` string, required
        - `title` string, required
        - `question` string, required
        - `shape` 'open_ended' | 'closed_ended' | 'multi_select' | 'rank' | 'matrix' | 'scale' | 'computer_task': The question's authored type; absent when it has left the instrument.
        - `attachment` object: The file the question introduced to respondents; absent when it introduced none.
          - `artifactId` string, required
          - `filename` string, required
          - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm', required
          - `byteLength` integer, required
        - `average` object: A scale's or matrix's mean rating on its authored range.
          - `value` number, required
          - `max` number, required
        - `summary` string: The shown run's synthesized summary, campaign-wide; absent when it has none.
        - `analysisCoverage` object
          - `aggregateResponses` integer, required
          - `summaryResponses` integer, required
        - `evidence` object[]: The shown run's synthesized evidence quotes, campaign-wide.
          - `label` string, required
          - `quote` string, required
        - `primary` object: The figure the card leads with; absent unanswered.
          - `label` string, required
          - `value` number, required: A whole percent, 0 to 100.
          - `tone` 'positive' | 'neutral' | 'negative', required
          - `averageRank` number: A ranked option's mean position, 1 = first; ranking questions only.
          - `optionIndex` integer: The option's place among the question's authored options, 0 = first; counted choice and ranking figures only.
        - `slices` object[], required
          - `label` string, required
          - `value` number, required: A whole percent, 0 to 100.
          - `tone` 'positive' | 'neutral' | 'negative', required
          - `averageRank` number: A ranked option's mean position, 1 = first; ranking questions only.
          - `optionIndex` integer: The option's place among the question's authored options, 0 = first; counted choice and ranking figures only.
        - `detailTitle` string
        - `details` object[]
          - `label` string, required
          - `value` string, required: The detail's figure as the dashboard reads it.
          - `tone` 'positive' | 'neutral' | 'negative', required
        - `sampleCount` integer: The accepted answers the figure counted: on every range's results, and on a saved run's under a segment.
        - `headline` ResearchHeadline: The figure the card leads with over the date range and the respondents it stands on; absent on a saved run's results and where the range counts no answer to it.
          - `label` string, required: What the figure measures, as the card names it.
          - `unit` 'percent' | 'average', required: A whole percent, or an average on the scale's authored range.
          - `basis` 'share' | 'derived', required: share: one share of its respondents, whose margin is stated; derived: an average or a score, whose precision reads its respondents alone.
          - `max` number, nullable, required: The scale's top value for an average; null for a percent.
          - `value` number, required: The figure over the date range.
          - `n` integer, required: The accepted answers that value counts.
          - `customers` integer, required: Distinct respondents behind those answers: the sample the figure stands on.
  - `scorecard` ResearchScorecard, nullable, required
    - `title` string, required
    - `lead` object, nullable, required: One sentence naming the decision; null without one.
      - `text` string, required
      - `subject` string
    - `tables` object[], required
      - `title` string
      - `rowLabel` string, required
      - `columns` string[], required
      - `rows` object[], required
        - `key` string, required
        - `label` string, required
        - `cells` union[], required: One cell per column.
          - union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object: Nobody in the scope answered.
              - …
            - object: What the cell reads does not exist for its row.
              - …
  - `segments` object[], required: The scope the figures were read under.
    - `axis` 'audience' | 'channel' | 'market' | 'age' | 'householdIncome' | 'education' | 'lifeStage' | 'areaType' | 'companySize' | 'buyerRole' | 'seniority' | 'occupation' | 'job' | 'triggerType' | 'intentStage' | 'language' | 'gender' | 'store' | 'customer', required
    - `id` string, required
    - `label` string: The entry's name as research.campaign-segments.get.v1 lists it (audience, channel and store entries only); absent for any other axis or for a member the campaign's active roster does not hold.

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