Claim outcome data

API

The numbers of the table as JSON. Every response carries the source and the caveats; please pass them on wherever you show the numbers. Machine-readable description: openapi.json.

Authentication and limits

GET /score

Parameters: court and/or airline (slugs from /courts and /airlines). With only court you get the court over all airlines, with only airline the airline over all courts. Neither → 400. An unknown slug → 404 with the closest valid slugs.

curl -H "X-API-Key: $KEY" "https://claim-pricing.vitersoft.com/score?court=ag-koeln"
{
  "airline": null,
  "court": "AG Köln",
  "n_total": 89,
  "n_decided": 84,
  "share_claimant_success": 0.5952,
  "share_dismissed": 0.4048,
  "share_default_or_ack": 0.0119,
  "median_duration_days": 187,
  "n_with_dates": 9,
  "median_amount_eur": 500,
  "date_range": ["2006-04-05", "2026-02-04"],
  "caveats": [ … ],
  "source": "Open Legal Data (de.openlegaldata.io), ODbL; pipeline v0.1, data dump 2026-05"
}

Fewer than 10 decided cases → 200 with {"status": "insufficient_data", "n_decided": 4, …}. This is the answer for every airline today: courts anonymise the defendant (see how we count).

GET /courts, GET /airlines

All valid slugs with n_total, the number of decisions behind them.

curl -H "X-API-Key: $KEY" "https://claim-pricing.vitersoft.com/courts"

GET /health

No key. {"status": "ok", …} with the data version.

Errors

StatusBody
400{"error": "missing_parameter", "message": …}
401{"error": "unauthorized", "message": …}
404{"error": "unknown_court" | "unknown_airline", "message": …, "suggestions": [ … ]}
429{"error": "rate_limited", "message": …}, header Retry-After: 60

Statistics from published decisions, not legal advice and not a prediction for an individual claim.