Data files and search API

Every list and count on these pages is computed from the JSON files below, rebuilt with the pages; the search box answers from a public JSON API. Both are free to read without an account. The spreadsheets hold the same rows as CSV.

2,914 written decisions from 2,661 cases in the whole mandamus and agency-delay group, the group's newest decided October 30, 2026. Updated November 3, 2026 at 1:24 a.m. CT; the Passim connector counts the live collection, which can differ by the day's additions and retirements (which total to quote). Coverage: of the 1,606 public decisions since January 1, 2025 that a CourtListener and GovInfo search for mandamus and agency delay finds, Passim holds 1,371 (85%), measured November 3, 2026. Some of what that search finds are not mandamus decisions. Tell us about a decision we're missing.

The files

data/decisions.json
The decision list's index: one row for each of the 2,914 written decisions in the group (fields below), newest first.
data/vocabulary.json
The filter values with their labels and counts, the minimum counts, this rebuild, and the path of every other file.
data/run.json
This rebuild: its id, when it finished, how many decisions and suits it holds, and the code it was built with.
data/dockets/court/<court>.json
A court's suits in the docket record (fields below), 65,197 suits in all, one file for each court, listed under each court's files.
data/dockets/year/<year>.json
The same suits by the year they were filed: 2026, 2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011.
data/dockets/endings/<court>.json
The docket entries that record how a court's suits ended (often a text-only remand order), with their text and the remand terms read from it. The suit's own party names, A-numbers and email addresses are replaced with [name], [A-number] and [email].

Each file names the rebuild it belongs to (run), so files from different nights are never mixed. The pages ask for a file with ?v= and the rebuild's id only to keep browsers from showing an old copy; the address without it is the same file.

A decision row (decisions in data/decisions.json)

id, case
The decision's id (its page is /mandamus/decisions/<id>/) and its case's id, the lowest id among the case's decisions. Outcome counts count each case once, by its latest decision.
title, date, court, judge, judge_key
The caption, the decision date, the court's code (dcd), the signing judge and the judge's key (court:name).
agency, forms, relief
The agency the suit is about, the forms or filings at issue, and what the suit asked the court to make the agency do.
disposition, prevailing, motions, side, claim, survived
The ruling on the principal motion, the side that prevailed, the motions decided, whose motion it was, what happened to the delay claim, and whether it survived: a ruling on the government's motion or on cross-motions in which the delay claim goes on.
rulings, issues, nationality
Threshold rulings (section 1252(a)(2)(B), consular nonreviewability, a 221(g) duty, mootness) and whether each was applied or rejected; the issues the decision turns on; the applicant's nationality where stated.
delay_filing, delay_decision
Months from the application to the suit, and to the court's decision (left out where the agency acted before the decision).
trac, source
Whether the decision weighs the TRAC factors (each factor's finding is on the decision's page and in the search API), and the address of the full decision.

A suit row (dockets in the docket files)

id, number, court, claim
The suit's id, its docket number, its court and the claim (mandamus, APA or section 1447(b)). Party names are left out.
filed, ended, days, class
When the suit was filed and ended, the days from the suit's filing to its end, and how it ended (the classes).
agency, forms
The agency a linked decision names, else the lead defendant, and the forms. The docket record seldom names a form, so a suit's forms mostly come from its written decisions: most suits with a form are suits that reached a written decision, whose endings lean toward contested ones. These pages never count suits by form for that reason.
judge, judge_key, cl, decisions, ending
The assigned judge (else a linked decision's), the CourtListener docket id, the linked written decisions with their dates, and how many ending entries the court's endings file holds for the suit.

Each court's files

The search API

GET https://biaedge.com/api/mandamus/search answers JSON. It searches or lists the same group of decisions live, so it can hold decisions added since this rebuild. A browser page on another site cannot call it (it answers cross-origin requests from passimai.com only); a script, a spreadsheet or curl can. Each connection may make 30 searches a minute and 300 an hour.

q
Free text: an issue, a phrase, a party, a caption or a docket number, up to 300 characters. Leave it out to list decisions.
court
One district court, by its code: dcd, txsd, cacd, nysd and so on (the codes the court pages use).
judge
The signing judge's surname or full name, such as Lake or Sim Lake.
agency
The agency the suit is about, or a comma list: USCIS, State (DOS is accepted), NVC, FBI, DHS, EOIR, CBP, ICE, DOL, DOJ.
form
A form or filing, or a comma list: I-485, I-130, I-589, N-400, DS-260, 221(g) and the others in the decision list's menu; I-130:immediate_relative or I-130:preference for the I-130 category; I-918:bona_fide_determination, I-918:waiting_list, I-918:ead or I-918:adjudication for a U visa claim.
disposition
The ruling, or a comma list: granted, granted_in_part, denied, dismissed, dismissed_in_part, moot, remanded, recommendation, transfer, stipulated, discovery, procedural, sanctions, fees, other. delay_claim_survived selects rulings on the government's motion or on cross-motions in which the delay claim goes on, whichever of these they show.
prevailing_party
applicant, government, mixed or none, or a comma list.
min_delay_months
Months from the application to the decision, at least.
max_delay_months
Months from the application to the decision, at most.
date_from
Decided on or after: YYYY, YYYY-MM or YYYY-MM-DD.
date_to
Decided on or before: YYYY, YYYY-MM or YYYY-MM-DD.
limit
Decisions in one answer, 1 to 50 (20 if left out; a larger number is read as 50).
offset
Decisions to skip, 0 to 100: continue with meta.next_offset. A search reaches at most 150 decisions; narrow it with the filters or dates to reach others.

Within a comma list the values are alternatives; different parameters must all hold. A court, agency, form, disposition, prevailing party or date outside the accepted values, or an offset past 100, answers 400 with a message saying what is accepted, and every answer lists them in meta.accepted.

How results are ordered

Without q, the decisions are listed newest first. With q, exact caption and docket-number matches come first, then the best matches for the words, in any year; meta.order says which (newest_first or relevance). To keep to recent decisions, add date_from: ?court=txsd&form=I-485&date_from=2024-10-01. A search here on the decision list reads up to 150 of the best matches and then lists them in the list's own order (newest first unless you choose another).

The answer

records
One for each decision: document_id, title, court, judge, date, docket_number, case_type, snippet (the matched words between **), url (its page here), and facets: defendant_agency, form_types, disposition, prevailing_party, delay_months, trac_findings (each TRAC factor, 1 to 6, found for the applicant or the government, neutral, or not_reached), delay_arguments (the government's last-in-first-out, visa-availability and line-jumping arguments and the side the court took on each, such as line_jumping:government), and _method (each value read by rule or by a model). A field the decision does not state is left out.
meta
total (decisions matching), next_offset (the next page's offset, or null), order, partial (true when the time limit cut the answer short: retry), depth_reached (paging stopped at offset 100, not at the end: narrow the filters), and with a filter on agency, form, disposition, prevailing party or months, facet_counts (counts by each value, each decision counted, not each case).
controlling_authority, warning
The Supreme Court and circuit decisions that bind on the search's questions, each with its ImmCite status, and the note that district decisions are persuasive only.

The API, this site's list and the Passim connector

  • The API runs the Passim connector's search_district_court_decisions with decision_category=mandamus: the same parameters return the same decisions in the same order. The connector searches every kind of district decision unless it is given that category, so its counts are larger without it.
  • The connector also filters by TRAC finding, threshold ruling, whose motion was decided and the delay claim's result, and groups results by court, judge, year, agency or form; the API takes only the parameters above. Different words rank differently, so two searches on one topic share many decisions but not all.
  • The decision list here is this rebuild of the decisions read for these pages. The API and the connector read the live collection, which can hold decisions added or corrected since; the list names a search result that has no page here yet and links it to Passim's reader.
  • Outcome counts on these pages count cases, each by its latest decision; the API's facet_counts and the connector count decisions, each order separately (which total to quote).

These are counts of past written decisions and dockets, not predictions of how any case will be decided. A distribution appears only when at least 5 decisions (or 5 dockets) are behind it; smaller groups are listed, not summarized. How it's counted.