> ## 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.

# List Workforce Absences

> Retrieve every absence and workplace accident record for the organization, unpaginated

[← Own Workforce API](/api-reference/own-workforce/overview)

Return the absence and accident records of the header organization as a flat array.

<Warning>
  **This endpoint does not paginate** and applies no row cap. Use [List Workforce Absences Paginated](/api-reference/own-workforce/list-absences-paginated) unless you need the whole set at once, and narrow with `created_at_from` / `created_at_to` when you do.
</Warning>

<Warning>
  These records are **health data**: sick-leave dates and hours, and the context of workplace accidents, each tied to an identifiable employee. That is special-category personal data under the GDPR. Do not log responses verbatim or cache them in shared stores, and restrict the API keys that can reach this endpoint.
</Warning>

## One record, up to two events

A single record can describe an absence, an accident, or an accident that caused an absence. Which one it is shows in the fields, not in a discriminator:

| `accident_id` | `absenteeism_id` | Meaning                                       |
| ------------- | ---------------- | --------------------------------------------- |
| set           | null             | An accident with no sick leave                |
| null          | set              | An absence not caused by a workplace accident |
| set           | set              | An accident that led to sick leave            |

Read the `accident_*` fields only when `accident_id` is set, and the `absenteeism_*` fields only when `absenteeism_id` is set.

<Note>
  `type` is **free text**, captured as it was imported, and is not a controlled vocabulary. In practice organizations use their own labels in their own language, so the same concept appears under many spellings. Do not switch on it. For a reliable split, use `accident_id` / `absenteeism_id` as above, or the `own_workforce_accidents` and `own_workforce_absenteeism` datasets in [Query datasets](/api-reference/datasets/query).
</Note>

## Request

### 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>

### Query Parameters

<ParamField query="file_id[]" type="array[string]">
  Filter by source upload file. The nil UUID `00000000-0000-0000-0000-000000000000` matches rows with no file.
</ParamField>

<ParamField query="created_at_from" type="datetime">
  Only rows created at or after this instant
</ParamField>

<ParamField query="created_at_to" type="datetime">
  Only rows created on or before this instant, inclusive
</ParamField>

<ParamField query="search" type="string">
  Free-text search, up to 255 characters
</ParamField>

## Response

A bare JSON array.

<ResponseField name="id" type="string">
  Record UUID
</ResponseField>

<ResponseField name="own_workforce_id" type="string">
  Employee the record belongs to
</ResponseField>

<ResponseField name="external_employee_id" type="string">
  That employee's identifier in your HR system
</ResponseField>

<ResponseField name="type" type="string">
  Free-text label as uploaded — see the note above
</ResponseField>

<ResponseField name="accident_id" type="string | null">
  Set when the record includes a workplace accident
</ResponseField>

<ResponseField name="accident_date" type="string | null">
  `YYYY-MM-DD`, when the accident happened
</ResponseField>

<ResponseField name="accident_context" type="string | null">
  `in_labore` (at work) or `in_itinere` (commuting). This one **is** a closed set.
</ResponseField>

<ResponseField name="absenteeism_id" type="string | null">
  Set when the record includes an absence
</ResponseField>

<ResponseField name="absenteeism_start_date" type="string | null">
  First day of the absence
</ResponseField>

<ResponseField name="absenteeism_end_date" type="string | null">
  Last day. Null means the absence is open-ended.
</ResponseField>

<ResponseField name="absenteeism_hours" type="number | null">
  Hours lost
</ResponseField>

<ResponseField name="created_by" type="string">
  User who created the record
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp
</ResponseField>

<ResponseField name="updated_at" type="string">
  ISO 8601 timestamp
</ResponseField>

<ResponseField name="file_id" type="string | null">
  Source upload file
</ResponseField>

<ResponseField name="file_name" type="string | null">
  Name of that file
</ResponseField>

<ResponseField name="status" type="string | null">
  Ingestion status: `active` once ingested, `loading` while its job runs, `error` if that job failed
</ResponseField>

<ResponseField name="organization_id" type="string | null">
  Owning organization. Populated on group-view responses only.
</ResponseField>

## Example

<CodeGroup>
  ```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl -X GET "https://api.dcycle.io/v1/own_workforce_absenteeisms_accidents?created_at_from=2026-01-01T00:00:00" \
    -H "x-api-key: ${DCYCLE_API_KEY}" \
    -H "x-organization-id: ${DCYCLE_ORG_ID}"
  ```

  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import os

  import requests

  headers = {
      "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_absenteeisms_accidents",
      headers=headers,
      params={"created_at_from": "2026-01-01T00:00:00"},
      timeout=120,
  )

  records = response.json()
  accidents = [r for r in records if r["accident_id"]]
  with_leave = [r for r in accidents if r["absenteeism_id"]]
  print(f"{len(accidents)} accidents, {len(with_leave)} of them with sick leave")
  ```

  ```javascript JavaScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  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_absenteeisms_accidents', {
    headers,
    params: { created_at_from: '2026-01-01T00:00:00' },
    timeout: 120000
  })
  .then(({ data }) => {
    const accidents = data.filter(r => r.accident_id);
    const withLeave = accidents.filter(r => r.absenteeism_id);
    console.log(`${accidents.length} accidents, ${withLeave.length} of them with sick leave`);
  })
  .catch(error => console.error(error));
  ```
</CodeGroup>

### Successful Response

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
[
  {
    "id": "6f2c8d13-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
    "own_workforce_id": "550e8400-e29b-41d4-a716-446655440000",
    "external_employee_id": "EMP-2024-001",
    "type": "Accidente de Trabajo",
    "accident_id": "7a3d9e24-5b6c-4d7e-8f90-2b3c4d5e6f70",
    "accident_date": "2026-04-12",
    "accident_context": "in_labore",
    "absenteeism_id": "8b4e0f35-6c7d-4e8f-9a01-3c4d5e6f7081",
    "absenteeism_start_date": "2026-04-13",
    "absenteeism_end_date": "2026-04-25",
    "absenteeism_hours": 80.0,
    "created_by": "8a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
    "created_at": "2026-04-26T08:15:00",
    "updated_at": "2026-04-26T08:15:00",
    "file_id": "dd44ee55-ff66-4077-8188-99aabbccddee",
    "file_name": "absences_2026.csv",
    "status": "active",
    "organization_id": null
  }
]
```

## Common Errors

### 401 Unauthorized

**Cause:** the key is invalid, or it does not belong to the organization in `x-organization-id` — the two are looked up as a pair. A request carrying no credentials at all answers `AUTH_REQUIRED` instead.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "detail": "Invalid API key for organization",
  "code": "INVALID_API_KEY"
}
```

### 403 Forbidden

**Cause:** the key's owner is not an enabled member of the organization in `x-organization-id`.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "detail": "Logged User is not Member of Organization",
  "code": "LOGGED_USER_NOT_MEMBER"
}
```

## Related Endpoints

<CardGroup cols={2}>
  <Card title="List absences paginated" icon="list-ol" href="/api-reference/own-workforce/list-absences-paginated">
    The same data, in pages
  </Card>

  <Card title="Absences of an employee" icon="user" href="/api-reference/own-workforce/list-absences-by-employee">
    Narrowed to one person
  </Card>
</CardGroup>
