Document Validation API: Documentation and Integrations

Dynadok can be used through the platform, through the API, or both. For your engineering team, here is what matters: it takes two endpoints to get document validation running — a POST that sends the file and a GET that returns the extracted data. API-key authentication, plain HTTP requests, JSON responses.

Updated September 2026 · Dynadok Team
Direct answer

The Dynadok API has the base URL https://api.dynadok.com and authenticates through the x-api-key header. You send the document to POST /v1/api/documents, receive an id with a processing status and fetch the result from GET /v1/api/documents/{id}. No need to replace your ERP, HRIS, LMS or student information system: Dynadok integrates with the environment you already have.

Open the documentation See the endpoints

First integration

From zero to your first validated document

Three steps. Any HTTP client will do: cURL, Postman or your language’s standard library.

01

Get your API key

Authentication uses the x-api-key header with the key provided by Dynadok. Requests without a key, or with an invalid or expired key, return 401 Unauthorized.

Base URL
https://api.dynadok.com
02

Send the document

A multipart POST with the file in files and the document type in type. The response returns the id and the processing status.

cURL
curl --location 'https://api.dynadok.com/v1/api/documents' \
  --header 'x-api-key: your_api_key' \
  --form 'files=@"/path/to/file.pdf"' \
  --form 'type="RG"'
Response
{
  "id": "123456",
  "status": "processing"
}
03

Retrieve the extracted data

With the id in hand, query the processed document. The response returns the status and the fields extracted by the AI.

cURL
curl -X GET "https://api.dynadok.com/v1/api/documents/{id}" \
  --header 'x-api-key: your_api_key'
Response
{
  "id": "123456",
  "status": "processed",
  "data": {
    "nome": "John Smith",
    "documento": "123456789",
    "data_emissao": "2023-01-01"
  }
}
Same thing, in your language

Python example

Nothing exotic: an HTTP request with requests. The same applies to axios or fetch in JavaScript and HttpClient in Java or C#.

import requests

url = 'https://api.dynadok.com/v1/api/documents'

payload = {'type': 'CERTIDAO_DE_NASCIMENTO'}
files = [
  ('files', ('file_name.pdf', open('file_name.pdf', 'rb'), 'application/pdf'))
]
headers = {
  'x-api-key': '••••••'
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)
Reference

Endpoints

MethodRouteDescription
POST /v1/api/documents Sends a document (image or PDF) for processing. Returns the id and the initial status.
GET /v1/api/documents/{id} Returns the information extracted from an already processed document.

The full reference, with headers, parameters and up-to-date examples, lives in the technical documentation: doc.dynadok.com. Workflows, rules and integrations specific to your project are defined in the implementation scope.

The type parameter

Examples of document types

Each type has its own description and return interface in the documentation. The catalog grew out of Brazilian projects and keeps evolving: document types for your country and your process — national IDs, driver’s licenses, passports, proof of address, payslips, tax filings, transcripts, corporate registrations — are configured within the implementation scope.

National ID cardRG
Driver’s licenseCNH
Individual taxpayer IDCPF
Proof of addressCOMPROVANTE_RESIDENCIA
Employment recordCARTEIRA_DE_TRABALHO
Marriage certificateCERTIDAO_DE_CASAMENTO
Birth certificateCERTIDAO_DE_NASCIMENTO
High school diplomaCERTIFICADO_CONCLUSAO_ENSINO_MEDIO
Corporate registration statusCOMPROVANTE_DE_INSCRICAO_E_DE_SITUACAO_CADASTRAL
Articles of incorporationCONTRATO_SOCIAL
Personal income tax returnDECLARACAO_IMPOSTO_RENDA_PESSOA_FISICA_IRPF
Academic transcriptHISTORICO_ESCOLAR
PayslipHOLERITE
Financial-aid application formPROUNI_FICHA_INSCRICAO
Withholding tax receiptRECIBO_IRRF
Taxpayer registration statusSITUACAO_CADASTRAL_CPF
Beyond extraction

Validation rules

The documentation describes the rules that apply to document acceptance. Each rule has properties that define how the document must be validated and accepted — that is what lets the analysis adapt to each operation’s process.

  • Driver’s license category CNH_CATEGORY
  • Company registration status CNPJ_REGISTRATION_STATUS
  • Company size COMPANY_SIZE
  • Reference period COMPETENCY
  • Taxpayer ID status CPF_STATUS
  • Issue date EMISSION_DATE
  • Expiration date EXPIRATION_DATE
  • Location LOCATION
  • Opening date OPENING_DATE
  • Ownership OWNERSHIP
  • Start of activities START_OF_ACTIVITIES
  • Transcript level and status STATUS_DEGREE_HISTORICO_ESCOLAR
  • Substitute documents SUBSTITUTE_DOCUMENTS

Rules such as expiration date, ownership and substitute documents are what turn data extraction into real validation: reading the field is not enough, you have to decide whether that document is acceptable for that process, at that moment and for that person.

Three ways to use it

Platform, API, or both

01

Platform only

Teams work in the Dynadok interface, with configured checklists and workflows. Third parties and applicants upload documents straight to the platform and get a non-compliance notification within seconds.

02

API only

Validation happens inside your own systems: you send documents via HTTP request and receive the extracted data and the rule results, without the end user ever leaving your environment.

03

Platform + API

Submission and analysis run through the API, while the operations team uses the platform to handle exceptions, monitor queues and audit what was decided.

No need to replace your ERP or core systems. Dynadok adapts to your current environment and integrates with existing systems, keeping your workflow intact. Platform and API access is included in the contract, within the project scope, with no per-user or per-license charge.

Response handling

Most common error codes

CodeCommon causeWhat to do
400 Bad RequestMalformed data or missing required parametersCheck the request structure and parameters against the documentation
401 UnauthorizedAPI key missing, invalid or expiredMake sure the key is correct and included in the header
403 ForbiddenAPI key lacks the required permissionsCheck that the key is allowed to access the requested resource
404 Not FoundWrong endpoint URL or non-existent resourceConfirm the route and that the resource exists
405 Method Not AllowedWrong HTTP method for the resourceUse the method specified in the documentation
429 Too Many RequestsToo many requests in a short periodImplement retries with exponential backoff
500 / 502 / 503 / 504Internal error, bad gateway, temporary unavailability or timeoutRetry the request later and, if it persists, contact support
What your team needs

Integration requirements

Nothing beyond what already exists in any stack that consumes a REST API.

  • API key provided by Dynadok, sent in the x-api-key header
  • HTTP client: cURL, Postman or your language’s library
  • Python: requests
  • JavaScript: axios or fetch
  • Java and C#: HttpClient
  • Format: multipart file upload and JSON response

Security in the integration

All traffic between customer systems, browsers and the Dynadok platform is protected with TLS 1.2 or higher. Documents and extracted data are stored encrypted with AES-256, with logical segregation between customers and audit trails for access, download and export.

Treat the API key as a credential: keep it out of your repository and front end, and prefer environment variables or a secrets vault.

Frequently asked questions

Questions from the people who will integrate

Request your demo

Google reCaptcha: Invalid site key.

Your message has been sent successfully.

Close