> ## Documentation Index
> Fetch the complete documentation index at: https://code.dcycle.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Own Workforce API

> Read and manage employee social data — contracts, remuneration, trainings, absences and workplace accidents — for ESRS S1 reporting

Own Workforce is the social pillar of Dcycle: headcount and FTE, contract composition, remuneration and the gender pay gap, training hours, absenteeism and workplace accidents. It is the data behind the **ESRS S1** disclosures, and it is entirely separate from [Employees](/api-reference/employees/overview), which tracks commuting for Scope 3 emissions.

<Note>
  **There is no endpoint that creates or edits a single record.** Every write goes through the [Imports API](/api-reference/imports/overview) — see [Own Workforce Import Templates](/api-reference/imports/own-workforce-templates) for the three `template_id` values and their columns. Deletion, by contrast, is available per record and in bulk. Plan integrations accordingly: you can remove an employee through this API but not create one.
</Note>

## The shape of the data

One employee row carries the person's demographics and owns everything else:

```
own_workforce (employee)
├── contracts ─── remunerations   (salary amount, currency, period)
├── trainings                     (hours, type, date range)
└── absences & accidents          (one record covers an absence, an accident, or both)
```

Only the employee row carries an `organization_id`. Contracts, remunerations, trainings and absences resolve their owning organization by walking up to the employee, which is why most of their endpoints require an id of the parent rather than offering a free-standing list.

## Authentication

All requests need an API key and the organization it belongs to. See the [Authentication Guide](/docs/authentication).

## Headers

<ParamField header="x-api-key" type="string" required>
  Your API key for authentication

  **Example:** `sk_live_1234567890abcdef`
</ParamField>

<ParamField header="x-organization-id" type="string" required>
  Your organization UUID

  **Example:** `a8315ef3-dd50-43f8-b7ce-d839e68d51fa`
</ParamField>

The key is bound to its organization: a key issued for one organization cannot be used with another organization's id.

## Group view

Holdings can widen most list endpoints to the whole accepted business family with `consolidate_group=true`, then narrow it again with `organization_id[]`. Without it, a list returns the header organization only. Rows returned under group view carry `organization_id`, `organization_name` and `organization_logo_url` so you can tell subsidiaries apart.

## Aggregates

For headcount, FTE, average remuneration, the **gender pay gap**, training hours and absence rates — already grouped by country, gender, job category, nationality or age — use [Query datasets](/api-reference/datasets/query) with one of the seven own-workforce dataset keys. That is a far cheaper path than paging these endpoints and aggregating client-side. [List available datasets](/api-reference/datasets/list) enumerates the keys.

## Personal data

These endpoints return birth dates, gender, disability grade, individual salaries, sick leave and workplace accident context. That is personal data, and parts of it are special-category data under the GDPR. Treat responses accordingly: do not log them verbatim, do not cache them in shared stores, and restrict the API keys that can reach them.

## Available Endpoints

<CardGroup cols={2}>
  <Card title="List employees" icon="users" href="/api-reference/own-workforce/list">
    Paginated employee list with filters
  </Card>

  <Card title="Get employee" icon="user" href="/api-reference/own-workforce/get">
    A single employee by id
  </Card>

  <Card title="Contracts & remuneration" icon="file-signature" href="/api-reference/own-workforce/list-contracts">
    Contracts of an employee, and salaries of a contract
  </Card>

  <Card title="Trainings" icon="graduation-cap" href="/api-reference/own-workforce/list-trainings-paginated">
    Training records with hours and type
  </Card>

  <Card title="Absences & accidents" icon="notes-medical" href="/api-reference/own-workforce/list-absences-paginated">
    Sick leave and workplace accidents
  </Card>

  <Card title="Upload a CSV" icon="file-arrow-up" href="/api-reference/own-workforce/csv-upload">
    Presigned upload, the legacy write path
  </Card>
</CardGroup>
