Overview
All validation failures on the Applications API are returned synchronously. Business logic errors are returned as422 responses with an invalid_parameters array that identifies which fields failed and why, so you can correct the request before retrying.
POST /v0/applications — Required Fields
POST /v0/applications — Entity Validations
Most entity checks are enforced only whenstatus is approved — a declined or canceled application does not surface them, so an entity problem can stay hidden until your first approval. The duplicate checks are the exception and run on every status.
POST /v0/applications — Field Validations
The credit bureau presence check is off by default. It requires that an approved application carry
pulled_at, source, and one of score / non_score_value, but it is enabled per program rather than globally. If your program’s underwriting policy requires bureau data on every approval, expect it to be on; otherwise details.credit.report remains optional. The field-level rules above still apply whenever you do send a report.POST /v0/applications — Document Validations
Every document type is either a consent or a disclosure, and that determines which timestamp is required. Document failures are reported against thedocuments array as a whole rather than per entry, with the reason Documents do not conform to schema specification. The rules below are what that message covers — check each entry against all of them.
PATCH /v0/applications/id
PATCH uses JSON Merge Patch semantics (RFC 7396) and applies the same field validations documented above for POST /v0/applications. A correction to declined must therefore carry a complete details.adverse_action_notice object, just as it does on creation.
See The Application Object for a summary, or Update an Application for the per-field detail.
Downstream Constraints — Account Creation
When you later use an approved application to create an Account, the Accounts API enforces matching between the application and the account. The rules below run onPOST /v0/accounts, not on POST /v0/applications, but a mismatch blocks account creation against this application — design the roster on the application accordingly.
See the Accounts API validations for the canonical application-match rules.

