# Create document via Upload

## Create document via Upload

<mark style="color:green;">`POST`</mark> `https://api.zapsign.com.br/api/v1/docs/`

This endpoint allows you to create a document for signature from a PDF. You must send the data in JSON, as well as receive it in the same format.

#### Headers

<table><thead><tr><th width="198">Name</th><th width="163">Type</th><th>Description</th></tr></thead><tbody><tr><td>Authorization<mark style="color:red;">*</mark></td><td>string</td><td><p>apiToken ahead of the "Bearer" text. </p><p>Ex: Bearer c7f35c84-7893-4087-b4fb-d1f06c23</p></td></tr></tbody></table>

#### Request Body

<table><thead><tr><th width="242.79998779296875">Name</th><th width="166">Type</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>string</td><td>Title of the document. String of up to 255 characters</td></tr><tr><td>url_pdf</td><td>string</td><td>Define the PDF to be signed from a public URL with the file. For now, we only accept one file in PDF format, up to 10Mb. </td></tr><tr><td>base64_pdf</td><td>string</td><td><strong>Alternative to url_pdf:</strong> Set the PDF to be signed, starting from a base64. You must convert the file to a base64 string and send it to us in this parameter (more details below).</td></tr><tr><td>markdown_text</td><td>string</td><td><strong>Alternative to url_pdf:</strong> Allows sending a text in Markdown for document creation, making integration with AI and automations easier. As an example, check out <a href="https://github.com/renatohr/zapsign-agent-openai">ZapSign Agent OpenAI</a>, which demonstrates how AI agents can utilize this feature.</td></tr><tr><td>signers[name]</td><td>Array&#x3C;Signer></td><td><p>The 'signers' field represents the people who will sign the document. You can find how to configure each signer bellow. </p><p>It's an array of Signer objects.</p></td></tr><tr><td>url_docx</td><td>string</td><td><strong>Alternative to url_pdf:</strong> Set the DOCX to be signed, starting from a public URL with the file.</td></tr><tr><td>base64_docx</td><td>string</td><td><strong>Alternative to url_docx:</strong> Set the DOCX to be signed, starting from a base64. You must convert the file to a base64 string and send it to us in this parameter (more details below).</td></tr><tr><td>lang</td><td>string</td><td>Document language. Possible values: "pt-br" (Portuguese), "es" (Spanish), "en" (English), "fr" (French). Default: "pt-br"</td></tr><tr><td>disable_signer_emails </td><td>boolean</td><td>To disable emails sent to signers, send this parameter to true. Default: false</td></tr><tr><td>brand_logo</td><td>string</td><td>If you want to customize the logo of the signing experience for this specific document, submit the image URL (must be a publicly accessible link). Default: ""</td></tr><tr><td>brand_primary_color</td><td>string</td><td>If you want to customize the primary (button) color of the signing experience for this specific document, send it in rgb or hexadecimal. Ex: "#0011ee". Default: ""</td></tr><tr><td>brand_name </td><td>string</td><td>If you want to customize the sender name of emails sent to the signer, enter the brand name here. For example, if you entered "XPTO Company", the sender of the email will be "XPTO Company via ZapSign". Max-length: 100 characters. Default: ""</td></tr><tr><td>external_id</td><td>string</td><td><p>ID of the document in your application. </p><p>Default: ""</p></td></tr><tr><td>folder_path </td><td>string</td><td><p>Path of the folder inside ZapSign where the document will be placed. If the folders do not exist, they will be created automatically. Requirements: (1) folder_path can be up to 255 characters long, (2) each folder can be up to 50 characters long, (3) there is a limit of 5 folder levels. </p><p>Ex.: "/api/" or "/folder1/folder2/folder3/". Default: "/" (no folder).</p></td></tr><tr><td>created_by</td><td>string</td><td><p>Email of the user who will be defined as creator of the document, for internal organization purposes. If the email does not exist or is not your account user, this parameter will be ignored. </p><p>Default: "" (document will have account owner as creator)</p></td></tr><tr><td>date_limit_to_sign</td><td>DateTime</td><td><p>Deadline for signing the document. </p><p>(Accepted formats: YYYY-MM-DD, YYYY-MM-DDTH:m:s.ssssssZ)</p></td></tr><tr><td>signature_order_active </td><td>boolean</td><td><p>If true, the signer's signatures will be ordered sequentially. </p><p>Default: false</p></td></tr><tr><td>observers </td><td>array&#x3C;string></td><td>Represents document observers (limit 20), i.e. email addresses that will be notified upon completion of the signature flow. It's an array of strings.</td></tr><tr><td>reminder_every_n_days</td><td>integer</td><td>Represents the interval of days between reminders that will be sent to signers, as long as they don`t sign. There will be 6 tries at most. Observation: this field must only be filled if send_automatic_whatsapp or send_automatic_email are true. Example: if setted to 8 it will be sent one email every 7 days, until it's signed, for at most 21 days.</td></tr><tr><td>allow_refuse_signature</td><td>boolean</td><td><p>If true, signers have the option to refuse to sign. </p><p>Default: false.</p></td></tr><tr><td>disable_signers_get_original_file</td><td>boolean</td><td><p>If true, signers do not have the option to download the original document. </p><p>Default: false.</p></td></tr><tr><td>Metadata</td><td>Array</td><td>Custom metadata sent during document creation, in <code>key</code> and <code>value</code> pair format. This information appears only in the creation, signing, rejection, and deletion webhooks.</td></tr><tr><td>folder_token</td><td>string</td><td><p>If provided, this field will take precedence over <code>folder_path</code>. It defines the directory based on the <strong>folder token</strong>, which can be obtained by accessing:<br><code>https://app.zapsign.com.br/conta/documentos?pasta=&#x3C;folder_token></code></p><p>If you don't know the token yet, navigate to the desired folder starting from:<br><code>https://app.zapsign.com.br/conta/documentos</code><br>Then, copy the <code>pasta</code> parameter from the URL after opening the target folder.</p></td></tr><tr><td>has_simplified_signature</td><td>boolean</td><td>If true, it enables the simplified signature for all signers at the location specified by the <code>simplified_signature_position</code> parameter.</td></tr><tr><td>simplified_signature_position</td><td>string</td><td><p>Defines where to insert the simplified signature field. Accepted values:<br></p><p>"left": inserts it on the left side of the pages.<br></p><p>"bottom": inserts it in the footer of the pages.<br></p><p>"right": inserts it on the right side of the pages.</p></td></tr><tr><td>signature_placement</td><td>string</td><td><p>Allows you to position the signature in the document using an anchor text (no need for x, y coordinates). Set signature_placement: "&#x3C;&#x3C;{signature_identifier}>>" and the signature will be placed wherever this text is found. If the text appears more than once, the signature will be placed in all occurrences.</p><p></p><p><strong>Note</strong>: using <mark style="color:$danger;"><strong>&#x3C;&#x3C; >></strong></mark> is highly recommended to avoid conflicts with the document text, but it is not mandatory (e.g., "&#x3C;>"). Default: "".</p><p>If you do not want the anchor text to be visible in the final document, simply set the anchor text color to match the document background color.</p></td></tr><tr><td>rubrica_placement</td><td>string</td><td><p>Allows you to position the initials in the document using an anchor text (no need for x, y coordinates). Set rubrica_placement: "&#x3C;&#x3C;{initials_identifier}>>" and the initials will be placed wherever this text is found. If the text appears more than once, the initials will be placed in all occurrences.</p><p></p><p><strong>Note</strong>: using <mark style="color:$danger;"><strong>&#x3C;&#x3C; >></strong></mark> is highly recommended to avoid conflicts with the document text, but it is not mandatory (e.g., "&#x3C;>"). Default: "".</p><p>If you do not want the anchor text to be visible in the final document, simply set the anchor text color to match the document background color.</p></td></tr></tbody></table>

{% tabs %}
{% tab title="200 Document created successfully." %}

```javascript
{
    "open_id": 5,
    "token": "eb9c367a-e62f-4992-8360-b0219deaeecc",
    "status": "pending",
    "name": "Jhon Doe Documents",
    "original_file": "https://zapsign.s3.amazonaws.com/pdf/62c2b027-d8fc-4392-xas75-f3c46c3cfc7a/d33336-4182-8c8b-ded5287e4c0f.pdf",
    "signed_file": null,
    "created_at": "2020-04-16T03:33:46.241747Z",
    "last_update_at": "2020-04-16T03:33:46.241775Z",
    "signers": [
        {
            "token": "921c115d-4a6e-445d-bdca-03fadedbbc0b",
            "status": "new",
            "name": "João da Silva",
            "email": "",
            "phone_country": "",
            "phone_number": "",
            "times_viewed": 0,
            "last_view_at": null,
            "signed_at": null
        },
        {
            "token": "07fb0a0a-4b7d-49a5-bd7b-4958265c4e46",
            "status": "new",
            "name": "Fulano Siclano",
            "email": "",
            "phone_country": "",
            "phone_number": "",
            "times_viewed": 0,
            "last_view_at": null,
            "signed_at": null
        }
    ]
}
```

{% endtab %}
{% endtabs %}

#### Simplified signature

The simplified signature replaces the handwritten signature with a text block containing the signer(s) information. This block is inserted automatically and usually appears on the side margin of the page. Accepted parameters:

`has_simplified_signature` (boolean): enables the simplified signature for all signers.

* true: inserts the text block; no drawing field is shown.
* false or omitted: no simplified signature effect (normal signature flow).

`simplified_signature_position` (string): sets the position of the text block.

* "bottom": Inserts the simplified signature in the footer of the pages.
* "left":  Inserts the simplified signature on the left side of the pages.
* "right"  Inserts the simplified signature on the right side of the pages.

### Signers configuration

**Document** - JSON root:

* **Signers -** for each signer:

  * **auth\_mode (string):** You can choose the signer's authentication method. Possible values are:

  <table><thead><tr><th width="228">auth_mode</th><th width="297">Description</th><th>Additional cost</th></tr></thead><tbody><tr><td>"assinaturaTela"</td><td>On-screen signature</td><td>Free</td></tr><tr><td>"tokenEmail"</td><td>Email token</td><td>Free</td></tr><tr><td>"assinaturaTela-tokenEmail"</td><td>On-screen signature and email token</td><td>Free</td></tr><tr><td>"tokenSms"</td><td>SMS token</td><td>Free</td></tr><tr><td>"assinaturaTela-tokenSms"</td><td>On-screen signature and SMS token</td><td>Free</td></tr><tr><td>"tokenWhatsapp"</td><td>WhatsApp token</td><td>5 credits = USD$0.1</td></tr><tr><td>"assinaturaTela-tokenWhatsapp"</td><td>On-screen signature and WhatsApp token</td><td>5 credits = USD$0.1</td></tr></tbody></table>

  Add credits to your account in [Settings > Plan > Credits](https://app.zapsign.co/conta/configuracoes/plans?tab=credits) and clicking the ‘Contact Support’

  * **email (string):** You can set the signer's email.
  * **phone\_country (string):** You can set the phone (country code) of the signer. Default: ""
  * **phone\_number (string):** You can set the phone number of the signer. Example: "11998989222". Default: ""
  * **signature\_placement** (string): Allows positioning the signature in the document using anchor text (no x, y coordinates needed). Set signature\_placement: "<<{signature\_identifier}>>" and the signature will be positioned where this text is found. If the text appears more than once, the signature will be positioned at all locations. Note: using << >> is highly recommended to avoid conflicts with text, but is not mandatory. Ex: "<\<signer1>>". Default: "". If you do not want the anchor text to be visible in the final document, simply set the anchor text color to match the document background color.
  * **rubrica\_placement** (string): Allows positioning the rubrica in the document using anchor text (no x, y coordinates needed). Set rubrica\_placement: "<<{rubrica\_identifier}>>" and the rubrica will be positioned where this text is found. If the text appears more than once, the rubrica will be positioned at all locations. Note: using << >> is highly recommended to avoid conflicts with text, but is not mandatory. Ex: "<\<signer1Rubrica>>". Default: "". If you do not want the anchor text to be visible in the final document, simply set the anchor text color to match the document background color.
  * **require\_document** **(boolean):** If true, the signer will be required to provide their identification information (country, document type, and document number)  and this information will be included in the signature report. Default: false
  * **require\_document\_data** **{object}**: If the country, document type, and document number are defined, the signer will not be able to modify this information during the signing process. If only the country and document type are defined, the signer will be required to enter the document number.
    * **document\_country (string)**. Possible values: "br" (Brazil), "co" (Colombia), "mx" (Mexico), "us" (United Stated),  "ar" (Argentina), "pe" (Peru), "cl" (Chile), "other" (Other country).
    * **document\_type  (string)**. Possible values: "national\_id", "foreign\_id", "driver\_license", "ppt".
    * **document\_number (string)**: Default: "".
  * **send\_automatic\_email (boolean):** If true, ZapSign will send an email to the signer with the link to sign the document. If false (default), you will be responsible for sharing the signature link with the signer, whether through your website, widget, WhatsApp, SMS, email,  etc.  For this to work, it is mandatory that the signer's email address is defined. **Tip**: Define the parameters 'brand\_name', 'brand\_primary\_color', and 'brand\_logo' to personalize the emails sent to signers.
  * **send\_automatic\_whatsapp** (boolean): If **true**, ZapSign will send a whatsapp message to the signer with the link to sign the document. Default: false\
    **Note:** For this to work, it is mandatory that the signer's phone number is defined. Each automatic sending via WhatsApp costs $0,1 USD. Buy credits in [**Configuration > Plan**](https://app.zapsign.com.br/conta/configuracoes?tab=plans)**.**
  * **send\_automatic\_whatsapp\_signed\_file** (boolean): If **true**, ZapSign will send a whatsapp message to the signer with the link to the signed document.\
    **Note:** For this to work, it is mandatory that the signer's phone number is defined. Each automatic sending via WhatsApp costs $0,1 USD. Buy credits in [Configuration > Plan](https://app.zapsign.com.br/conta/configuracoes?tab=plans).
  * **order\_group (integer):** In case "signature\_order\_active" is active in the document, this field controls the signing order. Example: If the field is set to 1, then this signer will be the first to sign. If the field is set to 2, then this signer will be the second to sign and so on. [For more information click here ](#signer-groups)
  * **custom\_message (string):** (applies to **send\_automatic\_email: true** and **send\_automatic\_whatsapp: true**). The custom\_message is the personalized message that you can insert in the email sent by ZapSign to the signer. \
    Example: "Hello So-and-so, \n This is your employment contract. \n Hugs, Team XPTO". The \n symbol serves to "skip a line" in the email text. Default: ""
  * **lock\_email (boolean):** If true, the signer will not be able to change their email during the signing process. Default: false
  * **blank\_email** **(boolean):** If true, the signer's email will not be requested, and this information will not be included in the signature report. It is mandatory to have the signer's email OR phone number. Default: false
  * **hide\_email** **(boolean):** You can hide signer email in signatures report. Default: false
  * **lock\_phone (boolean):** If true, the signer will not be able to change their phone during the signing process. Default: false
  * **blank\_phone** **(boolean):** If true, the signer's phone will not be requested, and this information will not be included in the signature report. It is mandatory to have the signer's email OR phone number. Default: false
  * **hide\_phone** **(boolean):** You can hide the signer's phone in the signatures report. Default: false
  * **lock\_name (boolean):** If true, the signer will not be able to change their name during the signing process. Default: false
  * **require\_selfie\_photo (boolean):** You can ask the signer to take a selfie while signing. Default: false.&#x20;
  * **require\_document\_photo (boolean):** You can ask the signer to take a photo of his personal document while signing. Default: false
  * **selfie\_validation\_type (string):** Advanced biometric methods.

<table><thead><tr><th width="158">Selfie_validation_type</th><th width="314">Description</th><th width="139">Countries</th><th>Price per validation</th></tr></thead><tbody><tr><td>liveness-document-match</td><td>Facial recognition that requires the signer to upload a photo of their identity document and record their face. It validates that the person is the same as in the document and that the person is present at the time of sign. If you already have the signer's document, read the <a href="#facial-recognition">Facial Recognition section.</a></td><td>Global</td><td>25 credits = $0.5 USD</td></tr><tr><td>identity-verification</td><td>Document validation and facial biometrics. It validates that the person is present at the time of signing, that the document is real, that the person is the same as in the document, and that the document is registered in government databases. </td><td>AR, CO, MX, CL, PE</td><td>55 credits = $1.0 USD</td></tr><tr><td>identity-verification-global</td><td>Document validation and facial biometrics, ensuring that the signer is present, the document is authentic (using fraud detection models), and the name extracted from the document matches the signer's name. <strong>Note</strong>: it does not include validation against government databases.</td><td>Global</td><td>50 credits = $0.9 USD</td></tr></tbody></table>

For more information about the validation, [click here](https://clients.zapsign.com.br/en/help/documents-creation#authentications-methods) ([Authentication Method: Identity Verification](https://clients.zapsign.com.br/en/help/authentication-method-identity-verification))

Add credits to your account in [Settings > Plan > Credits](https://app.zapsign.co/conta/configuracoes/plans?tab=credits) and clicking the ‘Contact Support’

* **qualification (string):** Qualification to appear in the signatures report. Ex: "Witness" value will result in "Signed as a witness". Default: ""
* **external\_id (string):** ID of the signer in your application. Default: ""
* **redirect\_link (string):** link to redirect after signer signs. For example: "<https://www.yoursite.co/thank-ypu>". It will appear as a "CONTINUE" after signing the document. Remember to insert http\:// or https\:// at the beginning of the link. Default: ""&#x20;

### Request

#### Create document via PDF

{% embed url="<https://www.postman.com/zapsign/workspace/zapsign-workspace/request/27495556-97395ac6-ced0-41bd-99eb-1f94c05625de?ctx=documentation>" %}
URL for the Create doc from upload PDF endpoint
{% endembed %}

#### Create document via DOCX

{% embed url="<https://www.postman.com/zapsign/workspace/zapsign-workspace/request/27495556-95777596-18ed-415a-ad5f-2b1ac98b496b?ctx=documentation>" %}
URL for the Create doc from upload DOCX endpoint
{% endembed %}

<details>

<summary>Delphi request example</summary>

```javascript
var
  json : string;
  ArraySigner : TJSONArray;
  ObjDoc, ObjSigner : TJSONObject;
begin
   ObjDoc := TJSONObject.Create;
   ObjDoc.AddPair('name', 'Contrato de Locação');
   ObjDoc.AddPair('base64_pdf', 'ASFASDFKÇLKÇGÇO#OP%$%#WERP#@&*OSADFJF...');  // Arquivo base64

   ArraySigner := TJSONArray.Create;

   ObjSigner := TJSONObject.Create;
   ObjSigner.AddPair('name', 'João da Silva');
   ObjSigner.AddPair('email', 'joaosilva@gmail.com.br');
   ObjSigner.AddPair('phone_country', '55');
   ObjSigner.AddPair('phone_number', '11888121111');
   // Opcional caso queira impedir alteração 
   ObjSigner.AddPair('lock_name', TJSONTrue.Create);
   ObjSigner.AddPair('lock_email', TJSONTrue.Create);
   ObjSigner.AddPair('lock_phone', TJSONTrue.Create);

   ArraySigner.AddElement(ObjSigner);

   ObjDoc.AddPair('signers', ArraySigner);
   json := ObjDoc.ToString;

   ObjDoc.DisposeOf;

   RESTClient.BaseURL := 'https://api.zapsign.com.br/api/v1/docs/?api_token=...seu token..';
   Request_remete.ClearBody;
   Request_remete.Body.Add(json,ContentTypeFromString('application/json'));
   Request_remete.Execute;
end;
```

</details>

### Response

After a successful request, you should receive a response like this:

{% hint style="warning" %}
**Caution:** the **original\_file** and **signed\_file** links are temporary and **expires in 60 minutes**. In case your system needs to save those links it is recommended that you save them in your own CDN or that you call the [Detail document](https://docs.zapsign.com.br/english/documentos/detalhar-documento) endpoint every time your user needs a valid URL that will expires in more 60 minutes.
{% endhint %}

```javascript
{
    "open_id": 5,
    "token": "eb9c367a-e62f-4992-8360-b0219deaeecc",
    "status": "pending",
    "name": "John's contract",
    "original_file": "https://zapsign.s3.amazonaws.com/pdf/62xxxxx-d8fc-4392-8575-f3c46c3cfc7a/df6bac91-2766-4182-8c8b-ded5287e4c0f.pdf",
    "signed_file": null,
    "created_at": "2020-04-16T03:33:46.241747Z",
    "last_update_at": "2020-04-16T03:33:46.241775Z",
    "signers": [
        {
            "token": "921c115d-4a6e-445d-bdca-03fadedbbc0b",
            "sign_url": "https://app.zapsign.co/verificar/921c115d-4a6e-445d-bdca-03fadedbbc0b",
            "status": "new",
            "name": "John Doe",
            "email": "",
            "phone_country": "",
            "phone_number": "",
            "times_viewed": 0,
            "last_view_at": null,
            "signed_at": null,
            "resend_attempts": null
        },
        {
            "token": "07fb0a0a-4b7d-49a5-bd7b-4958265c4e46",
            "sign_url": "https://app.zapsign.co/verificar/07fb0a0a-4b7d-49a5-bd7b-4958265c4e46",
            "status": "new",
            "name": "Grumpy Jones",
            "email": "",
            "phone_country": "",
            "phone_number": "",
            "times_viewed": 0,
            "last_view_at": null,
            "signed_at": null,
            "resend_attempts": null
        }
    ]
}
```

What you should do with this response is send the signature link to the signers through your application.

The signature link consists of the route:

**<https://app.zapsign.co/verificar/\\{{signer\\_token\\}}>**

Thus, in the example above, where we have two signers, you must send two signature links, each signer with their respective token:

\- John Doe: <https://app.zapsign.co/sign/921c115d-4a6e-445d-bdca-03fadedbbc0b>

\- Grumpy Jones: <https://app.zapsign.co/sign/07fb0a0a-4b7d-49a5-bd7b-4958265c4e46>

And now just wait for the signers to sign!

### **Facial Recognition**

The authentication method verifies the **physical presence** of the person at the time of signing and ensures that their face matches the document presented.

If the company already has a photo of the signer's identity document, it can be sent in the request so that the signer only records a video of their face, which will then be compared with the identity document the company has. To do this, the following parameters must be sent:

* **document\_photo\_url** (string): Public URL of the **front side** of the identity document photo. This photo will be compared with the video recorded by the signer during the document signing process.
* **document\_verse\_photo\_url** (string): Public URL of the **back side** of the identity document photo. Both photos, along with a snapshot from the recorded video, will be included in the signature report.

{% hint style="warning" %}
**Important**: This method **does not validate the authenticity of the identity document**, only the match between the person and the document presented. For a higher level of security, [check the **"Identity Validation"** authentication method.](https://clients.zapsign.com.br/en/help/authentication-method-identity-verification)
{% endhint %}

Learn more about **facial recognition** by [clicking **here**.](https://clients.zapsign.com.br/en/help/authentication-method-facial-recognition)

### Signer Groups

The `order_group` parameter allows you to organize the signers of a document into specific groups, defining a structured signing order. With this functionality, it’s possible to require all signers in Group A to sign first, and only after they’ve completed signing, signers in Group B can proceed — and so on. This is especially useful in workflows that require a defined hierarchy or signing sequence.

#### How does it work?

The document-level parameter `signature_order_active` must be set to `true`, and each signer should be assigned to a group using the `order_group` parameter.\
For example: if Maria and Luisa must sign first, and then Pedro and Pablo, the `order_group` for Maria and Luisa should be `1`, and for Pedro and Pablo it should be `2`.

#### Editing signer groups

After the groups and signers are defined, it won’t be possible to edit the signers within each group. Make sure to review everything carefully before finalizing the configuration.\
You can remove the group configuration to revert to an unordered signing flow — [more details \[here\]](https://docs.zapsign.com.br/english/remove-signer-groups).

#### Requirements to use this feature

To ensure this functionality works as intended, you must enable the **“Block signature out of the defined order for signatories”** option.\
This setting is available in [**Settings > Organization > Preferences**.](https://app.zapsign.co/conta/configuracoes?tab=preferences)\
If this option is not enabled, signers will be able to sign regardless of the defined group order.

### About the base64

Base64 its a simply way to convert files to text. You can check a more detailed definition here <https://en.wikipedia.org/wiki/Base64>. Therefore, convert a file to base64 and send it as a text on the request\`s body is easier then dealing with the **multipart/form-data**, for example.

To test the API you can manually convert your PDF into a base64 through a lot of websites, such as this one: <https://base64.guru/converter/encode/pdf>

When the API is alredy integrated to your system, look for the correspondent function in your software language to convert files to base64.

**Watch out:** you must send the base64\_pdf parameter only with the base64 file conversion. **Dont** send the data:application/pdf;base64, on your parameter.

{% hint style="info" %}
Dont want to work with base64? Upload your PDF in a public URL and use the url\_pdf parameter.
{% endhint %}

### Chat with Gepeto!

Have any questions? Use our artificial intelligence trained with all the API documentation. =)

{% embed url="<https://n8n.zapsign.com.br/webhook/fee2c476-7f23-4a4f-8928-5c7ab081ffcd/chat>" %}


---

# Agent Instructions: 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:

```
GET https://docs.zapsign.com.br/english/documentos/criar-documento.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
