Skip to main content
The Zeal REST API gives you programmatic access to every aspect of embedded payroll - from creating companies and onboarding workers to running payroll and filing taxes. All requests go to a single base URL, use JSON for both request bodies and response payloads, and are authenticated with a Bearer token tied to your Zeal partner account.

Base URL

Every API request is sent to:
There is no version prefix in the path. All current endpoints are available directly beneath this root (for example, https://api.zeal.com/companies).

Request and response format

All request bodies must be sent as JSON with the Content-Type: application/json header. All successful responses are returned as JSON. Dates follow ISO 8601 (YYYY-MM-DD) unless otherwise noted in a specific endpoint’s documentation.

Authentication

Every request must include an Authorization header with a Bearer token equal to your API key:
Your API keys are available on the API page of your Partner Dashboard at app.zeal.com. See the Authentication page for full details.

Example request

The snippet below shows a minimal authenticated request that lists all companies under your partner account.

Environments

Zeal provides two isolated environments, each with its own set of API keys.
Use your Test API key for all development and QA work. Switch to your Production API key only when you are ready to process real payroll. Test and Production resources are completely separate - data created in one environment does not appear in the other.

Partner ID vs Company ID

Two identifiers appear frequently across the API:
  • partnerID - Identifies your Zeal partner account. Use this when creating companies or fetching resources that are scoped to your entire partner account. You can find your partnerID on the API page of the Partner Dashboard.
  • companyID - Identifies a specific employer company under your partner account. Most company-level and worker-level endpoints require a companyID. It is returned when you call POST /companies and is also visible in the Partner Dashboard.

Error format

When a request fails, Zeal returns a non-2xx HTTP status code and a JSON body describing the problem. Errors follow the standard response envelope: success is false and errors is an array of error objects, each with a message and a code (see Error Codes):
Common status codes:

Resource groups

The API reference is organized into resource groups - Companies, Employees, Contractors, Employee Checks, Contractor Payments, Reports, Webhooks, and more. Browse the sidebar to explore each group and its endpoints.