Request a Document Trust Analysis
On this page, you will learn how to initiate a new Document Trust Analysis request using the API.
Initiate a Document Trust Analysis request
When calling our document Analysis endpoint, you will need to specify the type of analysis you are looking to run.
Fraud analysis
If you are simply looking to get a risk label on a given document, specify :
analysis_type[fraud_level] : advanced.analysis_type[extraction] : false.
Fraud analysis and extraction
To get an extraction of data in addition to a fraud label, you will need to specify a document type from the current supported document list and specify :
analysis_type[fraud_level] : 'advanced'analysis_type[extraction] : true
To initiate a Document Trust Analysis you can call this endpoint :
POST /document_analyses
curl --location --request POST '{baseUrl}/document_analyses' \
--header 'Authorization: Bearer {apiKey}' \
--header 'Content-Type: multipart/form-data' \
--form 'file=@company_certificate.pdf' \
--form type='company_certificate' \
--form workspace_id='c0840991-848c-47ed-9bfa-68c9daca4793'
--form analysis_type[fraudl_level]='advanced'
--form analysis_type[extraction]=true{
"id": "023bb153-7901-49c2-b670-62990a1a8cb1",
"workspace_id": "7e7895fe-f647-47d0-9a75-da811834d092",
"workflow_session_id": null,
"previous_attempt_id": null,
"applicant_id": null,
"created_at": "2026-06-22T11:54:18+00:00",
"updated_at": "2026-06-22T11:54:18+00:00",
"status": "pending",
"status_codes": [],
"type": "company_certificate",
"country_code": null,
"data_anonymized": false,
"extracted_from_document": {
"verification_number": null,
"company_name": null,
"company_number": null,
"registered_address": null,
"issuance_date": null,
"legal_representatives": [],
"document_type": null
},
"checks": null,
"analysis_type": {
"extraction": true,
"fraud_level": "advanced"
},
"fraud_risk_analysis": null
}In the response, you'll find the id. This value is required to retrieve the verification results.
Supported document types for extraction and consistency checks
Type | Description |
|---|---|
| Currently only French Documents are supported : carte vitale and Attestation de Sécurité sociale. |
| French document certifying the registration of a company in the Commercial Register, commonly called : KBIS. |
| French document certifying that a company is registered in the Registre Nationale des Entreprises. |
| Commonly called : Avis de situation. Fills the same role as a |
| We currently support French driver licences in the new format. |
| Document certifying the ownership of a vehicle. We currently support French and Italian formats. |
| Document containing current or past car insurance information. Commonly called in French : Relevé d'information. |
| Temporary certificate of vehicle ownership. We currently support Italian : permesso di circolazione. |
| 🇫🇷 French tax notice is used to prove the income declared to the tax authorities. 🇩🇪 The Steuerbescheid (German tax assessment notice) is an official document issued by the Finanzamt (tax office) confirming the assessed income and final tax liability for a specific fiscal year. It serves as proof of taxable income and tax compliance. 🇮🇹 The Certificazione unica (Italian single income certification) is an official document issued annually by an employer, pension fund, or other income-paying entity to confirm the total income paid and taxes withheld at source for a specific fiscal year. It serves as proof of taxable income and social contributions. |
| Document issued by an employer summarizing an employee's earnings for a given pay period. Used to verify income and employment status. We currently support French and Italian payslips. |
| Commercial and accounting document issued by a supplier to a customer, confirming a completed commercial transaction. It serves as legal proof of the sale or the provision of services. |
What data are extracted ?
For the type : social_security , the following data will be extracted :
"first_name": "Leo",
"last_name": "Dupont",
"full_name": "Leo Dupont",
"social_security_number": "101111300509563"
"document_type": "Carte Vitale"Failure to extract all data will result in an inconclusive status.
For the type : company_certificate, rne_certificate, business_registration_certificate , the following data will be extracted from the document.
"verification_number": "EHqrFQ8wOS",
"company_name": "TEST COMPANY",
"company_number": "451 456 120",
"registered_address": "Lorem Ipsum",
"issuance_date": "2021-03-07",
"legal_representatives": [
{
"type": "natural_person",
"first_name": "John",
"last_name": "Doe",
"full_name": "Jonh Doe",
"function": "Président",
"company_name": null,
"company_number": null
}
],
"document_type": "KBIS"
}, "issuance_date": "2025-11-14",
"company_description": {
"active": true,
"legal_form": "Entrepreneur individuel",
"company_name": null,
"company_number": "812599215",
"headquarter_company_number": "81259921501245",
"first_name": "John",
"last_name": "Doe",
"full_name": "John Doe"
},
"branch_description": {
"branch_company_number": "81259921501245",
"address": "14 RUE DE LA PAIX",
"city": "PARIS",
"postal_code": "75000",
"active": true
}
},"company_name": "My Company",
"company_number": "812 120 000",
"registered_address": "14 RUE DE LA PAIX",
"issuance_date": "2025-09-27",
"legal_representatives": [
{
"type": "natural_person",
"first_name": "John",
"last_name": "Doe",
"full_name": "John Doe",
"function": null,
"company_name": null,
"company_number": null
}
]
},For
company_certificatetype document you can use theverification_numberto check the given document on the following website https://controle.infogreffe.fr/controle.
In case a legal representative is of type : legal_person first_name, last_name and full_name will be null.
For the type: driver_licence , we currently only handle the french new format of driver license. (⚠️ we currently not handle old driver licenses formats). On driver_licence document types the following data will be extracted :
"first_name": "JOHN",
"last_name": "DOE",
"full_name": "JOHN DOE",
"born_on": "2002-05-20",
"expired_on": "2036-10-08",
"license_type": [
"AM",
"B1",
"B"
]For the type: tax_notice, the following data will be extracted:
"fiscalNumber1": "1234567",
"fiscalNumber2": "2345678",
"taxNoticeReference": "12345678",
"issuanceDate": "2025-05-20",
"incomeYear": "2024",
"referenceIncome": "123456""fiscalNumber1": "1234567",
"full_name": "John Doe",
"fiscalNumber2": "2345678",
"full_name": "Jane Doe",
"taxNoticeReference": "12345678",
"issuanceDate": "2025-05-20",
"incomeYear": "2024",
"referenceIncome": "123456""employer_name": "Acme corp",
"employer_codice_fiscale": "12345678910",
"fiscalNumber1": "1234567",
"employee_full_name": "John Doe",
"employee_codice_fiscale": "2345678",
"issuanceDate": "2025-05-20",
"incomeYear": "2024",
"referenceIncome": "123456"For the type: payslip, the following data will be extracted:
"first_name": "John",
"last_name": "Doe",
"full_name": "John Doe",
"employer_name": "Test Company",
"pay_period_start_date": "2023-09-01",
"pay_period_end_date": "2023-09-30",
"net_pay": 2311.6,
"gross_pay": 3074.38,
"document_type": "Fiche de paie"For the type: invoice, the following data will be extracted:
"issuance_date": "2023-12-03",
"invoice_number": "29941989",
"invoice_date": "2023-11-26",
"seller_name": "Acme corp",
"seller_address": "Rue De Suède Av Pierre Berthelot 14000 CAEN",
"seller_company_number": "123456789",
"vat_identification_number": "FR12 123456789",
"shipping_address": "12 rue des hirondelles 14000 Caen",
"buyer_name": "John Doe",
"buyer_address": "13 avenue des marguerites 14000 Caen",
"total_excluding_taxes": 340.83,
"total_including_taxes": 408.99,
"document_type": "Facture""issuance_date": "2023-12-03",
"invoice_number": "29941989",
"invoice_date": "2023-11-26",
"seller_name": "ACME corp",
"seller_address": "Via Silvio Spaventa 52 06068 Perugia",
"seller_company_number": "01234567890",
"vat_identification_number": "IT 01234567890",
"seller_codice_fiscale": "01234567890",
"billing_address": null,
"shipping_address": " Via Partenope 193 47010 Forli",
"buyer_name": "John Doe",
"buyer_address": "VIA P. NENNI 22/28, 50054 Fucecchio",
"buyer_codice_fiscale": "RSSMRA85T10A562S",
"total_excluding_taxes": 340.83,
"total_including_taxes": 408.99,
"document_type": "Fattura"Classified document types
When calling Document Trust with : analysis_type[extraction]:true and specifying a type you will receive in the data inside :extracted_from_document a document_type value. This value is used to match the classified document type with the expected document type you defined.
The possible extracted_from_document.document_typevalues are the following :
KBISAvis de situationAttestation RNEPermis de conduire français (nouveau format)Permis de conduire français (ancien format)Carte vitale/Attestation de sécurité socialecarte_grise/carta_di_circolazioneAvis d'impôts sur le revenuFiche de paie/Busta pagaFacture/Fattura/Rechnung
How to perform consistency checks ?
Performing data consistency checks requires you to specify :
- The
typeof document you are uploading.analysis_type[extraction] : trueBy default, when passing a
type, we classify the uploaded document and match it against your expected document type.
To run data consistency checks you can call the following endpoint by passing the checks optional parameters in the payload :
To check that a document belongs to a person you can call the following endpoint by passing the checks optional parameters in the payload :
For social_security, driver_licence type documents :
social_security, driver_licence type documents :| Query Param | Type | Description |
|---|---|---|
| file | file | **[required]**The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2. |
| type | string | [required] The type of the document you are trying to analyze. Example : social_security |
| checks | object | [optional] |
| checks[first_name] | string | The first name of the person you want to check |
| checks[last_name] | string | The last name of the person you want to check. |
For company_certificate, rne_certificate type documents :
company_certificate, rne_certificate type documents :For company_certificate, rne_certificate type documents you can pass a list of legal representative first_names and last_names to confirm they appear on the document.
| Query Param | Type | Description |
|---|---|---|
| file | file | [required] The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2. |
| type | string | [required] The type of the document you are trying to analyze. Example : social_security |
| legal_representatives | list of objects | [optional] |
| checks[legal_representatives][0][first_name] | string | The first name name of the legal representative you want to check. |
| checks[legal_representatives][0][last_name] | string | The last name name of the legal representative you want to check. |
curl --location --request POST '{baseUrl}/document_analyses' \
--header 'Authorization: Bearer {apiKey}' \
--header 'Content-Type: multipart/form-data' \
--form 'file=@social_security_card.pdf' \
--form type='social_security' \
--form workspace_id='c0840991-848c-47ed-9bfa-68c9daca4793'
--form checks[first_name]:'John'
--form checks[first_name]:'Doe'curl --request POST \
--url '{baseUrl}/document_analyses' \
--header 'accept: application/json' \
--header 'content-type: multipart/form-data' \
--form type=company_certificate \
--form [legal_representative][0][first_name]=John \
--form [legal_representative][0][last_name]=Doecurl --request POST \
--url '{baseUrl}/document_analyses' \
--header 'accept: application/json' \
--header 'content-type: multipart/form-data' \
--form type=rne_certificate \
--form [legal_representative][0][first_name]=John \
--form [legal_representative][0][last_name]=Doe
Comparison rulesWhen providing a
first_nameand alast_name, we will compute afull_nameand compare it with the extracted data based on the following rules : Name Matching rules.
Additionally, on company_certificate, rne_certificate type documents we use the issuance_date to check that the document is at least 3 months old. To learn more on how to follow a Document Analysis results check the full guide on statuses here.
For vehicle_registration_document,temporary_vehicle_registration_document type documents :
vehicle_registration_document,temporary_vehicle_registration_document type documents :| Query Param | Type | Description |
|---|---|---|
| file | file | **[required]**The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2. |
| type | string | [required] The type of the document you are trying to analyze. Example : social_security |
| country_code | string | Defines the country of origin of the document. |
| checks | object | [optional] |
| checks[vehicle_owner][type] | string | The type of vehicle of owner : legal_person or natural_person |
| checks[vehicle_owner][first_name] | string | The first name of the owner of the vehicle |
| checks[vehicle_owner][last_name] | string | The last name of the owner of the vehicle |
| checks[vehicle_owner][company_name] | string | Required when type is legal_person. |
For auto_insurance_claims_history documents :
auto_insurance_claims_history documents :| Query Param | Type | Description |
|---|---|---|
| file | file | **[required]**The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2. |
| type | string | [required] The type of the document you are trying to analyze. Example : social_security |
| checks | object | [optional] |
| checks[policy_holder][type] | string | The type of vehicle of owner : legal_person or natural_person |
| checks[policy_holder][first_name] | string | The first name of the owner of the vehicle |
| checks[policy_holder][last_name] | string | The last name of the owner of the vehicle |
| checks[policy_holder][company_name] | string | Required when type is legal_person. |
For tax_notice documents :
tax_notice documents :| Query Param | Type | Description |
|---|---|---|
| type | string | The type of the document you are trying to analyze. Example : tax_notice |
| country_code | string | Defines the country of origin of the document. |
| Checks[first_name] [FR] | string | [optional] The first name provided must match exactly as it appears on the document, as a consistency check will be performed. |
| Checks[last_name] [FR] | string | [optional] The last name provided must match exactly as it appears on the document, as a consistency check will be performed. |
| Checks[employee_full_name] [IT] | string | [optional] The full name provided must match exactly as it appears on the document, as a consistency check will be performed. |
| Checks[full_name] [DE] | string | [optional] The full name provided must match exactly as it appears on the document, as a consistency check will be performed. |
| Checks[income_year] | string | [optional] The tax filing period |
ℹ️ Comparison rules
- For the French tax notice:
when providing afirst_nameand alast_name, the verification will automatically read and extract the information from the 2D-Doc and cross-check it with the provided document content. - For
tax_noticedocuments, you can also provideincome_yearto check that the tax filing period matches the document.
For payslip documents :
payslip documents :| Query Param | Type | Description |
|---|---|---|
| file | file | [required] The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2. |
| type | string | [required] The type of the document you are trying to analyze. Example : payslip |
| country_code | string | Defines the country of origin of the document. |
| checks | object | [optional] |
| checks[first_name] | string | The first name of the person you want to check |
| checks[last_name] | string | The last name of the person you want to check |
For invoice documents :
invoice documents :| Query Param | Type | Description |
|---|---|---|
| file | file | [required] The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2. |
| type | string | [required] The type of the document you are trying to analyze. Example : invoice |
| country_code | string | Defines the country of origin of the document. |
| checks | object | [optional] |
| checks[buyer_name] | string | The first and last name of the person you want to check |