Port API
The Bay for your own code: every company, case and paper we hold, and 75 other public sources, with one key. It is free right now.
In 109,901 cases from 38 sources, counted live.
How to start
curl "https://docket.11river.app/api/bay/v1/cases?admin=stretto&q=settlement&limit=2" \ -H "Authorization: Bearer YOUR_API_KEY"
Showing us your key
Every request needs your key. Send it one of the two ways below, whichever your code makes easier. If a key ever gets out, ask us and we will swap it for a new one.
# Bearer token curl https://docket.11river.app/api/bay/v1/administrators \ -H "Authorization: Bearer YOUR_API_KEY" # or x-api-key header curl https://docket.11river.app/api/bay/v1/administrators \ -H "x-api-key: YOUR_API_KEY"
Not sure which key you are using? Ask GET /me and it tells you what that key can do and how much you have used it.
What you get back
Everything you get back is one of three things: a company, a case, or a paper. Here is what comes with each, and what every part means.
Administrator
adminstring- The short name you use to ask for this one (like stretto)
namestring- The full name
typestring- The kind of work they handle
casesinteger- How many cases we hold for them
documentsinteger- How many papers we hold for them
Case
adminstring- Short name of the company handling the case
case_refstring- The case number. Use it to ask for that case's papers
case_namestring- What the case is called
documents_urlstring- Where to get this case's papers
DocumentEvery paper comes with a link to our copy that works for one hour, plus a link to where it came from.
adminstring- Short name of the company handling the case
doc_idstring- The paper's own number
case_refstring- The case this paper belongs to
titlestring- What the paper is called
bytesinteger | null- How big our copy is
mirroredboolean- True if we keep our own copy
download_urlstring | null- Link to our copy. It stops working after an hour
source_urlstring | null- Where the paper came from
tag_statusstring- Whether we have read this paper yet
tagsobject | null- What we learned from reading it
Document.tagsYou get this once we have read the paper.
doc_typestring- What kind of paper it is, like an Order or a Notice
summarystring- One sentence saying what it says
topicsstring[]- What it is about
doc_datestring- The date on the paper
significancestring- How big a deal it is
text_sourcestring | null- How much of the paper we read to work that out
What you can ask for
Every address below starts with https://docket.11river.app/api/bay/v1
GET /administratorsnoneGET /casesadmin, q, limit (≤200), offsetGET /documentsadmin, case_ref, q, doc_type, limit (≤100), offsetGET /sourcesnoneGET /menoneGET /openapi.jsonpublicWhat an answer looks like
GET https://docket.11river.app/api/bay/v1/documents?admin=stretto&q=settlement&limit=1
{
"total": 41,
"limit": 1,
"offset": 0,
"documents": [
{
"admin": "stretto",
"doc_id": "404072",
"case_ref": "275",
"title": "Settlement Agreement",
"bytes": 248113,
"mirrored": true,
"download_url": "https://…supabase…/sign/… (1-hour signed)",
"source_url": "https://…",
"tag_status": "tagged",
"tags": {
"doc_type": "Settlement Agreement",
"summary": "Stipulation of class settlement and release.",
"topics": ["class settlement", "release"],
"doc_date": "2025-08-14",
"significance": "key",
"text_source": "truncated"
}
}
]
}We are still working through the pile, so some papers have not been read yet. tag_status tells you why one is blank: untagged means we have not gotten to it, and needs_ocr means the paper is a photo of a page with no readable text in it. We say so instead of guessing.
When we have read a paper, text_source says how much of it we read. full means all of it. truncated means only the beginning, so the summary covers the start of the paper and not the rest. ocr means we read it off a photo of the page, which can get a word wrong here and there. Papers we handled before we started tracking this say nothing at all.
Everywhere else we look
Court papers are only part of it. We also read 75 other places, sorted into 13 groups: courts, government offices, banned lists, product recalls, money news, and more. Your one key reaches all of them. To see the whole list from your code, ask GET /sources.
CourtListener, Trellis, Supreme Court, Cornell Legal Information Institute, Find Case Law, Rechtspraak
SEC EDGAR, SEC EDGAR full text search, SEC company facts, eCFR, Federal Register, Regulations.gov, GovInfo, U.S. OSHA, U.S. Department of Labor
Congress.gov, OpenStates, Legistar, California Legislative Information, New York State Senate
OFAC Sanctions (SDN), UN Security Council Consolidated List, UK FCDO Sanctions List, OpenSanctions, SAM.gov, HHS OIG, GLEIF, FDIC, USAspending, International Trade Administration, Wikidata
CFPB, FEC, New York Attorney General, California Attorney General
The Gazette, BODACC
openFDA, ClinicalTrials.gov, NIH PubMed, ORCID, Lens.org
CPSC, SaferProducts.gov, NHTSA
FEMA, EPA ECHO, USGS, National Weather Service, National Interagency Fire Center, OpenStreetMap, OpenFreeMap
CISA, NIST National Vulnerability Database, MITRE ATT&CK, WA AG
U.S. Census Bureau, Census Geocoder, NPPES, FBI Crime Data Explorer, ACLED
FRED, U.S. Treasury, World Bank, European Central Bank, Frankfurter, CoinGecko, National Bureau of Statistics of China
GDELT Project, Internet Archive, Hacker News, Reddit, Olostep, Google Programmable Search, SerpApi
What people build with it
When something goes wrong
Every answer comes with a number that says how it went. There is also a cap on how many times a minute you can ask, so nobody can crowd everyone else out.
200- It worked.
400- Something in your request was written wrong.
401- Your key is missing or wrong.
429- You are asking too fast. Wait a moment, then try again.
5xx- Our side broke. Wait a little, then try again.
Ask for a key
Tell us who you are and what you want to build. We read every request within a day and email your key. It is free right now.