Pre-Close QC

Pre-Close QC reviews origination documents before the closing package is signed — the appraisal waiver disclosure, the title report, and similar — so errors surface while there is still time to correct them.

There is no closing yet at this point, so your system creates the QC package. That extra first call is the only structural difference from Post-Close QC; everything after it is the same API.

📘
Pre-Close QC is enabled per company. If Create a package returns 403 Forbidden, the feature is not yet enabled for your account — contact your Snapdocs Implementation Manager.
FunctionalityDescriptionEndpoint
Create a packageCreate the QC package and receive the uuid every later call needsLink
Get pre-signed upload URLGet a pre-signed URL to upload documents to reviewLink
Upload documents to reviewUpload origination documents required to reviewLink
Upload loan data to reviewUpload loan data required as a part of the reviewLink
Download QC resultsDownload the latest QC results, with type=pre_closeLink
Download classified documentsDownload individual classified documents, with report_type=pre_closeLink
[Status endpoint title]Get notified via Webhook of status changes in the QC review

Create the package

Post-Close packages already exist in Snapdocs, because they come from a closing. Pre-Close has none, so you create it first and store the returned uuid against the loan in your LOS — every later call takes it.

POST /qc/packages

{
  "fileNumber": "12345678",
  "signerName": "Smith",
  "loanGuid": "d679e2ad-278d-e547-9756-84639ba3865"
}

The response returns the package uuid. Creating the package is what starts Pre-Close QC, so the loan-data and document events described below fire from that point — not from a signed-document upload as they do for Post-Close.

Upload documents and loan data

Identical to Post-Close:

  1. Get a pre-signed upload URL for each file.
  2. PUT the file to that URL.
  3. Register the uploaded documents with their internal_name.
  4. Upload loan data for the fields your review compares against.

See Documents Glossary for the internal_name values.

Retrieve results

Classified documents — pass report_type=pre_close:

GET /qc/packages/{uuid}/documents?report_type=pre_close
🚧
report_type defaults to funding. A Pre-Close request that omits it returns the Post-Close set — usually empty for a Pre-Close package — rather than an error.

The QC report — pass type=pre_close:

GET /qc/packages/{uuid}/reports?type=pre_close

type has no default here; omitting it is an error.

Events

Pre-Close publishes the same event types described in Subscription & Webhooks, carrying report_type: "pre_close". Filter on that field if you subscribe to both reviews, so a Pre-Close status update is not mistaken for a Post-Close one.