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.
Gusto API Authentication, Pagination, Rate Limits
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.
Gusto API Objects, Data Models & Endpoints
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:
Companies
- Create a company
POST https://api.gusto-demo.com/v1/provision
- Get a company
GET https://api.gusto-demo.com/v1/companies/{company_id}
- Get the custom fields of a company
GET https://api.gusto-demo.com/v1/companies/{company_id}/custom_fields
Locations
- Create a company location
POST https://api.gusto-demo.com/v1/companies/{company_id}/locations
- Get company locations
GET https://api.gusto-demo.com/v1/companies/{company_id}/locations
- Get a location
GET https://api.gusto-demo.com/v1/locations/{location_id}
- Update a location
PUT https://api.gusto-demo.com/v1/locations/{location_id}
- Get minimum wages for a location
GET https://api.gusto-demo.com/v1/locations/{location_uuid}/minimum_wages
Pay Schedules
- Get the pay schedules for a company
GET https://api.gusto-demo.com/v1/companies/{company_id}/pay_schedules
- Get a pay schedule
GET https://api.gusto-demo.com/v1/companies/{company_id}/pay_schedules/{pay_schedule_id}
- Get pay periods for a company
GET https://api.gusto-demo.com/v1/companies/{company_id}/pay_periods
- Get pay schedule assignments for a company
GET https://api.gusto-demo.com/v1/companies/{company_id}/pay_schedules/assignments
Departments
- Create a department
POST https://api.gusto-demo.com/v1/companies/{company_uuid}/departments
- Get all departments of a company
GET https://api.gusto-demo.com/v1/companies/{company_uuid}/departments
- Get a department
GET https://api.gusto-demo.com/v1/departments/{department_uuid}
- Update a department
PUT https://api.gusto-demo.com/v1/departments/{department_uuid}
- Delete a department
DELETE https://api.gusto-demo.com/v1/departments/{department_uuid}
- Add people to a department
PUT https://api.gusto-demo.com/v1/departments/{department_uuid}/add
- Remove people from a department
PUT https://api.gusto-demo.com/v1/departments/{department_uuid}/remove
Earning Types
- Create a custom earning type
POST https://api.gusto-demo.com/v1/companies/{company_id}/earning_types
- Get all earning types for a company
GET https://api.gusto-demo.com/v1/companies/{company_id}/earning_types
- Update an earning type
PUT https://api.gusto-demo.com/v1/companies/{company_id}/earning_types/{earning_type_uuid}
- Deactivate an earning type
DELETE https://api.gusto-demo.com/v1/companies/{company_id}/earning_types/{earning_type_uuid}
Payrolls
- Get all payrolls for a company
GET https://api.gusto-demo.com/v1/companies/{company_id}/payrolls
- Get a single payroll
GET https://api.gusto-demo.com/v1/companies/{company_id}/payrolls/{payroll_id}
- Update a payroll by ID
PUT https://api.gusto-demo.com/v1/companies/{company_id}/payrolls/{payroll_id}
- Prepare a payroll for update
PUT https://api.gusto-demo.com/v1/companies/{company_id}/payrolls/{payroll_id}/prepare
Contractor Payments
- Get contractor payments for a company
GET https://api.gusto-demo.com/v1/companies/{company_id}/contractor_payments
- Get a single contractor payment
GET https://api.gusto-demo.com/v1/companies/{company_id}/contractor_payments/{contractor_payment_id}
Company Benefits
- Create a company benefit
POST https://api.gusto-demo.com/v1/companies/{company_id}/company_benefits
- Get benefits for a company
GET https://api.gusto-demo.com/v1/companies/{company_id}/company_benefits
- Get a company benefit
GET https://api.gusto-demo.com/v1/company_benefits/{company_benefit_id}
- Update a company benefit
PUT https://api.gusto-demo.com/v1/company_benefits/{company_benefit_id}
- Delete a company benefit
DELETE https://api.gusto-demo.com/v1/company_benefits/{company_benefit_id}
- Get all benefits supported by Gusto
GET https://api.gusto-demo.com/v1/benefits
- Get a supported benefit by ID
GET https://api.gusto-demo.com/v1/benefits/{benefit_id}
- Get company benefit summary by company benefit id.
GET https://api.gusto-demo.com/v1/company_benefits/{company_benefit_id}/summary
- Get benefit fields requirements by ID
GET https://api.gusto-demo.com/v1/benefits/{benefit_id}/requirements
Employees
- Create an employee
POST https://api.gusto-demo.com/v1/companies/{company_id}/employees
- Get employees of a company
GET https://api.gusto-demo.com/v1/companies/{company_id}/employees
- Get an employee
GET https://api.gusto-demo.com/v1/employees/{employee_id}
- Update an employee
PUT https://api.gusto-demo.com/v1/employees/{employee_id}
- Delete an onboarding employee
DELETE https://api.gusto-demo.com/v1/employees/{employee_id}
- Get an employee's custom fields
GET https://api.gusto-demo.com/v1/employees/{employee_id}/custom_fields
- Get employee time off activities
GET https://api.gusto-demo.com/v1/employees/{employee_uuid}/time_off_activities
Employee Employments
- Get terminations for an employee
GET https://api.gusto-demo.com/v1/employees/{employee_id}/terminations
- Get an employee rehire
GET https://api.gusto-demo.com/v1/employees/{employee_id}/rehire
- Get employment history for an employee
GET https://api.gusto-demo.com/v1/employees/{employee_id}/employment_history
Employee Addresses
- Get an employee's home addresses
GET https://api.gusto-demo.com/v1/employees/{employee_id}/home_addresses
- Create an employee's home address
POST https://api.gusto-demo.com/v1/employees/{employee_id}/home_addresses
- Get an employee's home address
GET https://api.gusto-demo.com/v1/home_addresses/{home_address_uuid}
- Update an employee's home address
PUT https://api.gusto-demo.com/v1/home_addresses/{home_address_uuid}
- Delete an employee's home address
DELETE https://api.gusto-demo.com/v1/home_addresses/{home_address_uuid}
- Get an employee's work addresses
GET https://api.gusto-demo.com/v1/employees/{employee_id}/work_addresses
- Create an employee work address
POST https://api.gusto-demo.com/v1/employees/{employee_id}/work_addresses
- Get an employee work address
GET https://api.gusto-demo.com/v1/work_addresses/{work_address_uuid}
- Update an employee work address
PUT https://api.gusto-demo.com/v1/work_addresses/{work_address_uuid}
- Delete an employee's work address
DELETE https://api.gusto-demo.com/v1/work_addresses/{work_address_uuid}
Jobs and Compensations
- Create a job
POST https://api.gusto-demo.com/v1/employees/{employee_id}/jobs
- Get jobs for an employee
GET https://api.gusto-demo.com/v1/employees/{employee_id}/jobs
- Get a job
GET https://api.gusto-demo.com/v1/jobs/{job_id}
- Update a job
PUT https://api.gusto-demo.com/v1/jobs/{job_id}
- Delete an individual job
DELETE https://api.gusto-demo.com/v1/jobs/{job_id}
- Get compensations for a job
GET https://api.gusto-demo.com/v1/jobs/{job_id}/compensations
- Create a compensation
POST https://api.gusto-demo.com/v1/jobs/{job_id}/compensations
- Get a compensation
GET https://api.gusto-demo.com/v1/compensations/{compensation_id}
- Update a compensation
PUT https://api.gusto-demo.com/v1/compensations/{compensation_id}
- Delete a compensation
DELETE https://api.gusto-demo.com/v1/compensations/{compensation_id}
Employee Benefits
- Create an employee benefit
POST https://api.gusto-demo.com/v1/employees/{employee_id}/employee_benefits
- Get all benefits for an employee
GET https://api.gusto-demo.com/v1/employees/{employee_id}/employee_benefits
- Get an employee benefit
GET https://api.gusto-demo.com/v1/employee_benefits/{employee_benefit_id}
- Update an employee benefit
PUT https://api.gusto-demo.com/v1/employee_benefits/{employee_benefit_id}
- Delete an employee benefit
DELETE https://api.gusto-demo.com/v1/employee_benefits/{employee_benefit_id}
- Create year-to-date benefit amounts from a different company
POST https://api.gusto-demo.com/v1/employees/{employee_id}/ytd_benefit_amounts_from_different_company
Garnishments
- Create a garnishment
POST https://api.gusto-demo.com/v1/employees/{employee_id}/garnishments
- Get garnishments for an employee
GET https://api.gusto-demo.com/v1/employees/{employee_id}/garnishments
- Get a garnishment
GET https://api.gusto-demo.com/v1/garnishments/{garnishment_id}
- Update a garnishment
PUT https://api.gusto-demo.com/v1/garnishments/{garnishment_id}
Gusto API Use Cases
- Automate employee time tracking (with flexible scheduling and remote work options), approval and accurate payroll creation
- Rely on robust and customizable checklists for employee onboarding and ensure software provisioning with a few clicks
- Automate workflow for performance management including self evaluation, manager review and career development sources with custom performance software
- Leverage customizable reports, anonymous team surveys, automatic compliance alerts for holistic team insights
- Create a payroll which runs on autopilot with automated calculations, compliances and much more
Top customers
Serving 300,000+ businesses, Gusto API is the preferred HR and payroll solutions provider for many global names, including:
- Little Fish Accounting, a boutique CPA firm providing small businesses, entrepreneurs, and freelancers with accounting + tax support
- ApproveMe.com, a document signing experience™ that helps businesses build better relationships with their signers
- Snapbar, a company that develops intuitive, web-based products leveraging the power of photo and video
- Heckler Design, a firm that creates beautifully simple, commercial-grade hardware and furniture for design-conscious consumers and businesses
- Floyd Lee Locums, a company that provides an elite concierge experience to physicians, CRNAs, nurse practitioners, physician assistants, and other healthcare providers
Gusto API FAQs
Following is a list of FAQs that can help guide your Gusto API integration journey:
- How do I get access to a sandbox environment to build Gusto API integration? Answer
- How do I get API keys for Gusto API? Answer
- Can I change the redirect URI for the API Keys? Answer
- How long does it usually take to build an integration with Gusto API? Answer
- Once an employee is created in Gusto via the API, what happens next? Answer
- What’s required to obtain API Keys for Production? Answer
- What debits can I expect to see via the Gusto API? Answer
- Can I make test calls in production after my Gusto API integration has passed QA and launched? Answer
- What are the error codes associated with Gusto API? Answer
- How can I create a job ID and compensation for an employee in Gusto API? Answer
- Does Gusto API have any sample codes I can use to get started on? Answer
- What kind of support will I get when building my integration? Answer
Common Integrations with Gusto API
Undoubtedly, there are several categories of applications which can benefit from integrating with Gusto API. Listing a few for developers to get an idea:
- ATS applications to push newly hired candidate data
- Performance management systems to get access to employee rosters and information
- HR analytics platforms to get access to employee data, including payroll, compensation, etc.
- Benefits applications to facilitate accurate deductions and benefits administration
How to integrate with Gusto API
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.
Get started with Gusto API
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.