← Own Workforce APIReturn the remuneration records of one contract: how much, in which currency, and over which period. This is the only endpoint that exposes individual salary amounts.
Individual pay is among the most sensitive data in the product. Restrict the API keys that can reach this endpoint, and do not write responses to shared logs or caches.
There is no organization-wide salary list. Reading every salary means walking employees → contracts → remunerations, one request per contract. If you want totals, averages or the gender pay gap, do not walk this tree: query the own_workforce_remuneration dataset through Query datasets, which computes them server-side and segments by gender, country, nationality, job category and age.
Currency, resolved to its unit name — for example euros_(eur), us_dollar_(usd), mexican_peso_(mxn). Amounts are not converted to a common currency, so do not sum across records without converting first.
import osimport requestsheaders = { "x-api-key": os.getenv("DCYCLE_API_KEY"), "x-organization-id": os.getenv("DCYCLE_ORG_ID"),}response = requests.get( "https://api.dcycle.io/v1/own_workforce_remunerations", headers=headers, params={"own_workforce_contract_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"},)records = response.json()# Do not print individual pay. Aggregate, or carry the values straight to their destination.print(f"{len(records)} remuneration periods on this contract")
const axios = require('axios');const headers = { 'x-api-key': process.env.DCYCLE_API_KEY, 'x-organization-id': process.env.DCYCLE_ORG_ID};axios.get('https://api.dcycle.io/v1/own_workforce_remunerations', { headers, params: { own_workforce_contract_id: '7c9e6679-7425-40de-944b-e07fc1f90ae7' }}).then(response => { // Do not log individual pay. Aggregate, or carry the values straight to their destination. console.log(`${response.data.length} remuneration periods on this contract`);}).catch(error => console.error(error));
Cause: the key is invalid or revoked (INVALID_API_KEY), expired (API_KEY_EXPIRED), belongs neither to the organization in x-organization-id nor to one of its parents (API_KEY_ORG_MISMATCH), or has no owner (API_KEY_NO_OWNER). A request carrying no credentials at all answers AUTHENTICATION_REQUIRED. See Errors.
{ "detail": "Invalid API key for organization", "code": "INVALID_API_KEY"}
Cause: no contract with that id inside your perimeter. The contract is resolved through its employee to an organization, so another tenant’s salaries are a 404 rather than a readable list.
{ "code": "NOT_FOUND", "detail": "OwnWorkforceContractModel with id='550e8400-e29b-41d4-a716-446655440000' not found"}