---
title: "Get Bill Evidence"
method: GET
path: "/api/v1/bills/{bill_id}/evidence"
tags: ["bills"]
---

# Get Bill Evidence

`GET /api/v1/bills/{bill_id}/evidence`

## Request

- Base URL: `https://api.billcommons.org`
- URL: `https://api.billcommons.org/api/v1/bills/{bill_id}/evidence`
- Auth: none declared

A citable evidence packet for one bill.

This is the endpoint the MCP tool's `permalink` and `download_url` point
at, so a packet quoted in a report resolves for a human reader instead of
being a UUID stranded in an agent transcript.

The `snapshot_id` is computed by `billcommons_shared.evidence`, the same
module the MCP tool uses. That sharing is the point: if the two surfaces
computed it independently they would eventually disagree about whether a
bill had changed, which is worse than not offering the id at all.

The retained official comparison uses the same bounded reader as MCP.
Its capture times describe retained evidence, not current freshness, and
an unavailable comparison does not establish that the records match.

Returned as a raw JSONResponse rather than through a response_model so the
payload the caller downloads is byte-identical to the one that was hashed.

## Path parameters

- `bill_id` string, uuid, required

## Query parameters

- `download` boolean: Serve as a file attachment named after the bill and snapshot.
- `question` string, nullable: What this packet was assembled to answer; echoed back into the artifact.

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/billcommons/apis/bill-commons-api.md) · [All operations](https://skmtc.dev/billcommons/apis/bill-commons-api/llms.txt) · [OpenAPI document](https://skmtc.dev/billcommons/apis/bill-commons-api/revisions/bfb8cd50a317?raw)
