Populate a form
curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"effective_date": "2026-01-01"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate"
payload = { "effective_date": "2026-01-01" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({effective_date: '2026-01-01'})
};
fetch('https://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate', 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://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate",
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([
'effective_date' => '2026-01-01'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate"
payload := strings.NewReader("{\n \"effective_date\": \"2026-01-01\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"effective_date\": \"2026-01-01\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"effective_date\": \"2026-01-01\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "form_population_result",
"data": {
"fields": {
"block_8_social_insurance_number": "196710156",
"employee_first_name": "Marley",
"employee_last_name": "Prosacco",
"employee_address_line_1": "Angelina Ridge",
"employee_address_line_2": "Toronto",
"employee_address_line_3": "ON CA",
"employee_postal_code": "M1M1M1",
"block_5_cra_payroll_account_number": "136549169RP9916",
"contact_area_code": 111,
"contact_phone_number": 2223333,
"contact_phone_number_extension": null,
"contact_first_name": "Jean",
"contact_last_name": "Smith",
"block_10_first_day_worked": "2026-01-01",
"block_11_last_day_for_which_paid": "2026-01-31",
"block_6_pay_period_type": "M",
"block_12_final_pay_period_ending_date": "2026-01-31",
"block_15_total_insurable_hours": "0",
"pp1_insurable_earnings": 0
}
}
}Forms
Populate a form
Endpoint to populate form fields with the values suggested by Nmbr.
This is only possible for forms that support population.
This example uses an ROE form, but the same applies to other forms.
POST
/
form_types
/
{form_type}
/
populate
Populate a form
curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"effective_date": "2026-01-01"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate"
payload = { "effective_date": "2026-01-01" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({effective_date: '2026-01-01'})
};
fetch('https://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate', 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://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate",
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([
'effective_date' => '2026-01-01'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate"
payload := strings.NewReader("{\n \"effective_date\": \"2026-01-01\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"effective_date\": \"2026-01-01\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/form_types/{form_type}/populate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"effective_date\": \"2026-01-01\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "form_population_result",
"data": {
"fields": {
"block_8_social_insurance_number": "196710156",
"employee_first_name": "Marley",
"employee_last_name": "Prosacco",
"employee_address_line_1": "Angelina Ridge",
"employee_address_line_2": "Toronto",
"employee_address_line_3": "ON CA",
"employee_postal_code": "M1M1M1",
"block_5_cra_payroll_account_number": "136549169RP9916",
"contact_area_code": 111,
"contact_phone_number": 2223333,
"contact_phone_number_extension": null,
"contact_first_name": "Jean",
"contact_last_name": "Smith",
"block_10_first_day_worked": "2026-01-01",
"block_11_last_day_for_which_paid": "2026-01-31",
"block_6_pay_period_type": "M",
"block_12_final_pay_period_ending_date": "2026-01-31",
"block_15_total_insurable_hours": "0",
"pp1_insurable_earnings": 0
}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
application/json
Determines which form variant to populate. Must be a date for which a populator is configured for the given form type.
Response
200 - application/json
OK
The unique identifier of the object in Nmbr.
The type of the object in Nmbr ("form_population_result").
Hide child attributes
Hide child attributes
The string identifier for this form type.
Available options:
rl1, roe, t4, t4a, td1, td1ab, td1bc, td1mb, td1nb, td1nl, td1ns, td1nt, td1nu, td1on, td1pe, td1sk, td1x, td1yt, tp_1015_3_v, tp_1015_r_13_v The human-readable display name for this form type.
The owner types that can have forms of this type.
Hide child attributes
Hide child attributes
Available options:
rl1, roe, t4, t4a, td1, td1ab, td1bc, td1mb, td1nb, td1nl, td1ns, td1nt, td1nu, td1on, td1pe, td1sk, td1x, td1yt, tp_1015_3_v, tp_1015_r_13_v ⌘I

