API Documentation

Settlement Data API

Public REST endpoints and a CC-BY-4.0 JSON-LD open data feed for the SetCalc personal injury settlement and verdict database.

Last updated 2026-05-13

Overview

The SetCalc API provides programmatic access to the personal injury settlement and verdict database. Four endpoints are available.

  • GET /api/verdicts for browsing and filtering individual case records with pagination.
  • GET /api/verdicts/stats for aggregate distribution statistics including percentiles, source mix, and authoritative reference benchmarks.
  • GET /api/verdicts/feed.json for the full Schema.org Dataset JSON-LD feed under a CC-BY-4.0 license. Recommended for bulk use and AI crawlers.
  • POST /api/submit-case-result for attorney case submissions, rate-limited and manually reviewed.

For background on how the data is sourced and categorized, see the sources and methodology page.

License and attribution

The aggregated dataset feed is licensed under Creative Commons Attribution 4.0 International (CC-BY-4.0). Attribution is required. Suggested citation:

SetCalc. Personal Injury Settlement and Verdict Database.
https://setcalc.com/personal-injury-settlements-and-verdicts.
Licensed CC-BY-4.0.

Individual case records may carry additional source citations (CourtListener opinions, Law360 reports, attorney submissions, court docket URLs). When redistributing a specific record, preserve its source and sourceUrl fields.

Base URL and conventions

  • Base URL: https://setcalc.com
  • All responses are JSON, encoded as UTF-8.
  • No authentication is required for any read endpoint.
  • The JSON-LD feed serves Access-Control-Allow-Origin: * and is edge-cached for one hour with a 24-hour stale-while-revalidate window. Browse and stats endpoints are not cached.
  • Errors are returned as { "success": false, "error": "reason" } with an appropriate HTTP status code (400 for validation, 429 for rate-limiting, 503 for database errors).
  • Aggregate bulk-volume sources (NPDB, state workers compensation, federal RECAP dockets, class action aggregators) are excluded by default from the browse endpoint and feed, so the curated case rows remain the public face. Pass ?includeAggregate=true or ?source=... to opt in.
GET/api/verdicts

Browse and filter case records with pagination. Returns curated cases by default. Best for building search interfaces or fetching a small slice of records.

Query parameters

ParameterTypeDefaultDescription
pageinteger1Result page number. Minimum 1.
limitinteger20Records per page. Clamped to 1 through 50.
statestringoptionalFilter by state, e.g. California.
injuryTypestringoptionalFilter by injury category, e.g. Whiplash, Back Injury, TBI.
practiceAreastringoptionalFilter by practice area, e.g. Car Accident, Slip and Fall.
resultTypestringoptionalEither verdict or settlement.
yearintegeroptionalExact year the case was settled or decided.
minAmountintegeroptionalDollar floor for outcome amount.
maxAmountintegeroptionalDollar ceiling for outcome amount.
sourcestringoptionalOverride default aggregate exclusion and filter to a single source value.
includeAggregatebooleanfalseWhen true, includes bulk aggregate datasets (NPDB, state court records, RECAP dockets) in results.
searchstringoptionalCase-insensitive regex search across caseTitle and description.
sortstringamountSort field. Common values: amount, year.
orderstringdescEither asc or desc.

Example request

curl 'https://setcalc.com/api/verdicts?state=California&injuryType=Whiplash&limit=2'

Example response (truncated)

{
  "verdicts": [
    {
      "_id": "...",
      "caseTitle": "Doe v. Acme Trucking",
      "state": "California",
      "county": "Los Angeles",
      "injuryType": "Whiplash",
      "practiceArea": "Car Accident",
      "amount": 45000,
      "resultType": "settlement",
      "year": 2024,
      "description": "Rear-end collision on I-405 resulting in cervical strain and lost wages.",
      "source": "News",
      "sourceUrl": "https://www.law360.com/...",
      "submittedByFirm": null
    }
  ],
  "total": 87,
  "page": 1,
  "limit": 2,
  "totalPages": 44,
  "filterOptions": {
    "states": ["California", "Texas", "..."],
    "injuryTypes": ["Whiplash", "TBI", "..."],
    "practiceAreas": ["Car Accident", "..."],
    "years": [2024, 2023, "..."]
  }
}

Note: filterOptions is only returned on page 1 with no state, injuryType, or practiceArea filter set.

GET/api/verdicts/stats

Aggregate distribution statistics over the full database, including bulk aggregate sources that are hidden from the browse endpoint. Use this to compute realistic medians, percentile bands, and source-mix breakdowns for a state, injury type, or practice area.

Query parameters

ParameterTypeDefaultDescription
statestringoptionalFilter to a single state.
injuryTypestringoptionalFilter to one injury category.
practiceAreastringoptionalFilter to one practice area.
resultTypestringoptionalverdict or settlement.
yearMinintegeroptionalLower bound on year (inclusive).
yearMaxintegeroptionalUpper bound on year (inclusive).
sourcestringoptionalFilter to a single source enum value.

Example request

curl 'https://setcalc.com/api/verdicts/stats?state=Texas&practiceArea=Car%20Accident'

Example response (truncated)

{
  "count": 142,
  "avg": 287500,
  "min": 1200,
  "max": 12500000,
  "p10": 8500,
  "p25": 22000,
  "median": 68000,
  "p75": 245000,
  "p90": 950000,
  "yearMin": 2003,
  "yearMax": 2025,
  "buckets": [
    { "floor": 0, "count": 12 },
    { "floor": 10000, "count": 28 },
    { "floor": 25000, "count": 41 },
    { "floor": 75000, "count": 30 },
    { "floor": 250000, "count": 19 },
    { "floor": 1000000, "count": 8 },
    { "floor": 5000000, "count": 4 }
  ],
  "sourceMix": [
    { "source": "News", "count": 92 },
    { "source": "Attorney Submission", "count": 31 },
    { "source": "RECAP_DOCKET", "count": 19 }
  ],
  "filter": { "state": "Texas", "practiceArea": "Car Accident" },
  "referenceStats": { "...": "..." }
}

Note: Percentiles use MongoDB's approximate $percentile aggregation. Bucket boundaries are 0, 10K, 25K, 75K, 250K, 1M, 5M, and above.

GET/api/verdicts/feed.json

The full Schema.org Dataset JSON-LD feed of approved curated records. CC-BY-4.0 licensed. Recommended for bulk use, AI crawlers, and research projects. Bulk aggregate sources are excluded so the feed reflects the curated case-row database.

Query parameters

None. The feed is a single endpoint that returns the entire curated dataset wrapped in a Schema.org Dataset envelope.

Example request

curl 'https://setcalc.com/api/verdicts/feed.json'

Example response (truncated)

{
  "@context": "https://schema.org",
  "@type": "Dataset",
  "name": "SetCalc Personal Injury Verdict and Settlement Database (Public Feed)",
  "url": "https://setcalc.com/personal-injury-settlements-and-verdicts",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "creator": { "@type": "Organization", "name": "SetCalc", "url": "https://setcalc.com" },
  "publisher": { "@type": "Organization", "name": "SetCalc", "url": "https://setcalc.com" },
  "isAccessibleForFree": true,
  "inLanguage": "en-US",
  "encodingFormat": "application/json",
  "spatialCoverage": { "@type": "Place", "name": "United States" },
  "temporalCoverage": "1973-01-01/..",
  "recordCount": 2991,
  "generatedAt": "2026-05-13T18:00:00.000Z",
  "citationFormat": "SetCalc. Personal Injury Verdict and Settlement Database. ...",
  "data": [
    {
      "id": "...",
      "caseTitle": "Doe v. Acme Trucking",
      "state": "California",
      "injuryType": "Whiplash",
      "practiceArea": "Car Accident",
      "amount": 45000,
      "resultType": "settlement",
      "year": 2024,
      "source": "News",
      "sourceUrl": "https://www.law360.com/..."
    }
  ]
}

Cache headers

Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400
Access-Control-Allow-Origin: *

Internal fields (submittedByEmail, timestamps, the approved flag) are stripped from the feed.

POST/api/submit-case-result

Attorney case submission endpoint. Rate-limited to 5 submissions per IP per hour. New submissions enter the database with an unapproved flag and require manual review before appearing in public results.

Request body fields

ParameterTypeDefaultDescription
resultTypestringrequiredverdict or settlement.
amountnumber or stringrequiredGross dollar amount. Accepts formatted strings like "$1,234.56" or bare numbers. Must be greater than 0.
statestringrequiredMust be one of the 50 US states or District of Columbia.
injuryTypestringrequiredOne of: Back Injury, Broken Bones, Burns, Knee Injury, Shoulder Injury, Soft Tissue Injury, Spinal Cord Injury, Traumatic Brain Injury, Whiplash, Wrongful Death, Other.
practiceAreastringrequiredOne of: Bicycle Accident, Bus Accident, Car Accident, Medical Malpractice, Motorcycle Accident, Pedestrian Accident, Premises Liability, Slip and Fall, Truck Accident, Workplace Injury, Other.
yearintegerrequiredYear between 2000 and the current year.
descriptionstringrequiredCase summary. Minimum 10 characters after trimming. Maximum 2000.
caseTitlestringoptionalOptional case caption. Maximum 200 characters.
countystringoptionalOptional county. Maximum 100 characters.
submittedBystringoptionalOptional attorney name. Maximum 100 characters.
submittedByFirmstringoptionalOptional firm name. Maximum 200 characters.
submittedByWebsitestringoptionalOptional firm website URL. Maximum 300 characters.
emailstringoptionalOptional contact email. Maximum 200 characters.

Example request

curl -X POST 'https://setcalc.com/api/submit-case-result' \
  -H 'Content-Type: application/json' \
  -d '{
    "resultType": "settlement",
    "amount": 125000,
    "state": "Colorado",
    "injuryType": "Back Injury",
    "practiceArea": "Car Accident",
    "year": 2025,
    "description": "Rear-end collision on I-25 resulting in lumbar disc herniation requiring epidural injections and physical therapy.",
    "caseTitle": "Smith v. Acme Logistics",
    "county": "Denver",
    "submittedBy": "Jane Attorney",
    "submittedByFirm": "Attorney and Partners LLP",
    "submittedByWebsite": "https://www.example-firm.com",
    "email": "[email protected]"
  }'

Success response (201)

{ "success": true }

Error response (400 or 429)

{ "success": false, "error": "Invalid state value" }

Field reference

For per-field definitions, see the methodology page. The same schema is used across all read endpoints. Enum values for source:

News                     : Legal news and trade publications
Attorney Submission      : Verified attorney-submitted records
RECAP_DOCKET             : Federal civil dockets (aggregate, hidden by default)
STATE_COURT              : State civil court records (Virginia District Court via virginiacourtdata.org)
STATE_WC                 : State workers compensation aggregates (hidden)
NPDB                     : National Practitioner Data Bank (aggregate, hidden)
FLOIR_PLCR               : Florida OIR closed-claim records
IOWA_CJVR                : Iowa Civil Jury Verdict Reporter
CLASS_ACTION_AGGREGATOR  : Class action aggregators (aggregate, hidden)
MoreLaw, TopVerdict      : Listed for completeness; not actively ingested

Errors

Errors are returned with the appropriate HTTP status code and a JSON body. Status codes used:

  • 400 Bad Request: validation failure on a submission or query parameter.
  • 429 Too Many Requests: rate limit exceeded on the submission endpoint (5 per IP per hour).
  • 503 Service Unavailable: returned by the feed endpoint when the database is temporarily unreachable. The feed still returns a valid JSON-LD envelope with an empty data array so consumers do not break.

Versioning

The API is currently at v1 and served from unversioned URLs. Breaking changes will be announced on this page and reflected in the generatedAt timestamp of the JSON-LD feed. We will maintain backward compatibility for at least 90 days after announcing any breaking change.

Contact

API issues, integration questions, or feedback: [email protected]. For data-sourcing or methodology questions, see the methodology page.

DISCLAIMER: SetCalc is for informational purposes only. We do not provide legal advice, medical advice, or legal representation. We recommend consulting an attorney regarding your case.

ATTORNEY ADVERTISING: setcalc.com is not a law firm or an attorney referral service. The information provided on this site, or any affiliated postings such as videos, blogs, social media, or elsewhere, is not legal advice. No attorney-client or confidential relationship is, or will be, formed by usage of the site. This site is a pooled attorney advertisement. Participating attorneys and law firms who contact Requestors based on form submissions have paid an advertising fee. Do not rely on our service or statements from our service when deciding which attorney to hire. All settlement calculations are estimates only and should not be the basis of important legal decisions. Attorney review of estimate is subject to availability and may not be available for some case types, locations, or for those already represented by counsel. If unavailable, we will send estimate by email without attorney review. By submitting your contact info you agree an advertising attorney may contact you using any form of communication, including calls, emails, auto-dial, pre-recorded messages, and text messages. You understand consent is not a condition of purchase. Your use of this website constitutes acceptance of our Terms & Conditions and Privacy Policy.