AuditLog
row for EU AI Act traceability.
Both endpoints are tenant-scoped (authenticate with an API key or session). They are not
role-gated. They are rate limited per tenant and fail closed.
POST /api/v1/fairness/evaluate
Compute a fairness report. Rate limit: 20 requests / 60 s.Query parameters
Request body
A discriminated union onmode, plus optional advanced auto-run fields.
Inline mode — pass samples directly:
Trace-join mode — pull decision traces in a window and match by customer:
Advanced auto-run fields (only used with
metrics=advanced): modelKey, modelGroupKey,
counterfactualGroup, limeBaseline, limeOptions ({ samples, seed }).
Response 200
metrics=advanced, the response may also include intersectional, mitigations,
giniByGroup, ksByGroup, counterfactualFairness, and lime. Any advanced primitive that could
not run (e.g., no modelKey, no intersectional groups) is listed by reason in
advancedAwaitingConfig.
Errors
POST /api/v1/fairness/report
Run the same evaluation and return a formatted EU AI Act conformity report instead of JSON. Rate limit: 10 requests / 60 s.Request body
The sameinline / trace-join body as /evaluate, plus:
Response 200
format: "csv"→text/csvattachment (fairness-report-<ts>.csv).format: "html"→text/htmldocument, suitable for headless-Chromium PDF rendering.
fairness_report audit-log row is written on every generation so it is
discoverable in DSAR exports.