Generate Employee Onboarding Link
Generates an expirable link to Zeal’s employee payroll onboarding for a specified employee.
curl --request POST \
--url https://api.zeal.com/employees/onboard \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"profile": false,
"employee_acct": false,
"i9_form": false,
"id_scan": false,
"companyID": "123456789",
"employeeID": "123456789",
"payment_method": true
}
'import requests
url = "https://api.zeal.com/employees/onboard"
payload = {
"profile": False,
"employee_acct": False,
"i9_form": False,
"id_scan": False,
"companyID": "123456789",
"employeeID": "123456789",
"payment_method": True
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
profile: false,
employee_acct: false,
i9_form: false,
id_scan: false,
companyID: '123456789',
employeeID: '123456789',
payment_method: true
})
};
fetch('https://api.zeal.com/employees/onboard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.zeal.com/employees/onboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'profile' => false,
'employee_acct' => false,
'i9_form' => false,
'id_scan' => false,
'companyID' => '123456789',
'employeeID' => '123456789',
'payment_method' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.zeal.com/employees/onboard"
payload := strings.NewReader("{\n \"profile\": false,\n \"employee_acct\": false,\n \"i9_form\": false,\n \"id_scan\": false,\n \"companyID\": \"123456789\",\n \"employeeID\": \"123456789\",\n \"payment_method\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.zeal.com/employees/onboard")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"profile\": false,\n \"employee_acct\": false,\n \"i9_form\": false,\n \"id_scan\": false,\n \"companyID\": \"123456789\",\n \"employeeID\": \"123456789\",\n \"payment_method\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeal.com/employees/onboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"profile\": false,\n \"employee_acct\": false,\n \"i9_form\": false,\n \"id_scan\": false,\n \"companyID\": \"123456789\",\n \"employeeID\": \"123456789\",\n \"payment_method\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": "https://payroll.your-domain.com/form/NjE5NmIyNThjZGQwMDIzYWEwMjFiL2NiYzFkMDcyYjAyNTRjZWY5MzUwNTdlZWExNmUyNjNkLzE2Mzc4NzcxMTcwMTIvP3Rlc3Q9dHJ1ZSZwcm9maWxlPXRydWUmwbG95ZWVfYWNjdD10cnVlJmlkX3NjYW49dHJ1ZSZpOT10cnVlJnBhcGVyd29yaz10cnVl"
}{
"success": false,
"errors": [
{
"message": "Employee ID is not formatted correctly",
"code": 13
}
]
}Authorizations
Body
Company ID of employer
ID of Employee
If false, the employee account information (username and password) collection step of the onboarding will be left out
If false, the employee survey step will be left out (Early Access)
If false, the I9 form in the paperwork step of the onboarding will be left out
If false, the ID scan step of the onboarding will be left out.
If false, the onboarding worker will be able to skip the bank account collection section of onboarding
If false, the paycard enrollment screen will be left out. NOTE: Only applicable for Paycards (Early Access)
If false, the instant pay enrollment screen will be left out. NOTE: Only applicable for Instant Pay (Early Access)
Response
200
curl --request POST \
--url https://api.zeal.com/employees/onboard \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"profile": false,
"employee_acct": false,
"i9_form": false,
"id_scan": false,
"companyID": "123456789",
"employeeID": "123456789",
"payment_method": true
}
'import requests
url = "https://api.zeal.com/employees/onboard"
payload = {
"profile": False,
"employee_acct": False,
"i9_form": False,
"id_scan": False,
"companyID": "123456789",
"employeeID": "123456789",
"payment_method": True
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
profile: false,
employee_acct: false,
i9_form: false,
id_scan: false,
companyID: '123456789',
employeeID: '123456789',
payment_method: true
})
};
fetch('https://api.zeal.com/employees/onboard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.zeal.com/employees/onboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'profile' => false,
'employee_acct' => false,
'i9_form' => false,
'id_scan' => false,
'companyID' => '123456789',
'employeeID' => '123456789',
'payment_method' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.zeal.com/employees/onboard"
payload := strings.NewReader("{\n \"profile\": false,\n \"employee_acct\": false,\n \"i9_form\": false,\n \"id_scan\": false,\n \"companyID\": \"123456789\",\n \"employeeID\": \"123456789\",\n \"payment_method\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.zeal.com/employees/onboard")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"profile\": false,\n \"employee_acct\": false,\n \"i9_form\": false,\n \"id_scan\": false,\n \"companyID\": \"123456789\",\n \"employeeID\": \"123456789\",\n \"payment_method\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeal.com/employees/onboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"profile\": false,\n \"employee_acct\": false,\n \"i9_form\": false,\n \"id_scan\": false,\n \"companyID\": \"123456789\",\n \"employeeID\": \"123456789\",\n \"payment_method\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": "https://payroll.your-domain.com/form/NjE5NmIyNThjZGQwMDIzYWEwMjFiL2NiYzFkMDcyYjAyNTRjZWY5MzUwNTdlZWExNmUyNjNkLzE2Mzc4NzcxMTcwMTIvP3Rlc3Q9dHJ1ZSZwcm9maWxlPXRydWUmwbG95ZWVfYWNjdD10cnVlJmlkX3NjYW49dHJ1ZSZpOT10cnVlJnBhcGVyd29yaz10cnVl"
}{
"success": false,
"errors": [
{
"message": "Employee ID is not formatted correctly",
"code": 13
}
]
}