Skip to main content

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​

StatusMessage
409 ConflictAn agent already exists with the provided government identifier or tax ID.
409 ConflictAn 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​

FieldNotes
recruiterAgentCodeRequired. Max 20 characters. The agent code of the recruiter.
firstName, lastNameRequired.
emailAddressRequired. Max 100 characters.
middleName, commonName, suffixOptional name details.
governmentIdentifierSSN/SIN. Max 24 characters.
birthDateYYYY-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 }
licensesLicensing details.
employmentEmployment 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, cartIdAgency-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" }
]
}
  • contentItemVersionId identifies the specific published version of the question or covenant, as returned by GET /background-questions and GET /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​

StatusMeaning
ActiveIn progress.
HoldPut on hold by the agency.
CompleteSubmitted by the recruit.
PaidAny onboarding fees have been paid.
ProcessedProcessed into an agent.
RejectedRejected by the agency.

Listing applications​

GET /applications returns a paged list.