/v1/compliance/pay-gap-reportGenerate a gender pay gap report from anonymised workforce data
Generate a statistical gender pay gap analysis from a list of employee records for EU Pay Transparency Directive (2023/970) reporting. Use this when an HR department needs to calculate mean and median pay gaps for filing, or wants to benchmark their gap against the national average before publishing. **Inputs:** a country code and a list of `EmployeeRecord` objects — each with a job title, gender (M/F), salary, salary period, and employment type. The list must contain at least 2 and at most 10,000 records per request. **What it computes:** - Overall mean and median pay gap across the full workforce. - Per-ISCO-category breakdown (job titles are matched to ISCO major groups) including male/female headcounts, mean salaries per gender, per-category gap percentage, and a `requires_joint_assessment` flag when a category gap is >= 5 percent (Article 10 trigger). - Benchmark against the Eurostat national average gap. - A list of `recommendations` and a methodology note. **Privacy:** computation is fully stateless — no employee data is stored. The endpoint also applies a `k_anonymity_warning` to any category with fewer than 5 employees of a given gender. **Not legal advice** — consult an employment lawyer for formal Article 9/10 reporting. Source: EU Directive 2023/970, Eurostat gender pay gap statistics. Required scope: `compliance:report` (Enterprise tier).
Authentication
Requires API key via X-API-Key header.
Request body
countrystringrequiredemployeesarray<EmployeeRecord>requiredminItems 2 · maxItems 10000
job_titlestringrequiredgenderstringrequiredenum: M | Fsalarynumberrequiredsalary_periodstringoptionalenum: annual | monthly | hourlydefault "annual"
employment_typestringoptionalenum: full_time | part_timedefault "full_time"
Example request
curl -X POST \
"https://salary.wageapi.com/api/v1/compliance/pay-gap-report" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"country":"DE","employees":[{"employment_type":"full_time","gender":"M","job_title":"Software Developer","salary":72000,"salary_period":"annual"},{"employment_type":"full_time","gender":"F","job_title":"Software Developer","salary":68000,"salary_period":"annual"},{"employment_type":"full_time","gender":"M","job_title":"Product Manager","salary":85000,"salary_period":"annual"},{"employment_type":"full_time","gender":"F","job_title":"Product Manager","salary":82000,"salary_period":"annual"}]}'Responses
country_codestringrequiredcountry_namestringrequiredoverall_mean_gap_pctnumberrequiredoverall_median_gap_pctnumberrequiredcategoriesarray<CategoryGap>requiredisco_codestringrequiredcategory_namestringrequiredemployee_countintegerrequiredmale_countintegerrequiredfemale_countintegerrequiredmean_malenumberrequiredmean_femalenumberrequiredgap_pctnumberrequiredmedian_gap_pctanyoptionalrequires_joint_assessmentbooleanrequirednational_benchmark_gap_pctanyrequiredk_anonymity_warningbooleanoptionaldefault false
national_average_gap_pctanyrequiredtotal_employeesintegerrequiredrequires_any_joint_assessmentbooleanrequiredrecommendationsarray<string>requiredmethodology_notestringrequireddisclaimerstringoptionaldefault "This report is a statistical analysis tool based on the data provided. It does not constitute legal advice or a formal pay gap audit. Consult a qualified employment lawyer for EU Directive 2023/970 compliance."
errorErrorDetailrequiredStructured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.
codestringrequiredMachine-readable error code (e.g. INVALID_API_KEY)
messagestringrequiredHuman-readable error message
statusintegerrequiredHTTP status code
request_idstringrequiredRequest identifier — include in support tickets
suggestionanyoptionalActionable hint on how to resolve the error
doc_urlanyoptionalLink to full documentation for this error code
fieldanyoptionalField that caused the error (if applicable)
errorsanyoptionalPer-field validation errors (only for 422 VALIDATION_ERROR responses)
errorErrorDetailrequiredStructured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.
codestringrequiredMachine-readable error code (e.g. INVALID_API_KEY)
messagestringrequiredHuman-readable error message
statusintegerrequiredHTTP status code
request_idstringrequiredRequest identifier — include in support tickets
suggestionanyoptionalActionable hint on how to resolve the error
doc_urlanyoptionalLink to full documentation for this error code
fieldanyoptionalField that caused the error (if applicable)
errorsanyoptionalPer-field validation errors (only for 422 VALIDATION_ERROR responses)
errorErrorDetailrequiredStructured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.
codestringrequiredMachine-readable error code (e.g. INVALID_API_KEY)
messagestringrequiredHuman-readable error message
statusintegerrequiredHTTP status code
request_idstringrequiredRequest identifier — include in support tickets
suggestionanyoptionalActionable hint on how to resolve the error
doc_urlanyoptionalLink to full documentation for this error code
fieldanyoptionalField that caused the error (if applicable)
errorsanyoptionalPer-field validation errors (only for 422 VALIDATION_ERROR responses)
errorErrorDetailrequiredStructured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.
codestringrequiredMachine-readable error code (e.g. INVALID_API_KEY)
messagestringrequiredHuman-readable error message
statusintegerrequiredHTTP status code
request_idstringrequiredRequest identifier — include in support tickets
suggestionanyoptionalActionable hint on how to resolve the error
doc_urlanyoptionalLink to full documentation for this error code
fieldanyoptionalField that caused the error (if applicable)
errorsanyoptionalPer-field validation errors (only for 422 VALIDATION_ERROR responses)
errorErrorDetailrequiredStructured error payload returned by all Aethar APIs. Mirrors the shape produced by aethar_auth.exception_handlers so the OpenAPI spec accurately describes real error bodies for documentation readers and MCP clients.
codestringrequiredMachine-readable error code (e.g. INVALID_API_KEY)
messagestringrequiredHuman-readable error message
statusintegerrequiredHTTP status code
request_idstringrequiredRequest identifier — include in support tickets
suggestionanyoptionalActionable hint on how to resolve the error
doc_urlanyoptionalLink to full documentation for this error code
fieldanyoptionalField that caused the error (if applicable)
errorsanyoptionalPer-field validation errors (only for 422 VALIDATION_ERROR responses)
Try this endpoint
Create a free Aethar account and generate an API key in 2 minutes.
Create free account →