# Show notes & attributions

Every result carries `notes` (disclaimers and limitations) and `attributions` (the data sources that contributed). This guide shows how to display and store them correctly. [Notes & data sources](/docs/notices) is the field-by-field reference.

## The rules in short

1. **Keep both arrays with the result** wherever you store or forward it. They are part of the result, not metadata you can drop.
2. **Show notes next to the price** they apply to, at least their `message`.
3. **Show `attribution_text` whenever it is present**, wherever you show or redistribute the data it covers. Do not shorten it.
4. **Match on `code` and `source_id`**, never on message text.
5. **Do not assume "no obligations"** when `notice_status` is `pending_review`.

Both arrays are always present and never truncated. An empty array is meaningful: no notes apply beyond the documentation, or no source data is contained (refusals, failures, account and metadata results).

## Notes

A note has a `code`, a `category`, a display-ready `message`, `pointers` into the result and the `source_ids` that caused it:

```json
{
  "code": "estimate_not_offer",
  "category": "disclaimer",
  "message": "This is a statistical estimate for the stated price basis. It is not an offer, an appraisal or a guaranteed transaction price.",
  "pointers": ["/valuation"],
  "source_ids": []
}
```

| `category` | Meaning | How to show it |
| --- | --- | --- |
| `disclaimer` | How the result may be relied on | Near the price, always |
| `limitation` | Where the result does not apply or is weaker | Near the part it points to |
| `legal_notice` | Wording a data source requires you to show | Exactly as given, wherever the data appears |

Notes you will see on valuations today:

| `code` | When |
| --- | --- |
| `estimate_not_offer` | Every valued result |
| `market_specific` | Every valued result: it applies only to its market and currency |
| `synthetic_result` | Test-mode results. Never show a result with this note as a market value |
| `automated_interpretation` | Attributes were interpreted from text or photos |
| `selling_time_is_forecast` | A [selling-time forecast](/docs/selling-time): what the forecast assumes and that it is not a guarantee |
| `market_figures_describe_listings` | A [market & demand](/docs/reference/market) result: the figures are aggregates over tracked listings, left the market is not always a sale, and small numbers are withheld |
| `notices_reconstructed` | An older stored result whose notices were rebuilt from its recorded provenance |

New codes can appear. Show the `message` of any note you do not recognize; that keeps you correct without a code change.

`pointers` are JSON Pointers into the same result, such as `/valuation` or `/price_ratings`. An empty array means the note applies to the whole result. Use them to place the note next to the right part of your UI.

## Attributions

An attribution lists one source that actually contributed, and where:

```json
{
  "source_id": "autouncle_vehicle_catalogue",
  "name": "AutoUncle vehicle catalogue",
  "url": "https://data-services.autouncle.com/docs/catalogue",
  "party": "first_party",
  "role": "vehicle_catalogue",
  "license": { "id": "autouncle_data_services_terms", "name": "AutoUncle Data Services terms", "url": "https://data-services.autouncle.com/legal/terms" },
  "attribution_text": null,
  "notice_status": "pending_review",
  "notice_version": "autouncle_vehicle_catalogue@1",
  "pointers": ["/vehicle/identity/brand", "/vehicle/identity/model", "/vehicle/identity/body"]
}
```

- Only sources that contributed to **this** result are listed. A valued test result cites the catalogue but never the valuation model, because no model contributed.
- `pointers` shows which parts of the result the source contributed to.
- `attribution_text`, when not null, is wording you must display wherever you show or redistribute that data.
- `notice_status: "pending_review"` means the licence and attribution obligations have not been verified yet. Today every source is `pending_review`. Do not conclude that no obligations apply; keep the attribution with the data.
- `license` may be null when no licence reference has been published yet.

## A display pattern

Show the price block, then its notes, then a compact "Data sources" line:

```javascript
// Renders the notes and data sources of a valuation result as plain text lines.
export function noticeLines(result) {
  const lines = [];
  for (const note of result.notes) {
    lines.push(note.message);
  }
  const sources = result.attributions.map((source) => source.attribution_text ?? source.name);
  if (sources.length > 0) {
    lines.push(`Data sources: ${[...new Set(sources)].join("; ")}`);
  }
  return lines;
}
```

This shows every note's message, uses the required `attribution_text` when present and falls back to the source name otherwise. Escape the text for your output format (HTML, PDF) as you would any API data.

In the console, the playground and request log show the same notes and data sources under each result.

## Storing and forwarding results

- **Store** `notes` and `attributions` in the same record as the price. A stored read-back (`GET /v1/valuations/{id}`) and an idempotent replay return the notices that applied when the valuation was made, with `notice_version` identifying the registry revision, even if a source's notice changes later.
- **Forwarding** a result to a customer or another system: include both arrays, or at least every note message and every `attribution_text`.
- **Agents** must keep them too. The MCP server instructs agents to keep notes and attributions with any result they show and never drop attributions to save space.

## Pitfalls

- **Dropping arrays to save space** in a summary, a cache or an LLM context window.
- **Hard-coding today's notes.** New codes and sources will appear; render the `message`.
- **Showing a price without its disclaimer.** `estimate_not_offer` exists so that users do not read an estimate as an offer.

## Next steps

- [Notes & data sources](/docs/notices).
- [Precision & intervals](/docs/precision) for presenting the price itself.
- [Free text and photos](/docs/guides/text-and-photos), which adds the `automated_interpretation` note.
