curl --request GET \
--url https://api.secfix.com/v1/employees \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.secfix.com/v1/employees"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.secfix.com/v1/employees', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.secfix.com/v1/employees",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.secfix.com/v1/employees"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.secfix.com/v1/employees")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.secfix.com/v1/employees")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"pageInfo": {
"endCursor": "AgAAAAX0bYb1Q0AAJDNmMWM5YTJlLTk0YjEtNGQ3Mi1hN2Q4LTEyMzQ1Njc4OWFiYw",
"hasNextPage": true,
"hasPreviousPage": false,
"pageCount": 25,
"startCursor": "AgEAAAX0bYb1Q0AAJDNmMWM5YTJlLTk0YjEtNGQ3Mi1hN2Q4LTEyMzQ1Njc4OWFiYw",
"totalCount": 312
},
"results": [
{
"email": "alice@example.com",
"endContractDate": "2026-12-31T00:00:00.000Z",
"groupId": "9b2d4f6a-1c3e-4a5b-8d7f-0e1a2b3c4d5e",
"groupName": "Engineering",
"id": "3f1c9a2e-94b1-4d72-a7d8-123456789abc",
"name": "Alice Doe",
"onboardingStatus": "ONGOING",
"source": "GOOGLE_WORKSPACE",
"startContractDate": "2025-01-15T00:00:00.000Z",
"status": "ACTIVE",
"tasksSummary": {
"deviceMonitoring": {
"completed": 1,
"status": "ONGOING",
"total": 2
},
"policyAcceptance": {
"completed": 1,
"status": "ONGOING",
"total": 2
},
"tasks": [
{
"category": "TRAINING",
"completedAt": "2026-03-02T09:15:00.000Z",
"expiresAt": "2027-03-02T00:00:00.000Z",
"key": "SECURITY_AWARENESS_TRAINING",
"name": "Security awareness training",
"status": "COMPLETE"
}
],
"trainings": {
"completed": 1,
"status": "ONGOING",
"total": 2
}
}
}
]
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}List employees
Returns the people in your workspace who are included in compliance. Only active employees are returned unless you set status. Service accounts are never returned. Filters combine with AND. To pass several values to one filter, separate them with commas: group=Engineering,Sales. Names and email addresses are personal data. Requires the all:read scope.
curl --request GET \
--url https://api.secfix.com/v1/employees \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.secfix.com/v1/employees"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.secfix.com/v1/employees', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.secfix.com/v1/employees",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.secfix.com/v1/employees"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.secfix.com/v1/employees")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.secfix.com/v1/employees")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"pageInfo": {
"endCursor": "AgAAAAX0bYb1Q0AAJDNmMWM5YTJlLTk0YjEtNGQ3Mi1hN2Q4LTEyMzQ1Njc4OWFiYw",
"hasNextPage": true,
"hasPreviousPage": false,
"pageCount": 25,
"startCursor": "AgEAAAX0bYb1Q0AAJDNmMWM5YTJlLTk0YjEtNGQ3Mi1hN2Q4LTEyMzQ1Njc4OWFiYw",
"totalCount": 312
},
"results": [
{
"email": "alice@example.com",
"endContractDate": "2026-12-31T00:00:00.000Z",
"groupId": "9b2d4f6a-1c3e-4a5b-8d7f-0e1a2b3c4d5e",
"groupName": "Engineering",
"id": "3f1c9a2e-94b1-4d72-a7d8-123456789abc",
"name": "Alice Doe",
"onboardingStatus": "ONGOING",
"source": "GOOGLE_WORKSPACE",
"startContractDate": "2025-01-15T00:00:00.000Z",
"status": "ACTIVE",
"tasksSummary": {
"deviceMonitoring": {
"completed": 1,
"status": "ONGOING",
"total": 2
},
"policyAcceptance": {
"completed": 1,
"status": "ONGOING",
"total": 2
},
"tasks": [
{
"category": "TRAINING",
"completedAt": "2026-03-02T09:15:00.000Z",
"expiresAt": "2027-03-02T00:00:00.000Z",
"key": "SECURITY_AWARENESS_TRAINING",
"name": "Security awareness training",
"status": "COMPLETE"
}
],
"trainings": {
"completed": 1,
"status": "ONGOING",
"total": 2
}
}
}
]
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}{
"code": "not_found",
"detail": "No asset found for the given id.",
"instance": "/v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f",
"requestId": "req_01HZY8Q3M4N5P6R7S8T9V0W1X2",
"status": 404,
"title": "Not Found",
"type": "https://api.secfix.com/problems/not_found"
}Authorizations
Access token from POST /oauth/token.
Query Parameters
Employment status. Defaults to ACTIVE.
ACTIVE, TERMINATED Group names, comma-separated, case-insensitive. An unknown name returns an empty page.
Group ids from GET /v1/groups, comma-separated.
One email address, case-insensitive.
Onboarding statuses, comma-separated: COMPLETE, INCOMPLETE, ONGOING or NOT_APPLICABLE.
Results per page, 1-100. Defaults to 25.
The startCursor or endCursor from a previous page of this list. Send the same filters as on that page. Leave it out for the first page.