---
title: "Get opinions"
method: POST
path: "/opinions/get"
---

# Get opinions

`POST /opinions/get`

Retrieve full opinion data by ID, citation, or docket number. Supports bulk reads of up to 100 items per request.

Provide exactly one of `opinion_ids`, `citations`, or `docket` (not multiple).

**Lookup methods:**
- `opinion_ids` - Direct lookup by opinion ID (up to 100)
- `citations` - Lookup by reporter citation, case-insensitive (up to 100)
- `docket` - Lookup by docket number + court (single lookup, may return multiple opinions)

When using `citations` or `docket`, a lookup may match multiple opinions (e.g., majority and dissent from the same case). The response includes `citation_matches` or `docket_matches` arrays showing which lookups matched which opinion IDs.

## Request body

- object
  - `opinion_ids` string[] — Array of opinion IDs to retrieve
  - `citations` string[] — Array of citation strings to look up (case-insensitive)
  - `docket` DocketLookup — Lookup by docket number and court. Requires docket_number and either court_id or court_abbreviation.
    - `docket_number` string, required — The docket number (e.g., "19-1392", "1:23-cv-01234")
    - `court_id` string — Court identifier (e.g., "scotus", "ca9", "nysd")
    - `court_abbreviation` string — Court citation abbreviation (e.g., "SCOTUS", "9th Cir.", "S.D.N.Y.")
  - `include_content` boolean — Include full HTML content
  - `include_detailed_treatments` boolean — Include citator treatments

## Response `200`

Opinion data

- object
  - `opinions` OpinionFull[]
    - `id` string — Opinion identifier
    - `case_name` string — Case name/caption
    - `midpage_url` string, uri — Canonical public Midpage opinion page suitable for sharing with unauthenticated users.
    - `court_id` string — Court identifier
    - `court_abbreviation` string — Citation abbreviation
    - `docket_number` string — Court docket number
    - `date_filed` string, date — Filing date
    - `state` string, nullable — State name (null for federal courts)
    - `publish_status` 'published' | 'unpublished' | 'unknown' | 'in_chambers' | 'separate' | 'errata' | 'relating_to' — Publication status for the opinion. Missing or uncertain metadata is returned as unknown.
    - `judge_name` string — Authoring judge
    - `citations` Citation[]
      - `cited_as` string — Full citation string
      - `volume` string — Reporter volume
      - `reporter` string — Reporter abbreviation
      - `page` string — Starting page
    - `citation_count` integer — Number of times this opinion is cited by other opinions (count of rows in opinions.opinion_relations where cited_id = opinion ID)
    - `overall_treatment` 'Negative' | 'Caution' | 'Neutral' | 'null', nullable — Most negative treatment category from all citing opinions. Always returned. Priority: Negative > Caution > Neutral > null (no treatment data).
    - `treatments` Treatment[] — Citator treatments (only included if include_detailed_treatments=true)
      - `citing_id` string — ID of opinion citing this one
      - `treatment_category` string — Treatment type
      - `treatment_description` string — Detailed treatment
      - `is_authoritative` boolean — Whether authoritative
      - `supporting_quote` string — Quote supporting the treatment
    - `html_content` string — Full opinion text in HTML (only included if include_content=true)
  - `citation_matches` CitationMatch[] — Only present when looking up by `citations`. Shows which citations matched which opinion IDs.
    - `citation` string — The citation string from the request
    - `opinion_id` string — The matched opinion ID
  - `docket_matches` DocketMatch[] — Only present when looking up by `docket`. Shows which opinions matched.
    - `docket_number` string — The docket number that matched
    - `court_id` string — Court identifier
    - `court_abbreviation` string — Court citation abbreviation
    - `opinion_id` string — The matched opinion ID

## Other responses

- `400` — Bad request

## Changes

- **2026-07-26** `8d436f13cd7e` — 1 info
  - added the optional property `opinions/items/midpage_url` to the response with the `200` status

[Change history](https://skmtc.dev/midpage/apis/midpage-data-services-api/changes/opinions/get/post.md)

---

[API](https://skmtc.dev/midpage/apis/midpage-data-services-api.md) · [All operations](https://skmtc.dev/midpage/apis/midpage-data-services-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/midpage/midpage-data-services-api/revisions/8d436f13cd7e/schema)
