curl -sS -X GET 'https://apipub.firstbasehq.com/api/v1/new-joiners?page=1&size=25&sortBy=startDate&sortDirection=ASC' \
-H 'Authorization: ApiKey YOUR_API_KEY' \
-H 'Accept: application/json'import requests
url = "https://apipub.firstbasehq.com/api/v1/new-joiners"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://apipub.firstbasehq.com/api/v1/new-joiners', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));[
{
"person": {
"id": "aa000001-0000-0000-0000-000000000001",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"startDate": "2026-09-01",
"countryCode": "US",
"status": "INVITED"
},
"equipmentReadiness": "NOT_STARTED",
"orderRef": null,
"urgency": "ON_TRACK",
"provisioningOutcome": null,
"provisioningOutcomeDate": null,
"provisioningOutcomeSource": null,
"estimatedDeliveryDate": null,
"lastReminder": null,
"reminderCount": 0,
"procurementMethod": null
},
{
"person": {
"id": "aa000002-0000-0000-0000-000000000002",
"firstName": "John",
"lastName": "Smith",
"email": "john.smith@example.com",
"startDate": "2026-08-15",
"countryCode": "US",
"status": "ACTIVE"
},
"equipmentReadiness": "ORDER_PLACED",
"orderRef": {
"id": "b0000001-0000-0000-0000-000000000001",
"status": "APPROVED",
"createdAt": "2026-08-01"
},
"urgency": "AT_RISK",
"provisioningOutcome": null,
"provisioningOutcomeDate": null,
"provisioningOutcomeSource": null,
"estimatedDeliveryDate": "2026-08-20",
"lastReminder": null,
"reminderCount": 1,
"procurementMethod": "DROPSHIP"
}
]{
"errors": [
{
"detail": "Invalid request",
"source": "request"
}
]
}{
"errors": [
{
"detail": "Invalid request",
"source": "request"
}
]
}{
"errors": [
{
"detail": "Invalid request",
"source": "request"
}
]
}List new joiners
Paginated, filterable, sortable list of new joiner rows for the organization. When startDateFrom is omitted, the domain applies a default 60-day lookback floor — supply it explicitly to widen the window beyond 60 days.
curl -sS -X GET 'https://apipub.firstbasehq.com/api/v1/new-joiners?page=1&size=25&sortBy=startDate&sortDirection=ASC' \
-H 'Authorization: ApiKey YOUR_API_KEY' \
-H 'Accept: application/json'import requests
url = "https://apipub.firstbasehq.com/api/v1/new-joiners"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://apipub.firstbasehq.com/api/v1/new-joiners', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));[
{
"person": {
"id": "aa000001-0000-0000-0000-000000000001",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"startDate": "2026-09-01",
"countryCode": "US",
"status": "INVITED"
},
"equipmentReadiness": "NOT_STARTED",
"orderRef": null,
"urgency": "ON_TRACK",
"provisioningOutcome": null,
"provisioningOutcomeDate": null,
"provisioningOutcomeSource": null,
"estimatedDeliveryDate": null,
"lastReminder": null,
"reminderCount": 0,
"procurementMethod": null
},
{
"person": {
"id": "aa000002-0000-0000-0000-000000000002",
"firstName": "John",
"lastName": "Smith",
"email": "john.smith@example.com",
"startDate": "2026-08-15",
"countryCode": "US",
"status": "ACTIVE"
},
"equipmentReadiness": "ORDER_PLACED",
"orderRef": {
"id": "b0000001-0000-0000-0000-000000000001",
"status": "APPROVED",
"createdAt": "2026-08-01"
},
"urgency": "AT_RISK",
"provisioningOutcome": null,
"provisioningOutcomeDate": null,
"provisioningOutcomeSource": null,
"estimatedDeliveryDate": "2026-08-20",
"lastReminder": null,
"reminderCount": 1,
"procurementMethod": "DROPSHIP"
}
]{
"errors": [
{
"detail": "Invalid request",
"source": "request"
}
]
}{
"errors": [
{
"detail": "Invalid request",
"source": "request"
}
]
}{
"errors": [
{
"detail": "Invalid request",
"source": "request"
}
]
}Authorizations
Prefix the value with "ApiKey" to indicate the custom authorization type
Query Parameters
Page number (1-based)
x >= 11
Page size (1–200)
1 <= x <= 20025
Sort field: startDate, urgency, equipmentReadiness, employee, country, personStatus, estimatedDeliveryDate, reminderCount, lastReminderSentAt, provisioningOutcome, orderDate
"startDate"
Sort direction (ASC, DESC)
"ASC"
Free-text search across name and email
Filter by equipment readiness: NOT_STARTED, ORDER_PLACED, READY
Filter by equipment readiness: NOT_STARTED, ORDER_PLACED, READY
NOT_STARTED, ORDER_PLACED, READY Filter by urgency: ON_TRACK, AT_RISK, LATE
Filter by urgency: ON_TRACK, AT_RISK, LATE
ON_TRACK, AT_RISK, LATE Filter by ISO country codes
Filter by ISO country codes
Filter by provisioning outcome: ON_TIME, LATE
Filter by provisioning outcome: ON_TIME, LATE
ON_TIME, LATE Start date lower bound (ISO-8601). When omitted, a default 60-day lookback floor is applied. Supply explicitly to widen the window.
"2026-01-01"
Start date upper bound (ISO-8601)
"2026-12-31"
Filter by person status: INVITED, ACTIVE, INACTIVE, etc.
Filter by person status: INVITED, ACTIVE, INACTIVE, etc.
INVITED, ACTIVE, INACTIVE, DELETED, OFFBOARDING, CANNOT_REACTIVATE Filter by procurement method: WAREHOUSE, DROPSHIP, MIXED
Filter by procurement method: WAREHOUSE, DROPSHIP, MIXED
DROPSHIP, MIXED, WAREHOUSE Response
New joiners retrieved successfully
The person (new joiner) this onboarding row belongs to.
Show child attributes
Show child attributes
Indicates whether the equipment for this new joiner is ready for deployment.
NOT_STARTED, ORDER_PLACED, READY The total number of onboarding reminder notifications sent for this new joiner.
Lightweight reference to this new joiner's equipment provisioning order (maps to the internal GraphQL order field). Null when the joiner has not been ordered yet; use GET /api/orders/{id} for full order details.
Show child attributes
Show child attributes
Urgency classification for this new joiner's equipment pipeline. ON_TRACK, AT_RISK, or LATE when the pipeline is still in progress. Null once provisioningOutcome is set — the pipeline has resolved and urgency no longer applies.
ON_TRACK, AT_RISK, LATE The outcome of the equipment provisioning process for this new joiner.
ON_TIME, LATE Calendar date when equipment was delivered (order path) or inventory was assigned (inventory path). Same date the backend used to compute provisioningOutcome. Null when equipmentReadiness is not READY or no date could be derived.
"2026-05-01"
Identifies which data source produced provisioningOutcomeDate. ORDER_DELIVERY: date comes from the latest deliveryDate on a computer order line. INVENTORY_ASSIGNMENT: date comes from the audit-derived deployedAt for deployed computer inventory. Null when provisioningOutcomeDate is null.
ORDER_DELIVERY, INVENTORY_ASSIGNMENT The estimated date on which the new joiner's equipment will be delivered.
The date and time the last onboarding reminder notification was sent.
Show child attributes
Show child attributes
How this new joiner's equipment is fulfilled. WAREHOUSE when all computer lines are sourced from inventory, DROPSHIP when all are shipped directly from a vendor, MIXED when both methods are used. Null when no computer lines have a fulfilment record yet.
WAREHOUSE, DROPSHIP, MIXED