Skip to main content

Salary Calculator API

This document explains the Salary Calculator API, which generates accurate salary ranges. It details authentication, request structure, responses, errors, and usage examples.

Updated this week

Introduction

The Salary Calculator API is designed to help companies instantly estimate accurate, market-aligned salary ranges for any job vacancy. It uses SupportFinity’s proprietary global compensation intelligence engine, which evaluates multiple real-world factors such as skills, experience, work mode, job type, company size, geographic salary indices, and more.

This API allows organizations, platforms, and HR systems to:

  • Generate precise and competitive salary ranges

  • Standardize compensation decisions across jobs

  • Support internal HR, TA, and finance workflows

  • Power job-posting automation with real-time salary intelligence

  • Reduce guesswork and increase transparency for global salary planning

The API is typically used inside:

  • Applicant Tracking Systems (ATS)

  • HR workflow automations

  • Job creation forms

  • Compensation benchmarking and analytics dashboards

  • Enterprise HRIS extensions

  • Partner integrations via SupportFinity’s developer ecosystem


Salary Calculator API

Endpoint Information

Endpoint:
POST /job-vacancy/calculate-system-salary

Description:
Calculates an AI-generated, system-recommended salary range for a job vacancy using job title, skills, experience level, location, languages, company type, contract type, work mode, engagement hours, and more.
Credits are deducted from the company’s job board package.

Version: 3.1.2


Authentication

Required: Yes
Type: Bearer Token

Header

Authorization: Bearer <token>

Required Permissions:

  • Authenticated customer user

  • Active company package with salary calculation credits


Request

HTTP Method

POST

Headers

Header

Type

Required

Description

Authorization

string

Yes

Bearer token

Content-Type

string

Yes

Must be application/json


Request Body

Content-Type: application/json

Schema Overview

Field

Type

Required

Description

jobWrapper

JobWrapper

Yes

Defines job name or ID

skillsWrapper

SkillsWrapper

Yes

Required skills

experienceLevel

string

Yes

Experience level

address

Address

Yes

Country, state, city

salaryCycle

string

Yes

YEARLY, MONTHLY, WEEKLY, HOURLY

engagementPerWeek

number

Yes

Hours per week

workMode

string

Yes

REMOTE, ONSITE, HYBRID

jobType

string

No

FULL_TIME, PART_TIME, FREELANCE, CONTRACT, INTERNSHIP

languages

array

No

Required spoken languages

currency

CurrencyEntity

No

Preferred currency (defaults to USD)

details

JVDetailsEntity

No

Contract details

companyType

string

No

Company size/type (STARTUP, LARGE, FORTUNE_500, etc.)


Example Request

{
"jobWrapper": {
"name": "Software Engineer"
},
"skillsWrapper": {
"skills": [
{ "name": "Java" },
{ "name": "Spring Boot" },
{ "name": "Microservices" },
{ "name": "AWS" }
]
},
"experienceLevel": "SENIOR",
"address": {
"location": {
"country": { "name": "United States" },
"state": { "name": "New York" },
"city": { "name": "New York City" }
}
},
"salaryCycle": "YEARLY",
"engagementPerWeek": 40,
"workMode": "REMOTE",
"jobType": "FULL_TIME",
"languages": [{ "name": "English" }],
"currency": { "code": "USD", "symbol": "$" },
"companyType": "LARGE_BUSINESS_GLOBAL"
}

Response

Success Response

Status: 200 OK
Content-Type: application/json

Schema

Field

Type

Description

data

JobVacancyEntity

Job data with salary range

data.systemSalaryRange

PriceRange

Calculated salary range

data.systemSalaryRange.min

Price

Min salary (original + USD equivalent)

data.systemSalaryRange.max

Price

Max salary (original + USD equivalent)

remainingCredits

RemainingCredits

Remaining credits info

Example Response

{
"data": {
"jobWrapper": { "name": "Software Engineer" },
"skillsWrapper": {
"skills": [
{ "name": "Java" },
{ "name": "Spring Boot" },
{ "name": "Microservices" },
{ "name": "AWS" }
]
},
"experienceLevel": "SENIOR",
"salaryCycle": "YEARLY",
"engagementPerWeek": 40,
"workMode": "REMOTE",
"jobType": "FULL_TIME",
"currency": {
"code": "USD",
"symbol": "$"
},
"systemSalaryRange": {
"min": { "amount": 120000, "amountInUsd": 120000 },
"max": { "amount": 180000, "amountInUsd": 180000 }
}
},
"remainingCredits": {
"feature": "SYSTEM_SALARY_CALCULATION",
"remainingCount": 24,
"totalCount": 25,
"unlimited": false
}
}

Error Responses

401 Unauthorized

{
"status": 401,
"error": "Unauthorized",
"message": "Authentication required"
}

403 Forbidden

{
"status": 403,
"error": "Forbidden",
"message": "User not found"
}

400 Bad Request

{   "status": 400,   "error": "Bad Request",   "message": "Invalid job {
"status": 400,
"error": "Bad Request",
"message": "Invalid job vacancy data provided"
}

402 Insufficient Credits

{
"status": 402,
"error": "Insufficient Credits",
"message": "You have exhausted your salary calculation credits. Please upgrade your package."
}

500 Internal Server Error

{
"status": 500,
"error": "Internal Server Error",
"message": "An error occurred while calculating salary"
}

Usage Examples

cURL

curl -X POST https://api.supportfinity.com/job-vacancy/calculate-system-salary-customer \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{...}'

JavaScript (Fetch API)

const response = await fetch(
"https://api.supportfinity.com/job-vacancy/calculate-system-salary-customer",
{
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json"
},
body: JSON.stringify(jobData)
}
);

Python (Requests)

response = requests.post(
url,
headers={"Authorization": f"Bearer {access_token}", "Content-Type": "application/json"},
json=job_data
)

Business Logic

The Salary Calculator engine evaluates multiple parameters:

1. Job & Skills Ranking

  • Determines seniority and complexity using title + skill combinations

2. Experience Level Adjustment

  • STARTER, JUNIOR, MID_LEVEL, SENIOR

3. Language Requirements

  • Multiple languages affect compensation

4. Work Hours

  • Engagement hours per week impact salary

5. Work Mode

  • REMOTE, ONSITE, HYBRID influence salary differently

6. Company Type

  • STARTUP, SMB, LARGE, FORTUNE_500 and others

7. Geographic Location

  • Uses country or state or city

8. Salary Cycle Conversion

  • Converts base hourly rates to requested cycles

9. Contract Type

  • Employment vs contract engagement

10. Currency Conversion

  • Converts to local country currency or defaults to USD


Notes

  • No credit deduction on failure

  • Requires active company package

  • Uses real-time global market data


Rate Limiting

Limit Type

Value

Requests per minute

60

(default value. Other values are customizable per package)


Changelog

Version

Date

Description

3.1.2

2025-10-01

Minor improvements, stability fixes, refined salary scaling for new markets.

3.1.1

2025-07-12

Updated credit validation rules and improved error handling.

3.1.0

2025-05-20

Added enhancements to location intelligence and experience-level weighting.

3.0.0

2025-03-01

Major engine upgrade, improved accuracy, expanded job taxonomy coverage.

2.5.0

2024-11-10

Added new skills relevance scoring and improved currency normalization.

2.4.0

2024-08-18

Introduced multi-country salary blending for global roles.

2.3.0

2024-05-30

Improved data ingestion pipeline for salary benchmarks.

2.2.0

2024-03-10

Enhanced salary calculation for contract and part-time roles.

2.1.0

2023-12-15

Introduced new job category intelligence module.

2.0.0

2023-10-01

Major refactor for scalability and faster calculation response times.

1.5.0

2023-07-20

Added skill-based modifiers and improved title interpretation.

1.2.0

2023-04-10

Improved market data normalization and calculation reliability.

1.0.0

2023-01-15

Initial release of the System Salary Calculation API.


Support

Did this answer your question?