Applications
An application holds everything a recruit provides during onboarding: personal details, contact information, licensing, employment, W9, background answers and the signed contract.
Creating an application
Only the recruiter and the recruit's name and email are needed to start:
POST /agent-onboarding/acme/applications
Content-Type: application/json
{
"recruiterAgentCode": "A1001",
"firstName": "Dana",
"lastName": "Lopez",
"emailAddress": "dana.lopez@example.com"
}
On success you get 201 Created, with a Location header pointing to the new application.
Duplicate checks
| Status | Message |
|---|---|
409 Conflict | An agent already exists with the provided government identifier or tax ID. |
409 Conflict | An application already exists... (an open application for the same person) |
Updating an application
PUT /applications/{id} replaces the whole application. Any section or property you leave out is cleared. Always send the complete application, usually by reading it with GET /applications/{id}, changing it and sending it back.
See Partial updates.
Application fields
| Field | Notes |
|---|---|
recruiterAgentCode | Required. Max 20 characters. The agent code of the recruiter. |
firstName, lastName | Required. |
emailAddress | Required. Max 100 characters. |
middleName, commonName, suffix | Optional name details. |
governmentIdentifier | SSN/SIN. Max 24 characters. |
birthDate | YYYY-MM-DD, between 1900 and 2100. |
gender, marital status and spouse details | |
homeAddress, businessAddress | { address1, address2, city, jurisdiction, postalCode }. jurisdiction must match XX-XX, e.g. US-TX. |
homePhone, cellPhone | { countryCode, areaCode, phoneNumber } |
licenses | Licensing details. |
employment | Employment details. |
w9 | { taxpayerName, businessName, classification, llcClassification, otherClassification, exemptPayee, address, city, jurisdiction, postalCode, accountNumbers, ssn, ein, signature, entryDate } |
background | { notes (max 2048), requiresApproval, approved, responses[] } |
contract | { versionId, agreementDate, signature, clientIpAddress, responses[] }. versionId, agreementDate and signature are required when a contract is supplied. |
dedicated, agentLevelValue, selectedProductId, orderId, cartId | Agency-specific options and e-commerce references. |
Background and contract responses
Answers to background questions and contract covenants are sent as arrays of responses:
"background": {
"responses": [
{ "contentItemVersionId": "4qk8f0x2m1", "responseValue": "No" }
]
},
"contract": {
"versionId": "7hc2p9d0a3",
"agreementDate": "2026-09-24",
"signature": "Dana Lopez",
"clientIpAddress": "203.0.113.24",
"responses": [
{ "contentItemVersionId": "9ab3c1d7e5", "responseValue": "true" }
]
}
contentItemVersionIdidentifies the specific published version of the question or covenant, as returned byGET /background-questionsandGET /contract-covenants.- Responses are matched by
contentItemVersionId. Responses to versions that are no longer published are ignored during validation, so re-fetch the configuration and ask again if a question has been revised.
Statuses
| Status | Meaning |
|---|---|
Active | In progress. |
Hold | Put on hold by the agency. |
Complete | Submitted by the recruit. |
Paid | Any onboarding fees have been paid. |
Processed | Processed into an agent. |
Rejected | Rejected by the agency. |
Listing applications
GET /applications returns a paged list.