CaseVine API

Federal litigation screening in one API call. Submit a company or person and get every U.S. federal case they're a party to — normalized, deduplicated, and cached.

Quickstart

Screen a company against every U.S. federal case in one call. Send just a name — nothing else is required:

curl -X POST https://www.casevine.ai/api/v1/parties/search \
  -H "Authorization: Bearer cv_test_YOUR_SANDBOX_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Quiznos"}'

That's the whole happy path. The response includes an entity_confidence score and the list of cases.

Two-step workflow

Start simple, then enrich only if you need to. Most searches resolve cleanly on the first call:

  1. Send the name. POST {"name": "Quiznos"} and read the response.
  2. Check entity_confidence.If it's high and the caseslook right, you're done.
  3. Enrich and retry only when confidence is low or the results look wrong — add one or more enrichment fields (a website, ticker, state, EIN, …) to pin the search to the exact legal entity, then call again.
The base URL is https://www.casevine.ai/api/v1. Authenticate with your API key as a Bearer token (see Authentication).

Getting started

CaseVine screens names against the PACER Case Locator and returns clean, structured JSON. Flat pricing, no PACER fee passthrough, and $0.00 on no-result searches.

1. Get an API key. Create a free account to get a sandbox key instantly, then add a card for a production key. Go to billing →

2. Base URL.

https://www.casevine.ai/api/v1

3. Authenticate with your key as a Bearer token, then make your first call:

curl -X POST https://www.casevine.ai/api/v1/parties/search \
  -H "Authorization: Bearer cv_test_YOUR_SANDBOX_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Acme Robotics", "entity_type": "business"}'

Prefer Postman? Import our collection to try every live endpoint with example requests pre-filled — just set the api_key variable to your key.

Download Postman Collection

Authentication

All requests require your API key in the Authorization header as a Bearer token:

Authorization: Bearer cv_test_YOUR_SANDBOX_KEY

There are two kinds of keys:

KeyPrefixRoutes toNotes
Sandboxcv_test_PACER QA test dataFree, capped at 10 searches. Always visible in your dashboard.
Livecv_live_Production PACER (billable)Shown once at creation, then stored hashed. Rotate from the API Keys page.
Keep keys server-side. If a live key is exposed, rotate it immediately — the old key stops working the moment a new one is issued.

Enrichment fields

Every field below is optional. Send them alongside name to disambiguate a common name and pin the search to a specific legal entity (they drive entity resolution). The stronger the identifier, the higher the resulting entity_confidence.

FieldTypeDescription
entity_typestring"business" (default) or "individual". Steers entity resolution to a corporate vs. individual lookup. "business" also excludes individual/person party records and personal (pr) filings from results; "individual" keeps them. Defaults to business — pass "individual" to screen sole proprietors, executives, or personal guarantors.
ein_or_tax_idstringEmployer Identification Number / tax ID. The highest-confidence entity signal.
websitestringCompany website or domain, e.g. "apple.com".
ticker_symbolstringStock ticker for public companies, e.g. "AAPL".
linkedin_urlstringThe company's LinkedIn page URL.
lei_numberstringLegal Entity Identifier (ISO 17442), a 20-character global entity code.
state_of_incorporationstring2-letter US state where the entity is incorporated, e.g. "DE".
registration_numberstringState business-registration / filing number.
phone_numberstringBusiness phone number.
street_addressstringBusiness street address.
jurisdiction and case_year are not enrichment fields — they are PACER-side filters for narrowing a broad result set. See the Party search request body.

Entity resolution

Common names are ambiguous — "Enron Corp" alone matches thousands of records across dozens of related entities. Before searching PACER, CaseVine resolves your input to a single canonical legal entity using the disambiguation fields you provide.

How it works. When you include signals like an EIN, website, ticker, or state of incorporation, we resolve them to a canonical entity and return an entity_confidence score (0–1):

  • Confidence ≥ 0.80 → we set entity_resolved: true and return the matched canonical_name, entity_confidence, and entity_id.
  • Confidence < 0.80 or no match → entity_resolved: false (any lower-confidence guess is still returned in canonical_name so you can decide).

The search itself always runs against the name you submit, so recall is never reduced — resolution annotatesresults with the identified legal entity rather than replacing your query. (Court party names often differ from a company's registered legal name, so we don't substitute one for the other.)

Best practice: pass the strongest identifier you have (EIN, website, ticker, or state) — it raises confidence and pins the result to the right legal entity.

Entity resolution is rolling out. The disambiguation fields are accepted today and returned in the response; matching accuracy improves as resolution is enabled on your account.

Case Alerts

Case Alerts notify you of new federal litigation involving an entity you watch. Add a company or person as a watched entity and CaseVine re-screens it nightly against production PACER — any newly filed case triggers an alert by email and (if configured) a webhook. This is the ongoing counterpart to a one-off party search: instead of asking "what exists today?" you ask "tell me the moment something new appears."

Case Alerts is available on every plan. Free accounts can watch up to 3 entities; Pro accounts are unlimited. Adding past your plan's cap returns 409. Not to be confused with system monitoring — the status page and health checks that report API uptime.

Add a watched entity

POST /api/monitor/add — records the entity, captures a baseline of its current cases, and starts watching. The optional webhook_url receives new-case payloads.

curl -X POST https://casevine.ai/api/monitor/add \
  -H "Authorization: Bearer cv_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Corporation",
    "type": "business",
    "webhook_url": "https://example.com/hooks/casevine"
  }'

Response:

{
  "monitored": true,
  "entity": {
    "id": "ent_8c31f0",
    "name": "Acme Corporation",
    "type": "business",
    "baseline_case_count": 12,
    "date_added": "2026-07-02T00:00:00Z"
  }
}

List & remove

GET /api/monitor/list returns your watched entities, your limit (null on Pro — unlimited), and how many are active. POST /api/monitor/remove with an id or name stops alerts for an entity while preserving its alert history.

New-case alert payload

When the nightly re-screen finds cases not present in the entity's last snapshot, CaseVine POSTs this to your webhook_url (and sends the same summary by email):

{
  "entity": "Acme Corporation",
  "new_cases": [
    {
      "case_id": "cv_9f2a1c",
      "case_number": "1:26-cv-04821",
      "case_title": "Doe v. Acme Corporation",
      "court_id": "nysd",
      "date_filed": "2026-07-01"
    }
  ]
}

Rate limits & quotas

PlanQuotaData
Sandbox (cv_test_)10 searches totalPACER QA test data
Pro (cv_live_)Metered, $200/mo minimumProduction PACER

When you exceed your quota the API returns 429. Handle it by backing off and retrying later, or upgrade for a higher limit.

Caching saves you money. Every result is cached for 30 days, so repeat queries return instantly — you are never billed twice for the same search, and no-result searches are always free.

Errors

Every error returns a JSON body with an error message and a request_id (also in the x-request-id header) to quote in support requests. Server-side failures additionally include a code.

StatusMeaningWhat to do
400Bad request, or search too broadFix the body, or narrow with disambiguation fields.
401Missing or invalid API keyCheck the Authorization header.
403Access not permitted (e.g. Terms of Service not yet accepted)Sign in to your dashboard to resolve, then retry.
409Conflict — e.g. Case Alerts cap reached, or entity already watchedRemove an entity, or upgrade to Pro for unlimited Case Alerts.
429Quota exceededBack off and retry, or upgrade.
500Internal errorRetry; if it persists, contact us with the request_id.
502Upstream court data source unavailableTransient — retry shortly.

Example error

{
  "error": "Search too broad.",
  "message": "\"Enron Corp\" matches 2341 records across 44 PACER pages. Narrow it with the 'jurisdiction' (cv/cr/bk/ap) and/or 'case_year' filters, or provide a more specific name.",
  "total_pages": 44,
  "total_elements": 2341,
  "entity_resolved": false,
  "request_id": "9f2a1c7e-4b3d-4a1e-9c2f-1d8e5a6b7c3d"
}

Case types

The case_type on each returned case is one of the PACER federal case-type codes below. You can also pass cv, cr, bk, or ap as the jurisdiction filter to narrow a search.

CodeMeaning
cvCivil
bkBankruptcy
crCriminal
apAppellate
mcMiscellaneous
prPersonal / pro-se filing — excluded from results by default (individual matters, not business litigation).
mdMultidistrict litigation (MDL)

Party roles

The party_role on each case describes how the searched party appears in it. Raw PACER role codes are normalized to these values:

RoleMeaning
plaintiffParty bringing a civil action.
defendantParty defending a civil or criminal action.
debtorThe filing party in a bankruptcy case.
creditorA party owed money in a bankruptcy case.
interested partyA non-primary party with a stake in the case.
unknownRole could not be determined from the PACER record.

Status values

Each case's status is derived from its PACER termination date:

StatusMeaning
activeThe case is open — no termination or closed date on record.
closedThe case has a termination / effective-closed date (terminated, discharged, or dismissed).

Sandbox mode

Every account starts with a sandbox key (cv_test_…) — free, no credit card. Use it to build and test your integration end-to-end.

  • Sandbox keys route to PACER's QA environment (realistic test data, not billed).
  • Capped at 10 searches; the response shape is identical to production.
  • Your sandbox key is always visible in the dashboard and can be rotated anytime.

When you're ready, add a card on the billing page to get a production cv_live_ key that searches live federal records.

Code examples

curl -X POST https://www.casevine.ai/api/v1/parties/search \
  -H "Authorization: Bearer cv_test_YOUR_SANDBOX_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Acme Robotics", "entity_type": "business"}'

Changelog

DateChange
Jul 2, 2026Base URL is now https://www.casevine.ai/api/v1. Added a Quickstart, an Enrichment fields reference, and Case type / Party role / Status reference tables.
Jul 2, 2026Renamed the entity-watching feature to Case Alerts (formerly "Monitoring"); "monitoring" now refers only to API/system health. Added a dedicated Case Alerts guide.
Jul 1, 2026Entity resolution fields added to party search; /api/v1 base path with a /api/health endpoint; categorized error codes with request IDs.
v1.0Initial release — party search over PACER with 30-day caching.