Developer tools

Everything developers need to build integrations

Merge is your integration toolbox. Integrate quickly with drop-in frontend components, backend SDKs, sandbox accounts, and a whole lot more.

Trusted to power integrations globally

Thanks to the exceptional support by the Merge team, BILL launched 40+ HRIS integrations, allowing our engineering team to focus more on our core products. Merge also contributed amazing ideas on how to effectively promote the launch.

Chris Ashby
Chris Ashby
BILL
Product Marketing Manager

With Merge, managing API integrations shifted from a technical task for engineers to something our customer support could easily handle.

Ry Sullivan
Ry Sullivan
Snappy
Chief Product Officer

Merge should make you and your end users’ lives easier: less work in building multiple integrations, real-time data syncing, and accurate data.

Zoran Kovačević
Zoran Kovačević
Navan
Senior Director of Product Management

We don't have that many people, and we have a lot to build. Merge's easy access to enabling integrations allowed us to move forward.

Molly Liu
Molly Liu
Ramp
Product Manager

It's so sick -- it took me 2 days to build out this CRM integration and now we can connect to 20+ CRMs in Causal!

Lukas Köebis
Lukas Köebis
Causal
Founder

Merge allows us to integrate with dozens of HRIS and ATS providers, cutting down our development time and substantially expanding our market opportunity.

Enrique Esclusa
Enrique Esclusa
Assemble
Co-Founder

It takes my team a matter of an hour or less to identify and address integration issues using the Merge Dashboard. Previously, it may take them up to 5 hours.

Harrison Krat
Harrison Krat
Drata
Director of Solutions Architecture

Merge has saved us thousands of engineering hours by funneling a significant amount of 3rd parties into a single set of APIs for us to consume.

Scott Burns
Scott Burns
Welcome
Engineering Manager

Our customers absolutely LOVE the fact that we integrate with all major HRIS - all thanks to Merge.

Eugene Ling
Eugene Ling
Opal
Head of Business

Merge is truly a game-changer for the industry, for our company, and for our users. I actually look forward to setting up integrations now instead of dreading them!

Kara Peabody
Kara Peabody
Jirav
Senior Product Manager

People think that getting the integrations set up will take a quarter. With Merge, we just onboarded a $250M-revenue brand in two days.

Kara Holinski
Kara Holinski
Confido
CTO
Get Employee Data
import merge
from merge.client import Merge
merge_client = Merge(api_key="<YOUR_API_KEY>", account_token="<YOUR_ACCOUNT_TOKEN>")
employee = merge_client.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>"),
  mergeclient.ClientWithHeaderAccountToken("<YOUR_ACCOUNT_TOKEN>"),
)
employee, err := client.Hris().Employees().List(
  context.TODO(),
  &hris.EmployeesRetrieveRequest{
    IncludeRemoteData: merge.Bool(true),
  },
)
if err != nil {
  return err
}
fmt.Printf("Retrieved employee with ID %q\n", *employee.Id)
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath('https://api.merge.dev/api/ats/v1');
ApiKeyAuth tokenAuth = client.getAuthentication('tokenAuth');
tokenAuth.setApiKey('API_KEY');
CandidatesApi apiInstance = new CandidatesApi(client);
apiInstance.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)
        .build());
{
"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": [
  "21a54124-397f-494d-985e-3c5b330b8a68"
],
"work_email": "dirna@merge.dev",
"personal_email": "dirnaemanuel@gmail.com",
"mobile_phone_number": "+1234567890",
"employments": [
  "17a54124-287f-494d-965e-3c5b330c9a68"

Thanks to the exceptional support by the Merge team, BILL launched 40+ HRIS integrations, allowing our engineering team to focus more on our core products. Merge also contributed amazing ideas on how to effectively promote the launch.

Chris Ashby
Chris Ashby
BILL
Product Marketing Manager

With Merge, managing API integrations shifted from a technical task for engineers to something our customer support could easily handle.

Ry Sullivan
Ry Sullivan
Snappy
Chief Product Officer

Merge should make you and your end users’ lives easier: less work in building multiple integrations, real-time data syncing, and accurate data.

Zoran Kovačević
Zoran Kovačević
Navan
Senior Director of Product Management

We don't have that many people, and we have a lot to build. Merge's easy access to enabling integrations allowed us to move forward.

Molly Liu
Molly Liu
Ramp
Product Manager

It's so sick -- it took me 2 days to build out this CRM integration and now we can connect to 20+ CRMs in Causal!

Lukas Köebis
Lukas Köebis
Causal
Founder

Merge allows us to integrate with dozens of HRIS and ATS providers, cutting down our development time and substantially expanding our market opportunity.

Enrique Esclusa
Enrique Esclusa
Assemble
Co-Founder

It takes my team a matter of an hour or less to identify and address integration issues using the Merge Dashboard. Previously, it may take them up to 5 hours.

Harrison Krat
Harrison Krat
Drata
Director of Solutions Architecture

Merge has saved us thousands of engineering hours by funneling a significant amount of 3rd parties into a single set of APIs for us to consume.

Scott Burns
Scott Burns
Welcome
Engineering Manager

Our customers absolutely LOVE the fact that we integrate with all major HRIS - all thanks to Merge.

Eugene Ling
Eugene Ling
Opal
Head of Business

Merge is truly a game-changer for the industry, for our company, and for our users. I actually look forward to setting up integrations now instead of dreading them!

Kara Peabody
Kara Peabody
Jirav
Senior Product Manager

People think that getting the integrations set up will take a quarter. With Merge, we just onboarded a $250M-revenue brand in two days.

Kara Holinski
Kara Holinski
Confido
CTO
SDKs

SDKs that take the effort out of building

Merge offers SDKs to interact with our API for
every category and a variety of languages

View docs
Get Employee Data
import merge
from merge.client import Merge
merge_client = Merge(api_key="<YOUR_API_KEY>", account_token="<YOUR_ACCOUNT_TOKEN>")
employee = merge_client.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>"),
  mergeclient.ClientWithHeaderAccountToken("<YOUR_ACCOUNT_TOKEN>"),
)
employee, err := client.Hris().Employees().List(
  context.TODO(),
  &hris.EmployeesRetrieveRequest{
    IncludeRemoteData: merge.Bool(true),
  },
)
if err != nil {
  return err
}
fmt.Printf("Retrieved employee with ID %q\n", *employee.Id)
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath('https://api.merge.dev/api/ats/v1');
ApiKeyAuth tokenAuth = client.getAuthentication('tokenAuth');
tokenAuth.setApiKey('API_KEY');
CandidatesApi apiInstance = new CandidatesApi(client);
apiInstance.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)
        .build());
{
"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": [
  "21a54124-397f-494d-985e-3c5b330b8a68"
],
"work_email": "dirna@merge.dev",
"personal_email": "dirnaemanuel@gmail.com",
"mobile_phone_number": "+1234567890",
"employments": [
  "17a54124-287f-494d-965e-3c5b330c9a68"
Sandbox accounts

Instantly access sandbox environments

Merge provides sandbox accounts with third-party API providers so you can build and test your integrations with confidence

Get in touch
Simplified data writes

Programmatically access required fields for writing data

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
Developer resources

Everything you need to build an integration in an hour

How Drata helps thousands streamline their SOC 2 with Merge

Read case study

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

Daniel Marashlian of profile photo
Daniel Marashlian
Co-Founder & CTO