---
title: "Latest industry answers"
method: GET
path: "/org/industries/{id}/answers/latest"
tags: ["Industries"]
---

# Latest industry answers

`GET /org/industries/{id}/answers/latest`

## Request

- Base URL: `https://apiv2.senso.ai/api/v1`
- URL: `https://apiv2.senso.ai/api/v1/org/industries/{id}/answers/latest`
- Auth: API key in header `X-API-Key`

The newest stored answer for each of your industry's prompts, from each AI model at each location, with the full response text — and for every answer, whether it named your brand, where in the answer, and in what tone. This is how you find the prompts the AI answers without you, and read exactly what it says when it does.

Only your organization's own industry can be read here; any other id is a `404`. Requires the GEO product.

Each prompt × model × location has exactly one newest answer, so there is no date window: `since` hides combinations whose newest answer is older than that day rather than returning older answers. Ask "which prompts does this model answer without naming me" with `mentioned=false` and `models` set to that one model — every other model's answer to the same prompt is a separate row, and you have not asked for it.

Answers where the model returned nothing are left out unless you pass `include_empty=true`. An answer with no text names no brands, so it would otherwise read as an answer that left you out.

The same brand is named in one answer as `Rival Bank` and in another as `Rival`; `brands[].key` is the same for both, so you can group on it. Paged, newest first. `limit` and `offset` are validated rather than adjusted: a `limit` above 100 is a `400`, not a silently smaller page.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `mentioned` boolean
- `models` string
- `location` string
- `prompt_ids` string
- `since` string, date
- `include_empty` boolean
- `limit` integer
- `offset` integer

## Response `200`

One page of the industry's newest answers. When the industry has no results yet, or is not included in your plan, `answers` is empty and `notes` says so.

- OrgIndustryAnswersResponse: One page of an industry's newest answers, evaluated for your brand.
  - `total` integer, required: Answers matching every filter, including `mentioned`, across all pages — not the size of this page.
  - `limit` integer, required: The page size applied.
  - `offset` integer, required: The offset applied.
  - `answers` OrgIndustryAnswer[], required: Newest first.
    - `prompt_id` string, uuid, required: The industry prompt's id — what you pass to the import and draft endpoints.
    - `prompt_text` string, required: The question the industry asks the AI models.
    - `model` string, required: The AI model that gave this answer.
    - `location` string, required: The location the answer was collected for.
    - `run_at` string, date-time, required: When the answer was collected.
    - `observation_id` string, required: An opaque, stable id for this answer. Use it to tie an evaluation or a note back to the exact text it was made from.
    - `response_text` string, required: The model's full answer text. Empty when `empty` is true.
    - `empty` boolean, required: Whether the model returned no answer in its most recent run. Such answers are only present when `include_empty=true` was passed.
    - `mentioned` boolean, required: Whether the answer named your brand.
    - `rank` integer, nullable, required: Your brand's ordinal position among the brands the answer named (1 = named first), or null when the answer did not name you.
    - `sentiment` string, nullable, required: The tone of the answer towards your brand — `positive`, `neutral`, or `negative` — or null when the answer did not name you.
    - `sov_pct` number, double, nullable, required: Your share of every brand mention in this one answer, as a percentage from 0 to 100 — or null when the answer named no brands at all. A share of one answer, not a rate; it is not comparable with `brand_mention_rate` on the prompt list, which is a fraction of answers.
    - `brand_count` integer, required: How many distinct brands the answer named. `brands` may list fewer, so a `brand_count` larger than its length tells you the list was shortened.
    - `brands` IndustryAnswerBrand[], required: The brands the answer named, in the order it named them.
      - `key` string, required: A normalized form of the brand's name, the same for every spelling of the brand. Group on this; display `name`.
      - `name` string, required: The brand as the answer named it.
      - `rank` integer, nullable, required: The brand's ordinal position in the answer (1 = named first), when known.
      - `mentions` integer, required: How many times the answer named the brand.
      - `sentiment` string, required: The tone of the answer towards this brand — `positive`, `neutral`, or `negative`.
    - `citation_count` integer, required: How many links the answer cited. `citations` may list fewer.
    - `source_count` integer, required: How many pages the model consulted to write the answer. `citations` may list fewer.
    - `citations` IndustryAnswerCitation[], required: The links the answer cited or consulted, cited ones first.
      - `url` string, required: The link.
      - `domain` string, required: The link's domain.
      - `cited` boolean, required: Whether the answer cited this link in its text.
      - `sourced` boolean, required: Whether the model consulted this link while writing the answer.
      - `source_rank` integer, nullable, required: The link's position among the pages consulted (1 = first), when known.
      - `citation_rank` integer, nullable, required: The link's position among the citations (1 = first), when known.
  - `notes` string[], required: How to read the payload — always that rows are single answers and must never be summed; when the industry has nothing to show you, why `answers` is empty.
  - `definitions` object, required: One-line definitions of the metrics behind this payload, keyed by glossary metric name (not by response field name).

## Other responses

- `400`: The request was malformed — a bad path/query parameter or an invalid value.
- `401`: Missing or invalid credentials — supply a valid org API key in the `X-API-Key` header.
- `403`: The API key is authenticated but not permitted to access this resource.
- `404`: The requested resource does not exist or is not visible to this key.

---

[API](https://skmtc.dev/senso/apis/senso-org-api.md) - [All operations](https://skmtc.dev/senso/apis/senso-org-api/llms.txt) - [OpenAPI document](https://skmtc.dev/senso/apis/senso-org-api/revisions/d789b4fcbe84?raw)
