curl --request GET \
--url https://sandbox.nmbr.co/services/payroll/contractors \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.nmbr.co/services/payroll/contractors"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.nmbr.co/services/payroll/contractors', 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/contractors",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://sandbox.nmbr.co/services/payroll/contractors"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandbox.nmbr.co/services/payroll/contractors")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/contractors")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"id": "<id>",
"object": "contractor",
"data": {
"business_name": "Contractor Co",
"first_name": "John",
"last_name": "Smith",
"middle_initial": null,
"email": "john@smith.com",
"business_number": null,
"sin_last_3": null,
"external_ref": null,
"preferred_locale": null,
"archived_at": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/contractors/<id>"
}
}
],
"links": {
"first": "/contractors?page=1",
"last": "/contractors?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 15,
"total": 1,
"has_more": false
}
}List contractors
curl --request GET \
--url https://sandbox.nmbr.co/services/payroll/contractors \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.nmbr.co/services/payroll/contractors"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.nmbr.co/services/payroll/contractors', 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/contractors",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://sandbox.nmbr.co/services/payroll/contractors"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandbox.nmbr.co/services/payroll/contractors")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/contractors")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"id": "<id>",
"object": "contractor",
"data": {
"business_name": "Contractor Co",
"first_name": "John",
"last_name": "Smith",
"middle_initial": null,
"email": "john@smith.com",
"business_number": null,
"sin_last_3": null,
"external_ref": null,
"preferred_locale": null,
"archived_at": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/contractors/<id>"
}
}
],
"links": {
"first": "/contractors?page=1",
"last": "/contractors?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 15,
"total": 1,
"has_more": false
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Date filters support two formats:
Exact Date Match: Provide a well-formatted date in YYYY-MM-DD format for an exact match. Example: archived_at=2024-01-01
Use an array-like syntax to specify a range with one or more comparison operators:
gt(greater than)gte(greater than or equal to)lte(less than or equal to)lt(less than) Example:archived_at[gte]=2024-01-01&archived_at[lt]=2024-12-31
Sort order is specified using the format
sort=field[:direction][,field[:direction],...] where field is the name of the field to sort by
and direction is the optional sort direction (asc or desc).
business_name, first_name, last_name company, work_assignments Response
OK
The type of the object in Nmbr ("list").
Hide child attributes
Hide child attributes
The unique identifier of the object in Nmbr.
The type of the object in Nmbr ("contractor").
- Default
- With company expanded
- With work_assignments expanded
Hide child attributes
Hide child attributes
The contractor's business or corporation name. null for individual contractors.
255The contractor's first name. null for corporation contractors.
50The contractor's last name. null for corporation contractors.
50The contractor's middle initial. null for corporation contractors.
1The contractor's email address, used for payroll communications.
255The contractor's 15-character (BN15) Canada Revenue Agency (CRA) program account number, consisting of a 9-digit Business Number (BN), a 2-letter program identifier, and a 4-digit reference number. null for individual contractors. The 9-digit root begins with 1, 7, or 8 and carries a Luhn check digit; the reference number starts at 0001.
15The last 3 digits of the contractor's Social Insurance Number (SIN). null if no SIN has been provided.
A reference to the object in an external system, e.g. the primary key of the object in your application's database. Nmbr doesn't use, validate, parse, or require this value to be unique - it simply stores it for your reference.
255The locale used for payroll communications sent to this contractor, such as Pay Stub emails. If not set, the Company's locale is used.
en, fr The date the contractor was archived. Archiving a contractor also archives all Work Assignments that are not already archived. Archived contractors do not appear in active listings.
The date and time the object was created in Nmbr.
The date and time the object was last updated in Nmbr.

