Integrate ClayHR with your product—along with any other
HR & payroll
ATS
 application

Connect your product to all the applications your customers use via Merge's Unified API to close more deals, retain customers, and expand to new markets

Get a demo

Sync ClayHR data

Applications

The Application Object is used to represent a candidate's journey through a particular Job's recruiting process. If a Candidate applies for multiple Jobs, there will be a separate Application for each Job if the third-party integration allows it.

No items found.

Candidates

The Candidate object is used to represent profile information about a given Candidate. Because it is specific to a Candidate, this information stays constant across applications.

No items found.

Departments

The Department object is used to represent a department within a company.

No items found.

Jobs

The Job object can be used to track any jobs that are currently or will be open/closed for applications.

No items found.

Job Interview Stages

The JobInterviewStage object is used to represent a particular recruiting stage for an Application. A given Application typically has the JobInterviewStage object represented in the current_stage field.

No items found.

Users

The RemoteUser object is used to represent a user with a login to the ATS system.

No items found.

Employees

The Employee object is used to represent any person who has been employed by a company. By default, it returns all employees. To filter for only active employees, set the employment_status query parameter to ACTIVE.

No items found.

Employments

The Employment object is used to represent a job position at a company. If an integration supports historical tracking of employments, it will be reflected in the data. If not, a new Employment object will be created whenever there is a change in job title or pay. The effective_date field should be used to order Employment objects, with the most recent date corresponding to the latest employment record for an employee.

No items found.

Groups

The Group object is used to represent any subset of employees across, for example, DEPARTMENT or TEAM. Employees can be in multiple Groups.

No items found.

Locations

The Location object is used to represent an address that can be associated with an employee.

No items found.

FAQ on integrating with ClayHR API

Are there any days you’ll be closed for the holidays in 2024?

Trusted to power integrations at

Logotype of HandshakeLogotype of RampLogotype of BrexLogotype of NavanLogotype of TaxBit
Logotype of HandshakeLogotype of RampLogotype of BrexLogotype of NavanLogotype of TaxBit
Logotype of HandshakeLogotype of RampLogotype of BrexLogotype of NavanLogotype of TaxBit
Logotype of HandshakeLogotype of RampLogotype of BrexLogotype of NavanLogotype of TaxBit

Make integrations your competitive advantage

More sales, less code, fewer headaches

Focus on your core product

Stop diverting your engineers to yet another integration and let them get back to work.

Give customer success a break

Manage your simplified integration issues in a single pane. No therapist required.

Stop losing sales due to integrations

Launch integrations in days, not quarters. Your sales team will thank you.

Seamless account linking

Integration authentication that feels like magic

Merge seamlessly manages authentication and authorization on behalf of your customers.
Offer account linking and permission controls to your users with Link for a customizable frontend or with Magic Link for URL-based authorization

View Docs
APIs made simple

The toolkit for all your integration needs

We make integrations painless with accessible API design, dead-simple SDKs, and beautiful documentation that we agonize over.

View Docs
Get Employee Data
1from merge import Merge
2
3client = Merge(
4    account_token="YOUR_ACCOUNT_TOKEN",
5    api_key="YOUR_API_KEY",
6)
7client.hris.employees.list()
import { MergeClient, Merge } from '@mergeapi/merge-node-client';
const merge = new MergeClient({
  apiKey: 'YOUR_API_KEY',
  accountToken: 'YOUR_ACCOUNT_TOKEN',
});
employee = await merge.hris.employees.list()
ApiClient.instance.authentications.tokenAuth = {
  type: 'bearer',
  accessToken: 'API_KEY',
};
new EmployeesApi().employeesList('ACCOUNT_TOKEN', {}, (data) => {
  console.log(data);
});
import (
  "context"
  "fmt"
  merge "github.com/fern-api/merge-go"
  mergeclient "github.com/fern-api/merge-go/client"
  "github.com/fern-api/merge-go/hris"
)

client := mergeclient.NewClient(
  mergeclient.ClientWithAuthApiKey("<YOUR_API_KEY>"),
1ApiClient client = Configuration.getDefaultApiClient();
2client.setBasePath('https://api.merge.dev/api/ats/v1');
3ApiKeyAuth tokenAuth = client.getAuthentication('tokenAuth');
4tokenAuth.setApiKey('API_KEY');
5CandidatesApi apiInstance = new CandidatesApi(client);
6apiInstance.candidatesList('ACCOUNT_TOKEN');
import com.merge.api.MergeApiClient;
import com.merge.api.resources.hris.employees.requests.EmployeesRetrieveRequest;
import com.merge.api.resources.hris.types.Employee;
MergeApiClient mergeClient = MergeApiClient.builder()
    .accountToken("ACCOUNT_TOKEN")
    .apiKey("API_KEY")
    .build();
Employee employee = mergeClient.hris().employees().list(
    EmployeesRetrieveRequest.builder()
        .includeRemoteData(true)

> {  

"id": "0958cbc6-6040-430a-848e-aafacbadf4ae",
"remote_id": "19202938",
"employee_number": "2",
"company": "8d9fd929-436c-4fd4-a48b-0c61f68d6178",
"first_name": "Dirna",
"last_name": "Emanuel",
"display_full_name": "Dirna Emanuel",
    "username": "dirnaemanuel",
    "groups": [

Meta endpoint

Programmatically access required schemas

Third-party providers require specific (and often different) fields to write data to their APIs, making your code a mess.

Dynamically fetch required data schemas from Merge’s /meta endpoint to make POST or PATCH requests that just work.

View Docs
Beyond building

Rely on the best integration observability system

Let our logs, issue detection, and automated alerts save your customer success team time, money, and headaches.

Forget maintenance - let your developers focus on building!

Start for free

Case study

How Drata increases customer value and spends 80% less time managing integrations

View case study

​​Working with Merge’s Unified API and beautiful React component took less than a sprint to integrate, test, and release.

Daniel Marashlian
Co-Founder & CTO, Drata
Integrate once

Supported HRIS platforms

Supported ATS platforms

Abstract away API complexity with Merge
7shifts
ADP DECIDIUM
ADP Next Gen
ADP RUN
ADP Workforce Now
AllianceHCM
Altera Payroll
ApplicantStack
Ashby
Avature
BambooHR
Breathe
Breezy
Bullhorn
CATS
Cezanne HR
Charlie
ChartHop
Clockwork
Comeet
CoolCare
Cornerstone TalentLink
Crelate
CyberArk
Darwinbox
Dayforce
Deel
Easycruit
Employment Hero
EngageATS
Eploy
Factorial
Flatchr
Folks HR
Fountain
Freshteam
Gem
Google Workspace
Greenhouse
Greenhouse Job Board API
Gusto
HR Cloud
HR Partner
HRWorks
Hailey HR
Harbour ATS
Hibob
Homerun
Humaans
Humi
IRIS Cascade
ISolved
Infinite BrassRing
Insperity Premier
IntelliHR
JazzHR
JobAdder
JobDiva
JobScore
Jobsoid
Jobvite
Join
JumpCloud
Justworks
Kallidus
Keka
Kenjo
Lano
Lattice HRIS
Leapsome
Lever
Lucca
Manatal
Microsoft Entra ID
Namely
Nmbrs
Occupop
Officient
Okta
OneLogin
Onlyfy
Oracle Cloud Human Capital Management (HCM)
Oracle Fusion - Recruiting Cloud
Oracle Taleo
OysterHR
PayCaptain
PayFit
Paychex
Paycom
Paycor
Paylocity
PeopleHR
Personio
Personio Recruiting
PingOne
Pinpoint
Planday
Polymer
Proliant
Recruiterflow

Read more about building and maintaining multiple integrations

A guide to maintaining your product integrations

Blog

A guide to integrating multiple APIs

Blog

The top challenges of normalizing multiple API integrations

Blog

Make integrations your competitive advantage

Stay in touch to learn how Merge can unlock hundreds of integrations in days, not years

Get a demo