/v1/compliance/validate-salary-rangeValidate a posted salary range against EU Pay Transparency rules
Check whether a job posting's salary range complies with the EU Pay Transparency Directive (2023/970) for a given country. Use this when an employer or job board needs to flag posted ranges *before* publishing to avoid minimum-wage violations and structurally non-compliant postings. **What it checks:** - **Legal validity** — both `min_salary` and `max_salary` are present, `max > min`, and the range is at or above the national minimum wage (converted to the same period as the posting). - **Statistical reasonableness** — benchmarks the range against Eurostat SES data for the matched ISCO occupation. Flags ranges that are clearly below or above market without hard-failing them. **Response:** two independent booleans — `legally_valid` and `statistically_reasonable` — plus a list of `warnings` explaining each finding. The endpoint intentionally never conflates legal compliance with market positioning in a single boolean. **Not legal advice** — the `disclaimer` field in the response calls this out explicitly. Consult an employment lawyer for formal compliance decisions. Source: EU Directive 2023/970, Eurostat SES, national minimum wage data. Required scope: `compliance:read` (Pro tier or higher).
Authentication
Requires API key via X-API-Key header.
Request body
job_titlestringrequiredcountrystringrequiredmin_salarynumberrequiredmax_salarynumberrequiredcurrencystringoptionaldefault "EUR"
salary_periodstringoptionalenum: annual | monthly | hourlydefault "annual"
sectoranyoptionalcompany_sizeanyoptionalExample request
curl -X POST \
"https://salary.wageapi.com/api/v1/compliance/validate-salary-range" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"company_size":250,"country":"DE","currency":"EUR","job_title":"Software Developer","max_salary":75000,"min_salary":55000,"salary_period":"annual","sector":"information_and_communication"}'Responses
legally_validbooleanrequiredstatistically_reasonablebooleanrequiredwarningsarray<ValidationWarning>optionaldefault []
codestringrequiredseveritystringrequiredenum: error | warning | infomessagestringrequiredcountry_codestringrequiredcountry_namestringrequireddirective_transposedbooleanrequiredmatched_iscoanyoptionalmatched_titleanyoptionalbenchmark_mediananyoptionalestimated_percentilesanyoptionalbenchmark_currencystringoptionaldefault "EUR"
salary_periodstringoptionaldefault "annual"
methodology_noteanyoptionaldisclaimerstringoptionaldefault "The legally_valid field assesses structural compliance (range present, above minimum wage). The statistically_reasonable field assesses market positioning against Eurostat data. Neither constitutes legal advice."
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)
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 →