Knit helps you connect with 30+ ATS, HRIS, Accounting and CRM integrations 10X faster, using just one API
Read anything, write anything with our two-way data sync option
Work with a common data model, normalized for each category of software
Map all data not included in our standard data model directly from the dashboard
The Account object refers to an individual account which is a person or a company. A Person Account will have an account as well as a Contact associated with it
The Contact object represents a person associated with an Account in a CRM system
The Lead object is used to represent a potential customer
The Deal object refers to a sales opportunity or a deal within the CRM system
The Stage object represents the current stage of a sales opportunity or a deal
Engagement object refers to the engagement or interaction details captured in the CRM system
With Knit taking care of all your integration needs, you are free to spend 100% of your tech bandwidth to build and upgrade your own product
You need to integrate only once. Whenever a new integration is added to the category, you get immediate access and sync capability without writing a single line of code
Never lose another deal over security concerns. Safe designs, security certifications, safety standards and data protocols make Knit an immediate customer's favorite
Connect with multiple ATS, HRIS, Accounting, CRM and Chat tools using only the Knit API
Keka is a leading human resources management system that enables organizations to seamlessly manage diverse aspects of their human resource processes, including recruitment and onboarding, attendance and time management, payroll, expense and performance management. With OAuth authentication, rate limiting, pagination, and adherence to industry standards, Keka provides developers with everything they need to build robust integrations with their software/ platform and facilitate data exchange between their application and this leading HRMS portal.
To ensure safe and secure access, Keka API uses OAuth for authentication. This suggests that for successful integration, developers need an access token which can be generated with specific details. This includes client id (identifier for the client), client secret (for secure authentication), api key (unique API key for accessing the system), scope (requires passing kekaapi for this key). To facilitate integration testing for applications, developers can also leverage the Sandbox Environment which is offered by Keka. This allows developers to ensure robust functionality, before integration production begins. Keka APIs already come with pagination implemented to ensure response time optimization. The standard or the default page size in Keka is 100 with 1 being the default page number.
API limit is a critical element of any API and so is the case with Keka, which helps define the number of requests that can be made to Keka within a limited time period. Keka has a rate limit of 50 API requests/ minute. This suggests that once 50 requests are made in a minute, the user needs to wait for the quote to be refilled before any other request is made. The rate limits are enforced and automatically reset after 60 seconds. In case a request is made before the quota is refilled, a 429 error with the reason rateLimitExceeded will be sent.
As a developer or the representative of an organization seeking to integrate with Keka API, it is important to understand the endpoints that you will be using eventually for data exchange, both when it comes to read APIs (getting data from Keka) as well as write APIs (providing data to Keka).
GET https://{company}.{environment}.com/api/v1/hris/employees
POST https://{company}.{environment}.com/api/v1/hris/employees
GET https://{company}.{environment}.com/api/v1/hris/employees/{id}
GET https://{company}.{environment}.com/api/v1/hris/employees/updatefields
PUT https://{company}.{environment}.com/api/v1/hris/employees/{id}/personaldetails
PUT https://{company}.{environment}.com/api/v1/hris/employees/{id}/jobdetails
GET https://{company}.{environment}.com/api/v1/hris/groups
GET https://{company}.{environment}.com/api/v1/hris/grouptypes
GET https://{company}.{environment}.com/api/v1/hris/departments
GET https://{company}.{environment}.com/api/v1/hris/locations
GET https://{company}.{environment}.com/api/v1/hris/jobtitles
GET https://{company}.{environment}.com/api/v1/hris/currencies
GET https://{company}.{environment}.com/api/v1/hris/noticeperiods
GET https://{company}.{environment}.com/api/v1/time/leavetypes
GET https://{company}.{environment}.com/api/v1/time/leavebalance
GET https://{company}.{environment}.com/api/v1/time/leaverequests
POST https://{company}.{environment}.com/api/v1/time/leaverequests
GET https://{company}.{environment}.com/api/v1/time/attendance
GET https://{company}.{environment}.com/api/v1/time/capturescheme
GET https://{company}.{environment}.com/api/v1/time/holidayscalendar
GET https://{company}.{environment}.com/api/v1/payroll/salarycomponents
GET https://{company}.{environment}.com/api/v1/payroll/paygroups
GET https://{company}.{environment}.com/api/v1/payroll/paygroups/{payGroupId}/paycycles
GET https://{company}.{environment}.com/api/v1/payroll/paygroups/{payGroupId}/paycycles/{payCycleId}/payregister
GET https://{company}.{environment}.com/api/v1/payroll/paygroups/{payGroupId}/paycycles/{payCycleId}/paybatches
GET https://{company}.{environment}.com/api/v1/payroll/paygroups/{payGroupId}/paycycles/{payCycleId}/paybatches/{payBatchId}/payments
PUT https://{company}.{environment}.com/api/v1/payroll/paygroups/{payGroupId}/paycycles/{payCycleId}/paybatches/{payBatchId}/payments
GET https://{company}.{environment}.com/api/v1/payroll/paygrades
GET https://{company}.{environment}.com/api/v1/payroll/paybands
GET https://{company}.{environment}.com/api/v1/psa/clients
POST https://{company}.{environment}.com/api/v1/psa/clients
GET https://{company}.{environment}.com/api/v1/psa/clients/{id}
PUT https://{company}.{environment}.com/api/v1/psa/clients/{id}
GET https://{company}.{environment}.com/api/v1/psa/projects/{projectId}/phases
POST https://{company}.{environment}.com/api/v1/psa/projects/{projectId}/phases
GET https://{company}.{environment}.com/api/v1/psa/projects
POST https://{company}.{environment}.com/api/v1/psa/projects
GET https://{company}.{environment}.com/api/v1/psa/projects/{id}
PUT https://{company}.{environment}.com/api/v1/psa/projects/{id}
GET https://{company}.{environment}.com/api/v1/psa/projects/{id}/allocations
GET https://{company}.{environment}.com/api/v1/psa/projects/{id}/timeentries
GET https://{company}.{environment}.com/api/v1/psa/projects/{projectId}/tasks
POST https://{company}.{environment}.com/api/v1/psa/projects/{projectId}/tasks
PUT https://{company}.{environment}.com/api/v1/psa/projects/{projectId}/tasks/{taskId}
GET https://{company}.{environment}.com/api/v1/psa/projects/{projectId}/tasks/{taskId}/timeentries
GET https://{company}.{environment}.com/api/v1/pms/timeframes
GET https://{company}.{environment}.com/api/v1/pms/goals
PUT https://{company}.{environment}.com/api/v1/pms/goals/{goalId}/progress
GET https://{company}.{environment}.com/api/v1/pms/badges
POST https://{company}.{environment}.com/api/v1/pms/praise
GET https://{company}.{environment}.com/api/v1/expense/categories
GET https://{company}.{environment}.com/api/v1/expense/claims
GET https://{company}.{environment}.com/api/v1/expensepolicies
GET https://{company}.{environment}.com/api/v1/assets
GET https://{company}.{environment}.com/api/v1/assets/types
GET https://{company}.{environment}.com/api/v1/assets/categories
GET https://{company}.{environment}.com/api/v1/assets/conditions
Keka, as an HRMS tool, is widely used with 5000+ customers, including:
Here’s a list of quick FAQs which will help answer any thoughts that you might have during your journey of integrating your application with Keka API
If you are just getting started, it might be a good idea to go through this documentation to understand how you can initiate the integration process. The detailed documentation contains everything you need to know about the overview, endpoints and much more. Leverage this to learn about the different data models scope and other details which will come in handy to get started. At the same time, this link will help you generate the access token for seamless authentication.
While the guide shared above will serve as a comprehensive starting point for you to integrate your application with Keka API, it is important to understand that the entire process can be engineering heavy, time consuming and resource intensive. Put simply, it’s not just about building an integration, but also about managing and maintaining it over time. At the same time, if you want to connect with other HRMS APIs, the process becomes multifold. In such a situation, leveraging a unified HRMS API like Knit can come in handy. Knit enables SaaS businesses to easily connect with multiple HRMS applications by integrating once with its unified API, eliminating the need to connect with each application separately.
Book a demo call today to learn how you can accelerate your integration journey with Keka and other HRMS applications using Knit.
Paylocity is a market leader in providing cloud-based payroll and human capital management software. It provides intuitive and easy to use products that enable businesses to automate and streamline their HR and payroll processes, facilitate better hiring practices and build a culture of retention and engagement. To facilitate connections with different applications, Paylocity offers open, developer-friendly APIs. With automation at the core, Paylocity API ensures that updates, i.e. when payroll is processed or when there is any change in the employee base (hire, transfer, termination) webhooks are pushed to reflect the changes.
This article will help you understand how Paylocity API functions, how developers can authenticate and access the same. Furthermore, it will highlight the different endpoints, use cases and FAQs that are integral to a smooth integration journey. Finally, it will discuss the common integration use cases for Paylocity API, focusing on the category of applications that can seamlessly integrate with Paylocity for business impact.
To ensure safe and limited access, Paylocity API leverages OAuth2 for authentication using Client Credentials. In this form of authentication, each API call to Paylocity API is accompanied by a HTTP Header named Authorization, along with a bearer token (with limited time validity), from the Paylocity Identity Provider. The token for authentication only has a life of 60 minutes and expires post that. Using an expired token will lead to a failed response. To receive the token, you must have client_id and secret.
API filtering is quite an important attribute when it comes to ensuring that only relevant data is exchanged and also increases the speed of exchange. Paylocity API filtering works on the principle of request-response communication. Whenever an API request is made to the server, the filter criteria must be specified. Subsequently, once the server processes this request, the filter is applied and only relevant data, which meets the criteria is sent back.
To prevent overuse or overconsumption of resources, Paylocity API has set rate limits, permitting up to 40,000 calls per hour. If more requests are made than the set limit, a 403 forbidden error message appears, indicating overuse. To prevent overuse of API calls and to stay within the rate limit, developers can optimize their code to minimize the API calls made per minute, by caching data, removing redundant requests and making API calls only when necessary. Implementing rate limiting logic, and retry mechanism can also help in error handling.
To integrate with Paylocity API, it is important to have an understanding of the objects, data models and endpoints you will be working with. Here’s a quick starting point:
POST https://apisandbox.paylocity.com/api/v1/deduction
DELETE https://apisandbox.paylocity.com/api/v1/companies/{companyId}/employees/{employeeId}/deductions/{deductionCode}/{startDate}
GET https://apisandbox.paylocity.com/api/v1/companies/{companyId}/employees/{employeeId}/deductions
GET https://apisandbox.paylocity.com/api/v1/companies/{companyId}/employees/{employeeId}/deductions/{deductionCode}
POST https://apisandbox.paylocity.com/api/v1/companies/{companyId}/onboarding/employees
GET https://apisandbox.paylocity.com/api/v1/companies/{companyId}/employees/{employeeId}/localTaxes/{taxCode}
PUT https://apisandbox.paylocity.com/api/v1/companies/{companyId}/employees/{employeeId}/localTaxes/{taxCode}
DELETE https://apisandbox.paylocity.com/api/v1/companies/{companyId}/employees/{employeeId}/localTaxes/{taxCode}
GET https://apisandbox.paylocity.com/api/v1/companies/{companyId}/employees/{employeeId}/localTaxes
POST https://apisandbox.paylocity.com/api/v1/companies/{companyId}/employees/{employeeId}/localTaxes
PUT https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}/additionalRates
GET https://apisandbox.paylocity.com/api/v2/companies/{companyId}/codes/{codeResource}
GET https://apisandbox.paylocity.com/api/v2/companies/{companyId}/customfields/{category}
GET https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}/directDeposit
GET https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}/earnings
PUT https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}/earnings
GET https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}/earnings/{earningCode}/{startDate}
DELETE https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}/earnings/{earningCode}/{startDate}
GET
https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}/earnings/{earningCode}
PUT https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}/emergencyContacts
PUT https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}/benefitSetup
GET https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees
POST https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees
GET https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}
PATCH https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}
GET https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}/sensitivedata
PUT https://apisandbox.paylocity.com/api/v2/companies/{companyId}/employees/{employeeId}/sensitivedata
GET https://dc1demogwext.paylocity.com/apiHub/benefits/v1/companies/{companyId}/retirementPlans/{planId}/checks/{checkDate}
36,000+ customers use Paylocity for the HR and payroll needs, including:
A quick glance on the common FAQs that developers have about Paylocity API can help you accelerate your integration journey:
Here’s a non-exhaustive list of applications (categories), which can easily integrate with Paylocity API to facilitate easy exchange of employee relevant information and further their impact, without the need to duplicate information upload:
Paylocity offers several APIs for different use cases. Therefore, as the first step, you need to understand your integration needs and then identify the right API and endpoints to connect with. The next step is to get the access token to access the sandbox or the demo environment (oAuth credentials). Once you get the access, leverage guides like this one to build, test and go-live with your Paylocity API integration.
As visible from the section above, integration with Paylocity API involves several steps and knowledge transfer across several documentation guides. Fortunately, unified API providers like Knit, make it very easy for developers to integrate with Paylocity and multiple other HRIS applications in a very short time. Adding an additional abstraction layer to the API infrastructure, Knit’s unified HRIS API ensures that customers only have to integrate once and they can then connect with all other HRIS applications from there. To understand more about how a unified HRIS API can help you significantly optimize your integration building and management process, book a discovery call today.
Gusto is an online payroll and HR solutions company. Backed by global expertise Gusto provides companies with one easy, integrated platform, to automate and simplify payroll, benefits, and HR processes. From time tracking, to performance management, analytics and even benefits administration, Gusto application enables businesses to make HR management seamless and streamlined, while saving hours and reducing human errors considerably.
As a security first application, Gusto leverages OAuth2 for authentication. Gusto API integration uses two types of tokens for security and authentication. On the one side are organization level API tokens which can be accessed through the Developer Portal. Additionally, there are company level tokens (generally access tokens or refresh tokens), which are provided via the OAuth2 process. It is very important for developers building integrations with Gusto API to manage, store and maintain all tokens securely to prevent unauthorized authentication and access.
Essentially, API tokens are used specifically for organization level endpoints, like creating a company, and cannot be used for company or employee level endpoints. For the latter, developers must focus on access tokens via OAuth2. To facilitate higher levels of security, Gusto API ensures that all endpoints which are authenticated via access tokens require a strict access token, which is reserved for access only to a single company.
Gusto API endpoints support pagination. To use pagination, developers can add a page and a per parameter to their URL’s query string. The page can define the page number from where records are sought, and the per parameter dictates the number of records per page. In case the per parameter is left blank, by default 25 records will be returned. Each endpoint’s documentation reflects on whether or not it supports pagination.
To ensure high performance throughput, Gusto API maintains an API rate limit of 200 requests per minute. This suggests that 200 API calls can be made within the 60 second time window, beyond which a violation will be evaluated. A 429 error, highlighting too many requests will be displayed if the rate limit is hit for an active integration and the request will be subsequently rejected.
An understanding of the Gusto API objects, data models and endpoints is extremely important for developers seeking to build integrations with Gusto API. Some of the key endpoints include:
POST https://api.gusto-demo.com/v1/provision
GET https://api.gusto-demo.com/v1/companies/{company_id}
GET https://api.gusto-demo.com/v1/companies/{company_id}/custom_fields
POST https://api.gusto-demo.com/v1/companies/{company_id}/locations
GET https://api.gusto-demo.com/v1/companies/{company_id}/locations
GET https://api.gusto-demo.com/v1/locations/{location_id}
PUT https://api.gusto-demo.com/v1/locations/{location_id}
GET https://api.gusto-demo.com/v1/locations/{location_uuid}/minimum_wages
GET https://api.gusto-demo.com/v1/companies/{company_id}/pay_schedules
GET https://api.gusto-demo.com/v1/companies/{company_id}/pay_schedules/{pay_schedule_id}
GET https://api.gusto-demo.com/v1/companies/{company_id}/pay_periods
GET https://api.gusto-demo.com/v1/companies/{company_id}/pay_schedules/assignments
POST https://api.gusto-demo.com/v1/companies/{company_uuid}/departments
GET https://api.gusto-demo.com/v1/companies/{company_uuid}/departments
GET https://api.gusto-demo.com/v1/departments/{department_uuid}
PUT https://api.gusto-demo.com/v1/departments/{department_uuid}
DELETE https://api.gusto-demo.com/v1/departments/{department_uuid}
PUT https://api.gusto-demo.com/v1/departments/{department_uuid}/add
PUT https://api.gusto-demo.com/v1/departments/{department_uuid}/remove
POST https://api.gusto-demo.com/v1/companies/{company_id}/earning_types
GET https://api.gusto-demo.com/v1/companies/{company_id}/earning_types
PUT https://api.gusto-demo.com/v1/companies/{company_id}/earning_types/{earning_type_uuid}
DELETE https://api.gusto-demo.com/v1/companies/{company_id}/earning_types/{earning_type_uuid}
GET https://api.gusto-demo.com/v1/companies/{company_id}/payrolls
GET https://api.gusto-demo.com/v1/companies/{company_id}/payrolls/{payroll_id}
PUT https://api.gusto-demo.com/v1/companies/{company_id}/payrolls/{payroll_id}
PUT https://api.gusto-demo.com/v1/companies/{company_id}/payrolls/{payroll_id}/prepare
GET https://api.gusto-demo.com/v1/companies/{company_id}/contractor_payments
GET https://api.gusto-demo.com/v1/companies/{company_id}/contractor_payments/{contractor_payment_id}
POST https://api.gusto-demo.com/v1/companies/{company_id}/company_benefits
GET https://api.gusto-demo.com/v1/companies/{company_id}/company_benefits
GET https://api.gusto-demo.com/v1/company_benefits/{company_benefit_id}
PUT https://api.gusto-demo.com/v1/company_benefits/{company_benefit_id}
DELETE https://api.gusto-demo.com/v1/company_benefits/{company_benefit_id}
GET https://api.gusto-demo.com/v1/benefits
GET https://api.gusto-demo.com/v1/benefits/{benefit_id}
GET https://api.gusto-demo.com/v1/company_benefits/{company_benefit_id}/summary
GET https://api.gusto-demo.com/v1/benefits/{benefit_id}/requirements
POST https://api.gusto-demo.com/v1/companies/{company_id}/employees
GET https://api.gusto-demo.com/v1/companies/{company_id}/employees
GET https://api.gusto-demo.com/v1/employees/{employee_id}
PUT https://api.gusto-demo.com/v1/employees/{employee_id}
DELETE https://api.gusto-demo.com/v1/employees/{employee_id}
GET https://api.gusto-demo.com/v1/employees/{employee_id}/custom_fields
GET https://api.gusto-demo.com/v1/employees/{employee_uuid}/time_off_activities
GET https://api.gusto-demo.com/v1/employees/{employee_id}/terminations
GET https://api.gusto-demo.com/v1/employees/{employee_id}/rehire
GET https://api.gusto-demo.com/v1/employees/{employee_id}/employment_history
GET https://api.gusto-demo.com/v1/employees/{employee_id}/home_addresses
POST https://api.gusto-demo.com/v1/employees/{employee_id}/home_addresses
GET https://api.gusto-demo.com/v1/home_addresses/{home_address_uuid}
PUT https://api.gusto-demo.com/v1/home_addresses/{home_address_uuid}
DELETE https://api.gusto-demo.com/v1/home_addresses/{home_address_uuid}
GET https://api.gusto-demo.com/v1/employees/{employee_id}/work_addresses
POST https://api.gusto-demo.com/v1/employees/{employee_id}/work_addresses
GET https://api.gusto-demo.com/v1/work_addresses/{work_address_uuid}
PUT https://api.gusto-demo.com/v1/work_addresses/{work_address_uuid}
DELETE https://api.gusto-demo.com/v1/work_addresses/{work_address_uuid}
POST https://api.gusto-demo.com/v1/employees/{employee_id}/jobs
GET https://api.gusto-demo.com/v1/employees/{employee_id}/jobs
GET https://api.gusto-demo.com/v1/jobs/{job_id}
PUT https://api.gusto-demo.com/v1/jobs/{job_id}
DELETE https://api.gusto-demo.com/v1/jobs/{job_id}
GET https://api.gusto-demo.com/v1/jobs/{job_id}/compensations
POST https://api.gusto-demo.com/v1/jobs/{job_id}/compensations
GET https://api.gusto-demo.com/v1/compensations/{compensation_id}
PUT https://api.gusto-demo.com/v1/compensations/{compensation_id}
DELETE https://api.gusto-demo.com/v1/compensations/{compensation_id}
POST https://api.gusto-demo.com/v1/employees/{employee_id}/employee_benefits
GET https://api.gusto-demo.com/v1/employees/{employee_id}/employee_benefits
GET https://api.gusto-demo.com/v1/employee_benefits/{employee_benefit_id}
PUT https://api.gusto-demo.com/v1/employee_benefits/{employee_benefit_id}
DELETE https://api.gusto-demo.com/v1/employee_benefits/{employee_benefit_id}
POST https://api.gusto-demo.com/v1/employees/{employee_id}/ytd_benefit_amounts_from_different_company
POST https://api.gusto-demo.com/v1/employees/{employee_id}/garnishments
GET https://api.gusto-demo.com/v1/employees/{employee_id}/garnishments
GET https://api.gusto-demo.com/v1/garnishments/{garnishment_id}
PUT https://api.gusto-demo.com/v1/garnishments/{garnishment_id}
Serving 300,000+ businesses, Gusto API is the preferred HR and payroll solutions provider for many global names, including:
Following is a list of FAQs that can help guide your Gusto API integration journey:
Undoubtedly, there are several categories of applications which can benefit from integrating with Gusto API. Listing a few for developers to get an idea:
To commence your integration journey with Gusto API, it is important to create a developer account. You can sign up for an account here. Once you sign up for a developer account, the next steps are quite streamlined. It involves accepting the terms of service, setting up the account, creating the application to get access to your unique Gusto API keys. As a best practice, it is ideal to go through the detailed documentation and guides offered by Gusto API to understand the diverse aspects of integration. You can check out the documentation resource to answer all questions you may have, here. Gusto API also offers a sandbox functionality to test and demo your work, before making a firm commitment.
Developers can build Gusto API integration for their applications following the steps mentioned in the section above and by leveraging the documentation shared. However, building one integration can take up to 4-6 weeks on an average, utilizing a lot of developer bandwidth, becoming a cost intensive project. In case you need to build more than one HRMS integration, leveraging a unified API like Knit is ideal. A unified API adds an additional layer of abstraction on top of the API, ensuring that developers only have to integrate with one unified API to connect with several HRMS applications supported by the unified API. To understand how a unified API like Knit can help your integration journey, book a demo today.