Document & Evidence
A document is a request for supporting documentation. An evidence is the proof provided in response by the third party or an external source.
Definitions
Document (Request)
Represents a document requested in a dossier.
documentId— Unique identifierdocumentCode— Document type codedocumentName— Document labelstatusCode— Current statuspresent— Document provided or not
Evidence (Proof)
The response provided by the third party or an external source.
id— Evidence identifierresponseId— ID for actionsuploadDate— Upload dateexpirationDate— Expiration dateformdata— Form data
Evidence Types
An evidence can take two forms depending on the type of document requested:
| Type | Description | Specific Properties |
|---|---|---|
| Uploaded file | PDF document, image or other file uploaded by the third party | fileUUID, fileName, fileSize |
| Completed form | Responses to a structured questionnaire | formdata[] |
For completed forms, Aprovall automatically generates a PDF consolidating all third party responses, downloadable via the API.
List Documents in a Dossier
Retrieve all requested documents in a dossier with their status and evidence.
Lists all documents in a dossier with their evidence.
Response Example
{
"content": [
{
"documentId": 11078435,
"dossierId": 1324073,
"documentCode": "ATT_URSSAF",
"documentName": "Attestation de vigilance URSSAF",
"requestDate": "2025-01-15T10:00:00.000",
"present": true,
"statusCode": "VALID",
"evidences": [
{
"id": 6876412,
"responseId": 2238768,
"uploadDate": "2025-01-20T14:30:00.000",
"fileUUID": "a4d8acd5-8254-477c-9019-fa85aef8d224",
"fileName": "attestation_urssaf.pdf",
"fileSize": 128790,
"expirationDate": "2025-07-20T23:59:59.999",
"format": "ORIGINALNUMERIQUE",
"issuer": "DO",
"transmitter": "FOURNISSEUR"
}
]
},
{
"documentId": 11031065,
"dossierId": 1324073,
"documentCode": "KBIS",
"documentName": "Extrait Kbis",
"requestDate": "2025-01-15T10:00:00.000",
"present": false,
"statusCode": "MISSING",
"evidences": []
}
]
}Document Details
Retrieve detailed information about a specific document.
Returns document details and its evidence.
Evidence Structure
Each evidence contains metadata about the provided proof:
| Property | Type | Description |
|---|---|---|
id | number | Unique evidence identifier |
responseId | number | Response ID (used for approve/reject) |
uploadDate | datetime | Upload date and time |
fileUUID | string | Stored file UUID |
fileName | string | Original file name |
fileSize | number | File size in bytes |
expirationDate | datetime | Document expiration date |
formdata | array | Form data (if applicable) |
issuer | string | Issuer (DO = Data Owner) |
transmitter | string | Transmitter (SUPPLIER, etc.) |
metadata | object | Verification metadata (IBAN, etc.) |
aprovallCheck | object | Result of the document's automatic check. Holds extractedData, the list of fields read — see the next section. |
Data extracted from a document
Some supporting documents are read automatically by the platform, which pulls out the useful fields — the information carried by an insurance certificate, for instance. Those values are exposed on the evidence under aprovallCheck.extractedData, as a list of entries.
The list is only returned if you ask for it explicitly, through the withExtractedData=true query parameter. Set to false or omitted, it is not populated. A document with no extracted data simply exposes no entries: the request never fails for that reason.
The structure of an entry
Each entry describes one field read from the document. The label is meant for display; name is what identifies the field reliably.
| Field | Type | Description |
|---|---|---|
name | string | Technical identifier of the extracted field. This is what you should rely on. |
type | string | Nature of the value: TEXT, BOOLEAN, DATE or NUMERIC. |
label | string | Human-readable label for the field, meant for display. |
value | string | boolean | number | null | Value read from the document. Its type follows type: string, boolean, YYYY-MM-DD date or number. |
Sample response
{
"id": 90124,
"statusCode": "ACTION_REQUIRED",
"aprovallCheck": {
"extractedData": [
{
"name": "document_type",
"type": "TEXT",
"label": "Type de document",
"value": "DECLARATION_NON_CONCERNE"
},
{
"name": "is_insured",
"type": "BOOLEAN",
"label": "Entreprise assurée",
"value": false
},
{
"name": "edition_date",
"type": "DATE",
"label": "Date d'édition",
"value": "2026-04-10"
},
{
"name": "expiration_date",
"type": "DATE",
"label": "Date de fin de validité",
"value": ""
},
{
"name": "company_name",
"type": "TEXT",
"label": "Nom de l'entreprise assurée",
"value": "ACME BTP"
},
{
"name": "identifier",
"type": "TEXT",
"label": "SIRET/SIREN",
"value": "12345678900017"
},
{
"name": "Plafond",
"type": "NUMERIC",
"label": "Plafond de garantie par sinistre",
"value": null
},
{
"name": "platform_generated",
"type": "BOOLEAN",
"label": "Document généré par la plateforme",
"value": true
}
]
}
}An entry is always present even when the field was not found on the document: value is then the empty string for a TEXT or a DATE, and null for a NUMERIC. So test the value, not the presence of the entry.
The name values do not follow a single convention — you will find lowercase snake_case (company_name) alongside capitalised names (Plafond_total, Devise). Map explicitly the fields you care about rather than deriving the name.
Where to use it
The parameter is accepted on the five endpoints that return evidences:
Forms: formdata Structure
For form-type documents, the formdata array contains structured responses:
{
"formdata": [
{
"type": "string",
"key": "f_158_nmr_0",
"title": "Nom ou référence de l'opération",
"order": 0,
"value": "Projet Alpha"
},
{
"type": "date",
"key": "f_158_dtd_2",
"title": "Date de réalisation",
"order": 2,
"value": "15/01/2025"
},
{
"type": "iban",
"key": "f_49_bn_0",
"title": "IBAN",
"order": 0,
"value": "FR76 0000 0000 0000 0000 0000 000"
}
]
}Field Types
| Type | Description |
|---|---|
string | Free text |
date | Date in DD/MM/YYYY format |
iban | IBAN bank details |
boolean | Yes / No |
number | Numeric value |
Download a File
Multiple methods to retrieve evidence files:
Downloads the file in binary (PDF). The fileId corresponds to the evidence id.
Generates a temporary signed URL for download.
Downloads all dossier files in a ZIP archive.
Document Actions
When a document is in ACTION_REQUIRED status, you can approve or reject it via the API.
Actions use the responseId present in the evidence object, not the documentId.
Approve a Document
curl -X POST https://edge.aprovall.com/api/v1/account/123/responses/2238768/approve \
-H "Authorization: Bearer VOTRE_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"comment": "Document conforme"
}'| Parameter | Required | Description |
|---|---|---|
comment | No | Optional validation comment |
Reject a Document
curl -X POST https://edge.aprovall.com/api/v1/account/123/responses/2238768/reject \
-H "Authorization: Bearer VOTRE_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"comment": "Document expiré",
"shareRejectionReason": true
}'| Parameter | Required | Description |
|---|---|---|
comment | No | Rejection reason |
shareRejectionReason | Yes | If true, the third party is notified by email of the rejection |
Add a Required Document
You can add additional documents to an existing dossier (except for typed dossiers where the list is fixed).
curl -X POST https://edge.aprovall.com/api/v1/account/123/dossiers/456/requirements \
-H "Authorization: Bearer VOTRE_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"newRequiredDocuments": ["JUSTIF_IMM", "ATT_FISC"]
}'Automatic Verifications
Some documents undergo automatic verifications by Aprovall. Results are available in the evidence metadata field.
Example: IBAN Verification
For IBAN documents, verification may include SEPAmail or Trustpair data:
{
"metadata": {
"verified": "true",
"bank_data_bank": "CREDIT DU NORD",
"bank_data_bic": "NORDXXXX",
"bank_data_country": "FRANCE",
"sepa_data_sct": "YES",
"sepa_data_sdd": "YES",
"date_verification": "15/01/2025"
}
}