HR user identity records for a Custom HRIS connection. Use the batch upsert endpoint to submit employee records keyed by your own identityId, then use the update endpoint to reflect employment changes (e.g. set separatedAt when an employee leaves). Deleting a record is intended for data submitted in error, not for offboarding. Changes are not applied immediately โ they are incorporated the next time identity sync runs, which happens nightly by default. A sync can also be triggered manually from the Personnel page.
Returns a cursor-paginated list of all active HR user identities for the specified custom HRIS connection.
๐งช Note: This endpoint is in beta and may change.
๐ Requires user-identities-hris-get permission.
๐ Requires your account have the Custom Connections and Tests feature. Contact your CSM for help upgrading.
Successful
Invalid Authorization
You must upgrade your plan to use this feature
You are not allowed to perform this action
Not Found
You must accept the Drata terms and conditions to use the API
Internal server error
{- "data": [
- {
- "id": 1001,
- "identityId": "emp-001",
- "secondaryEmail": null,
- "firstName": "Jane",
- "lastName": "Doe",
- "jobTitle": "Software Engineer",
- "managerId": "emp-050",
- "managerName": "Bob Manager",
- "startedAt": "2022-03-01T00:00:00.000Z",
- "separatedAt": null,
- "isContractor": false,
- "createdAt": "2026-03-26T10:00:00.000Z",
- "updatedAt": "2026-03-26T10:00:00.000Z"
}
], - "pagination": {
- "cursor": "string"
}
}Submit one or more HR user identities for a custom HRIS connection. Each record is keyed by the customer-defined identityId. If a record with that identityId already exists for this connection, it is updated; otherwise a new record is created.
๐งช Note: This endpoint is in beta and may change.
๐ Requires user-identity-hris-post permission.
๐ Requires your account have the Custom Connections and Tests feature. Contact your CSM for help upgrading.
Created
Malformed data and/or validation errors
Invalid Authorization
You must upgrade your plan to use this feature
You are not allowed to perform this action
Not Found
You must accept the Drata terms and conditions to use the API
Internal server error
{- "identities": [
- {
- "identityId": "emp-001",
- "firstName": "Jane",
- "lastName": "Doe",
- "jobTitle": "Software Engineer",
- "managerId": "emp-050",
- "managerName": "Bob Manager",
- "startedAt": "2022-03-01T00:00:00.000Z",
- "separatedAt": "2024-12-31T00:00:00.000Z",
- "isContractor": false
}
]
}[- {
- "id": 1001,
- "identityId": "emp-001",
- "secondaryEmail": null,
- "firstName": "Jane",
- "lastName": "Doe",
- "jobTitle": "Software Engineer",
- "managerId": "emp-050",
- "managerName": "Bob Manager",
- "startedAt": "2022-03-01T00:00:00.000Z",
- "separatedAt": null,
- "isContractor": false,
- "createdAt": "2026-03-26T10:00:00.000Z",
- "updatedAt": "2026-03-26T10:00:00.000Z"
}
]Returns a single HR user identity by the Drata-assigned internal ID.
๐งช Note: This endpoint is in beta and may change.
๐ Requires user-identity-hris-get permission.
๐ Requires your account have the Custom Connections and Tests feature. Contact your CSM for help upgrading.
Successful
Invalid Authorization
You must upgrade your plan to use this feature
You are not allowed to perform this action
Not Found
You must accept the Drata terms and conditions to use the API
Internal server error
{- "id": 1001,
- "identityId": "emp-001",
- "secondaryEmail": null,
- "firstName": "Jane",
- "lastName": "Doe",
- "jobTitle": "Software Engineer",
- "managerId": "emp-050",
- "managerName": "Bob Manager",
- "startedAt": "2022-03-01T00:00:00.000Z",
- "separatedAt": null,
- "isContractor": false,
- "createdAt": "2026-03-26T10:00:00.000Z",
- "updatedAt": "2026-03-26T10:00:00.000Z"
}Updates an existing HR user identity. Only fields included in the request body are updated; omitted fields retain their current values.
๐งช Note: This endpoint is in beta and may change.
๐ Requires user-identity-hris-put permission.
๐ Requires your account have the Custom Connections and Tests feature. Contact your CSM for help upgrading.
Successful
Malformed data and/or validation errors
Invalid Authorization
You must upgrade your plan to use this feature
You are not allowed to perform this action
Not Found
You must accept the Drata terms and conditions to use the API
Internal server error
{- "firstName": "Jane",
- "lastName": "Doe",
- "jobTitle": "Senior Software Engineer",
- "managerId": "emp-050",
- "managerName": "Bob Manager",
- "startedAt": "2022-03-01T00:00:00.000Z",
- "separatedAt": "2024-12-31T00:00:00.000Z",
- "isContractor": false
}{- "id": 1001,
- "identityId": "emp-001",
- "secondaryEmail": null,
- "firstName": "Jane",
- "lastName": "Doe",
- "jobTitle": "Software Engineer",
- "managerId": "emp-050",
- "managerName": "Bob Manager",
- "startedAt": "2022-03-01T00:00:00.000Z",
- "separatedAt": null,
- "isContractor": false,
- "createdAt": "2026-03-26T10:00:00.000Z",
- "updatedAt": "2026-03-26T10:00:00.000Z"
}Soft-deletes an HR user identity. This endpoint is intended for removing records submitted in error (e.g. test data, duplicates, or employees who should never have been included). To indicate that an employee has left, use the PUT endpoint to set the separatedAt field instead โ this preserves employment history and allows identity sync to correctly classify the person as FORMER_EMPLOYEE or FORMER_CONTRACTOR. If the deleted record was previously matched to a Drata user, that user's employment status will move to UNKNOWN at the next identity sync. A deleted record can be restored by re-submitting it via the batch upsert endpoint with the same identityId.
๐งช Note: This endpoint is in beta and may change.
๐ Requires user-identity-hris-delete permission.
๐ Requires your account have the Custom Connections and Tests feature. Contact your CSM for help upgrading.
No Content
Invalid Authorization
You must upgrade your plan to use this feature
You are not allowed to perform this action
Not Found
You must accept the Drata terms and conditions to use the API
Internal server error
{- "statusCode": 0,
- "message": "string",
- "code": 0,
- "debugInfo": {
- "name": "string",
- "message": "string",
- "stack": "string"
}
}