Step 2 of 2. Call after PUTting the file content to the presigned URL. Verifies the blob actually arrived (and is within the size cap) and, for a requirement-backed upload, attaches it to that requirement so it appears on the banker's Documents tab as PENDING review.
Until this is called the record exists but the bank cannot see the document.
Pass period when the requirement collects more than one (three years of tax returns, say) — those 400 with period_key_required otherwise, since nothing can infer which year the file answers. Use the period value from GET /loans/{id}/documents.
Retrying is safe in the sense that it never corrupts anything, but it is NOT a no-op: re-confirming an already-attached file adds another version to the same requirement, matching how a re-upload behaves in the UI. Retry after a failed confirm, not after a successful one.
Which period this document answers, e.g. 2024. REQUIRED when the requirement collects more than one period (three years of tax returns, say); those 400 with period_key_required if it is omitted, rather than guessing a year. Use the period value from GET /loans/{id}/documents. Omit only for a single-period requirement.
- https://api.pioneerft.com/apihttps://api.pioneerft.com/api/public/v1/documents/{id}/confirm
- https://api.staging.pioneerft.com/apihttps://api.staging.pioneerft.com/api/public/v1/documents/{id}/confirm
curl -i -X POST \
'https://api.pioneerft.com/api/public/v1/documents/{id}/confirm' \
-H 'Authorization: Bearer <YOUR_API Key_HERE>' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: string' \
-d '{
"period": "string"
}'{ "data": { "id": "string", "name": "string", "type": "string", "size": 0, "category": "string", "uploadedAt": "string", "requirement": { "id": "string", "name": "string", "status": "string", "module": "string", "entityType": "loan", "entityID": "string", "period": "string" } } }