Skip to main content

Sandbox Simulations

Unit exposes the following sandbox-specific endpoints, in addition to all other endpoints. They allow you to easily test and simulate real-world events - external activity, or internal activity that may normally take a long time to occur.

Note

Simulation operations are subject to the same authentication scheme as the Live APIs, and therefore require a valid Authentication token.

Simulating Application Statuses​

By default, most applications in our sandbox will be approved immediately. Applications may be sent to manual review based on applicant information provided. Below are ways to simulate other statuses:

StatusDescription
PendingReviewIndividual application: set the SSN on the application to 000000004. Business application: set the SSN of the Officer or any Beneficial Owner on the application to 000000004.
AwaitingDocumentsIndividual application: set the SSN on the application to 000000002 to simulate AwaitingDocuments for Address Verification, or 000000003 to simulate AwaitingDocuments for Id Document, or 000000006 to simulate AwaitingDocuments for Social Security Card. Business application: set the SSN of the Officer on the application to 000000005.
DeniedIndividual application: set the SSN on the application to 000000001.

What to expect in your integration​

Reserved SSNs are outcome shortcuts for sandbox testing. They do not reproduce every production evaluation detail (vendor scores, fraud flag text, or manual-review notes) byte-for-byte.

When building a native onboarding UI, use the application resource as the source of truth:

SurfaceWhat you get
GET /applications/{id} (default)status, message, and relationships (for example required documents when status is AwaitingDocuments).
Application webhooksapplication.denied, application.awaitingDocuments, application.pendingReview, application.approved, and related events when status changes.
Unit DashboardEvaluation flags and operational denial context for reviewers (not returned on the default application GET).
Optional API fieldsevaluationFlags and decisionReasonCodes when you pass extra fields on GET (server-side use; do not treat vendor scores as end-customer copy).

Denied sandbox test (000000001): Expect status: Denied and an application.denied webhook. Show a generic denial screen in your app unless you intentionally fetch optional evaluation fields on the server. Dashboard evaluation flags on the same application (for example Denied Fraud) are not a contract for what the default GET response includes.

Other reserved SSNs: Use 000000002 / 000000003 / 000000006 for document-collection paths, 000000004 for PendingReview, or approve/deny in-flight applications with the sandbox endpoints below. For production flag meanings (not sandbox shortcuts), see End-Customer Applications.

There is no retryAllowed (or similar) attribute on the application resource. Branch your UX on status and webhooks. In sandbox, the same SSN can usually be submitted again after Denied so you can re-run tests (duplicate application rules).

Optional evaluation fields on GET​

By default, GET /applications/{id} omits evaluationFlags and decisionReasonCodes. To include them (for server-side logging or support tooling), add query parameters:

GET https://api.s.unit.sh/applications/{id}?extraFields[application]=evaluationFlags,decisionReasonCodes

For business applications you can also request officer or beneficial-owner flags, for example extraFields[officer]=evaluationFlags.

Registered Agent Address​

To simulate a business applications whose address matches a registered agent's address:

NameTypeDescription
streetstring13 Registered Agent st
citystringNew York
statestringNY
postalCodestring12345
countrystringUS
Example Address type:
{
"street": "13 Registered Agent st",
"city": "New York",
"state": "NY",
"postalCode": "12345",
"country": "US"
}

Application Form 2FA​

When simulating an application via an application form on Sandbox, use 000001 as your phone verification code to complete the two factor authentication challenge. Note that a verification SMS will not be sent to the phone number provided, to avoid accidental breaching of the consent to electronic communications requirements.

Approve Application​

Approves an Application under PendingReview or AwaitingDocuments status. The Customer Created webhook event will be fired.

VerbPOST
URLhttps://api.s.unit.sh/sandbox/applications/{applicationId}/approve
Data TypeapplicationApprove
Timeout (Seconds)5
Example Request:
curl -X POST 'https://api.s.unit.sh/sandbox/applications/10001/approve'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "applicationApprove",
"attributes": {
"reason": "sandbox"
}
}
}'

Deny​

Denies an Application under PendingReview or AwaitingDocuments status. The Application Denied webhook event will be fired.

VerbPOST
URLhttps://api.s.unit.sh/sandbox/applications/{applicationId}/deny
Data TypeapplicationDeny
Timeout (Seconds)5
Example Request:
curl -X POST 'https://api.s.unit.sh/sandbox/applications/10001/deny'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "applicationDeny",
"attributes": {
"reason": "sandbox"
}
}
}'

Approve Document​

Approves an Application Document. The Document Approved webhook event will be fired.

VerbPOST
URLhttps://api.s.unit.sh/sandbox/applications/{applicationId}/documents/{documentId}/approve
Timeout (Seconds)5
Example Request:
curl -X POST 'https://api.s.unit.sh/sandbox/applications/10001/documents/1/approve'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{}'

Reject​

Rejects an Application Document. The Document Rejected webhook event will be fired.

VerbPOST
URLhttps://api.s.unit.sh/sandbox/applications/{applicationId}/documents/{documentId}/reject
Data TypedocumentReject
Timeout (Seconds)5
Example Request:
curl -X POST 'https://api.s.unit.sh/sandbox/applications/10001/documents/1/reject'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "documentReject",
"attributes": {
"reason": "blurry image",
"reasonCode": "PoorQuality"
}
}
}'

Download​

Download the application document file, in order to test if the upload was successful and the file is valid.

VerbGET
URLhttps://api.s.unit.sh/sandbox/applications/{applicationId}/documents/{documentId}/download
Timeout (Seconds)5
Example Request:
curl -X GET 'https://api.s.unit.sh/sandbox/applications/10001/documents/1/download' \
-H "Authorization: Bearer ${TOKEN}"

Download Back-Side​

Download the application document back-side file, in order to test if the upload was successful and the file is valid.

VerbGET
URLhttps://api.s.unit.sh/sandbox/applications/{applicationId}/documents/{documentId}/download/back
Timeout (Seconds)5
Example Request:
curl -X GET 'https://api.s.unit.sh/sandbox/applications/10001/documents/1/download/back' \
-H "Authorization: Bearer ${TOKEN}"