List Workforce Trainings by Employee
const options = {
method: 'GET',
headers: {'x-api-key': '<x-api-key>', 'x-organization-id': '<x-organization-id>'}
};
fetch('https://api.dcycle.io/v1/own_workforce_trainings/own_workforce/{own_workforce_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.dcycle.io/v1/own_workforce_trainings/own_workforce/{own_workforce_id}"
headers = {
"x-api-key": "<x-api-key>",
"x-organization-id": "<x-organization-id>"
}
response = requests.get(url, headers=headers)
print(response.text)curl --request GET \
--url https://api.dcycle.io/v1/own_workforce_trainings/own_workforce/{own_workforce_id} \
--header 'x-api-key: <x-api-key>' \
--header 'x-organization-id: <x-organization-id>'List Workforce Trainings by Employee
Retrieve every training record belonging to one own workforce employee
GET
/
v1
/
own_workforce_trainings
/
own_workforce
/
{own_workforce_id}
List Workforce Trainings by Employee
const options = {
method: 'GET',
headers: {'x-api-key': '<x-api-key>', 'x-organization-id': '<x-organization-id>'}
};
fetch('https://api.dcycle.io/v1/own_workforce_trainings/own_workforce/{own_workforce_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.dcycle.io/v1/own_workforce_trainings/own_workforce/{own_workforce_id}"
headers = {
"x-api-key": "<x-api-key>",
"x-organization-id": "<x-organization-id>"
}
response = requests.get(url, headers=headers)
print(response.text)curl --request GET \
--url https://api.dcycle.io/v1/own_workforce_trainings/own_workforce/{own_workforce_id} \
--header 'x-api-key: <x-api-key>' \
--header 'x-organization-id: <x-organization-id>'← Own Workforce API
Return the training records of a single employee. The employee id goes in the path, which is what distinguishes this from the organization-wide List Workforce Trainings.
Request
Headers
string
required
Your API key for authenticationExample:
sk_live_1234567890abcdefstring
required
Your organization UUIDExample:
a8315ef3-dd50-43f8-b7ce-d839e68d51faPath Parameters
string
required
Employee UUID, from List Workforce EmployeesExample:
550e8400-e29b-41d4-a716-446655440000Response
A bare JSON array of training records, with the same fields as List Workforce Trainings. An employee with no trainings returns an empty array, not a 404.Example
curl -X GET "https://api.dcycle.io/v1/own_workforce_trainings/own_workforce/550e8400-e29b-41d4-a716-446655440000" \
-H "x-api-key: ${DCYCLE_API_KEY}" \
-H "x-organization-id: ${DCYCLE_ORG_ID}"
import os
import requests
headers = {
"x-api-key": os.getenv("DCYCLE_API_KEY"),
"x-organization-id": os.getenv("DCYCLE_ORG_ID"),
}
employee_id = "550e8400-e29b-41d4-a716-446655440000"
response = requests.get(
f"https://api.dcycle.io/v1/own_workforce_trainings/own_workforce/{employee_id}",
headers=headers,
)
records = response.json()
print(f"{len(records)} trainings, {sum(r['hours'] for r in records)} hours")
const axios = require('axios');
const headers = {
'x-api-key': process.env.DCYCLE_API_KEY,
'x-organization-id': process.env.DCYCLE_ORG_ID
};
const employeeId = '550e8400-e29b-41d4-a716-446655440000';
axios.get(`https://api.dcycle.io/v1/own_workforce_trainings/own_workforce/${employeeId}`, { headers })
.then(({ data }) => {
const hours = data.reduce((total, record) => total + record.hours, 0);
console.log(`${data.length} trainings, ${hours} hours`);
})
.catch(error => console.error(error));
Successful Response
[
{
"id": "3d9b0a11-2c4e-4f6a-8b1d-5e7f9a0c2d4e",
"own_workforce_id": "550e8400-e29b-41d4-a716-446655440000",
"external_employee_id": "EMP-2024-001",
"type": "Health and safety",
"description": "Annual fire safety refresher",
"hours": 4.0,
"start_date": "2026-03-02",
"end_date": "2026-03-02",
"file_id": "aa11bb22-cc33-4d44-8e55-ff6677889900",
"file_name": "trainings_2026.csv",
"status": "active",
"custom_values": {}
}
]
Common Errors
401 Unauthorized
Cause: the key is invalid, or it does not belong to the organization inx-organization-id — the two are looked up as a pair. A request carrying no credentials at all answers AUTH_REQUIRED instead.
{
"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 inx-organization-id.
{
"detail": "Logged User is not Member of Organization",
"code": "LOGGED_USER_NOT_MEMBER"
}
404 Not Found
Cause: no employee with that id inside your perimeter. An employee owned by another organization answers 404, the same as one that does not exist.{
"code": "NOT_FOUND",
"detail": "OwnWorkforceModel with id='550e8400-e29b-41d4-a716-446655440000' not found"
}
Related Endpoints
Get employee
The person these trainings belong to
Absences of an employee
The same view for absences and accidents
Was this page helpful?