> For the complete documentation index, see [llms.txt](https://docs.caf.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caf.io/caf-api/core-api/transaction-details/background-check/kyb/documents.md).

# Documents

## VerifAI Docs - File manipulation detection - NEW (PJ99)

Returns information about digital manipulations in files, such as social contracts, invoices, and receipts, by analyzing their metadata. For greater accuracy, we recommend you send files in PDF format. Currently, this functionality is available in English and Portuguese, with Spanish as the next language to be added.

**Section**: `pjVerifaiDocs`

**Required files:** `Any file in .pdf, .jpg, or .jpeg format`

**Optional parameter:** `CNPJ`

{% tabs %}
{% tab title="Schema" %}

| Attribute                            | Type             | Description                                                                                                                                                |
| ------------------------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| statusCode                           | String           | Query status ([details](/caf-api/core-api/transaction-details/background-check/data-structure.md#status-code))                                             |
| message                              | String           | Query result descriptive message                                                                                                                           |
| data                                 | Array            | A list with the analysis results for each submitted document                                                                                               |
| data\[x].status                      | String           | Status of the analysis                                                                                                                                     |
| data\[x].analysisTime                | String           | Timestamp of analysis                                                                                                                                      |
| data\[x].queryId                     | String           | Internal ID of the analysis                                                                                                                                |
| data\[x].sha256                      | String           | Sha256 of the input file                                                                                                                                   |
| data\[x].fileType                    | String           | Type of analyzed document                                                                                                                                  |
| data\[x].mimeType                    | String           | Mime type of the input document : `application/pdf`, `image/jpeg`                                                                                          |
| data\[x].score                       | String           | Fraud score produced by the document analysis: `NORMAL`, `TRUSTED`, `WARNING`, `HIGH_RISK`                                                                 |
| data\[x].decision                    | String           | Level of risk associated with the analyzed document: `LOW_RISK`, `MEDIUM_RISK`, `HIGH_RISK`                                                                |
| data\[x].numPages                    | String           | Number of pages in submitted document                                                                                                                      |
| data\[x].fileName                    | String           | File name                                                                                                                                                  |
| data\[x].submissionId                | String           | Document unique identifier                                                                                                                                 |
| data\[x].reason                      | Object           | Details object describing the reason for the decision                                                                                                      |
| data\[x].reason.value                | String           | Reason label                                                                                                                                               |
| data\[x].reason.label                | String           | Reason description                                                                                                                                         |
| data\[x].sampleMetadata              | Object           | Metadata of an analyzed document                                                                                                                           |
| data\[x].sampleMetadata.producer     | String           | Document produce                                                                                                                                           |
| data\[x].sampleMetadata.creator      | String           | Document creator                                                                                                                                           |
| data\[x].sampleMetadata.creationDate | String           | Document creation date                                                                                                                                     |
| data\[x].sampleMetadata.modDate      | String           | Document modification date                                                                                                                                 |
| data\[x].sampleMetadata.author       | String           | Document author                                                                                                                                            |
| data\[x].sampleMetadata.title        | String           | Document title                                                                                                                                             |
| data\[x].sampleMetadata.keywords     | String           | Document keywords                                                                                                                                          |
| data\[x].sampleMetadata.subject      | String           | Document subject                                                                                                                                           |
| data\[x].indicators                  | Array of objects | Detailed information about the specific results of the analysis. This field contains detailed observations that the system was able to make about the file |
| data\[x].indicators\[x].type         | String           | Type of a quality indicator: `RISK`, `TRUST`, `INFO`                                                                                                       |
| data\[x].indicators\[x].category     | String           | Category of indicator                                                                                                                                      |
| data\[x].indicators\[x].title        | String           | Indicator title                                                                                                                                            |
| data\[x].indicators\[x].description  | String           | Description of the indicator                                                                                                                               |
| data\[x].indicators\[x].origin       | String           | Indicator origin: `fraud`, `quality`                                                                                                                       |
| data\[x].documentClass               | Object           | The type of file submitted for analysis                                                                                                                    |
| data\[x].documentClass.id            | String           | Document type ID                                                                                                                                           |
| data\[x].documentClass.type          | String           | Document type                                                                                                                                              |
| data\[x].documentClass.detailedType  | String           | Document type detailed                                                                                                                                     |
| {% endtab %}                         |                  |                                                                                                                                                            |

{% tab title="Example" %}

```json
{
  "pjVerifaiDocs": {
    "statusCode": "01",
    "data": [
      {
        "status": "SUCCESS",
        "analysisTime": "2025-07-01T19:39:20.605088Z",
        "deploymentVersion": "4f59fea5",
        "queryId": "3512299f-8385-4152-93c2-eaa2dea85983-6864382d16941a000265d233-conta-internet-20-05",
        "fileType": "pdf",
        "mimeType": "application/pdf",
        "sha256": "63d5d349a6610d048c05a620aa3f7afbda3be2686c6791418ac8c7d2b099db71",
        "score": "HIGH_RISK",
        "sampleMetadata": {
          "producer": "Producer 1.91a ",
          "creator": "Dox PDF",
          "creationDate": "2024-12-20T09:41:35+01:00",
          "modDate": "2025-01-09T17:48:56+01:00",
          "author": "Document Designer Development Group",
          "title": "Vivo conta 20/05/2025",
          "keywords": "Ver 6.0",
          "subject": "Internet"
        },
        "indicators": [
          {
            "type": "RISK",
            "category": "document_structure",
            "title": "Known document with unexpected patterns",
            "description": "We’ve seen many documents like this from Telefonica Brasil S.A., and this one stands out - in the wrong way. Its structure, layout, and other elements don’t follow the expected pattern. These clues strongly suggest the document was modified, recreated, or produced using different software.",
            "origin": "fraud"
          },
          {
            "type": "RISK",
            "category": "modifications",
            "title": "Content was modified",
            "description": "This document was produced in several versions. This version of the document differs from the original.",
            "origin": "fraud"
          },
          {
            "type": "RISK",
            "category": "modifications",
            "title": "Edited using editor",
            "description": "This document contains tags used by PDF editors, which indicate modifications of the document.",
            "origin": "fraud"
          },
          {
            "type": "TRUST",
            "category": "visual_appearance",
            "title": "Telefonica Brasil S.A. logo",
            "description": "This document contains a logo commonly associated with Telefonica Brasil S.A., suggesting it was issued by that utility.",
            "origin": "fraud"
          },
          {
            "type": "RISK",
            "category": "metadata_modifications",
            "title": "Evidence of modification based on document metadata",
            "description": "Time of creation is 2024-12-20T08:41:35+00:00 but the time of modification is 2025-01-09T16:48:56+00:00. This may indicate that the document was updated or modified. The time span between creation and modification is 20 days, 8:07:21.",
            "origin": "fraud"
          },
          {
            "type": "RISK",
            "category": "modifications",
            "title": "Anomalous fonts",
            "description": "Some of the fonts in use here are not typically used by the issuer in this kind of document.",
            "origin": "fraud"
          },
          {
            "type": "RISK",
            "category": "anomalous_metadata",
            "title": "Document has anomalous metadata",
            "description": "The metadata (creator, producer, etc.) differs from the typical document from the same issuer. ",
            "origin": "fraud"
          }
        ],
        "documentClass": {
          "id": "utility_bill_vivo",
          "type": "utility_bill",
          "documentClassType": "UtilityBillDocumentClass",
          "detailedType": "internet_mobile_television"
        },
        "numPages": 3,
        "fileName": "conta-internet-20-05.pdf",
        "submissionId": "bdd50bc4-fa5c-46ba-a9d6-5c715af98daa",
        "decision": "HIGH_RISK",
        "reason": {
            "value": "DIGITAL_MODIFICATION_HIGH_CONFIDENCE",
            "label": "Document contains traces of digital modification, likely with fraudulent intent"
        }
      },
      {
          "status": "SUCCESS",
          "analysisTime": "2025-07-02T13:11:30.099104Z",
          "deploymentVersion": "4f59fea5",
          "queryId": "49dc9bda-fa86-41c0-9c9c-8a8cff5e6ecd-68652fdfdf165d00021c9f44-comprovante-pix",
          "fileType": "pdf",
          "mimeType": "application/pdf",
          "sha256": "55662b513518cf0bedf695febedbfd489924b1ec92de3aabfdc6dcf97e2822dc",
          "score": "NORMAL",
          "sampleMetadata": {
            "producer": "mPDF 7.1.9",
            "creator": null,
            "creationDate": "2019-11-29T06:33:40+03:00",
            "modDate": "2019-11-29T06:33:40+03:00",
            "author": null,
            "title": "Tiny",
            "keywords": null,
            "subject": null
          },
          "indicators": [
            {
              "indicatorId": "is_pdf_unmodified_per_metadata",
              "type": "TRUST",
              "category": "authenticity",
              "title": "No modification in document metadata",
              "description": "Timestamps in this document's metadata do not indicate that the file was incrementally updated or modified.",
              "origin": "fraud"
            },
            {
              "indicatorId": "has_mpdf_metadata",
              "type": "INFO",
              "category": "known_creator",
              "title": "Saved in mPDF",
              "description": "The document was processed and saved in mPDF - software library (PHP language) for generating PDF files from HTML documents.",
              "origin": "fraud"
            }
          ],
          "documentClass": {
            "id": "unknown",
            "type": "unknown",
            "documentClassType": "DocumentClass"
          },
          "numPages": 1,
          "fileName": "comprovante-pix.pdf",
          "submissionId": "a441c5d6-b2d2-4fef-8aaa-799ae7308f4b",
          "decision": "LOW_RISK",
          "reason": {
              "value": "NO_DIGITAL_MODIFICATION",
              "label": "Document shows no signs of digital modification"
          }
        }
    ]
  }
}
```

{% endtab %}

{% tab title="Validations Rules" %}

| Rule                                  | Description                                                                         |
| ------------------------------------- | ----------------------------------------------------------------------------------- |
| verifai\_docs\_available\_analysis    | Checks if analysis results are available for the submitted documents.               |
| verifai\_docs\_analysis\_medium\_risk | Checks whether the analysis result of any submitted document indicates medium risk. |
| verifai\_docs\_analysis\_high\_risk   | Checks whether the analysis result of any submitted document indicates high risk.   |
| {% endtab %}                          |                                                                                     |
| {% endtabs %}                         |                                                                                     |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.caf.io/caf-api/core-api/transaction-details/background-check/kyb/documents.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
