curl --request POST 'https://gyra-core.gyramais.com.br/v1/registry/validate-document' \
--header 'Authorization: Bearer <token>' \
--form 'file=@"/caminho/contrato-social.pdf"' \
--form 'expectedDocument="11444777000161"'import fs from "node:fs";
const form = new FormData();
form.append("file", new Blob([fs.readFileSync("/caminho/contrato-social.pdf")]), "contrato-social.pdf");
form.append("expectedDocument", "11444777000161");
const resposta = await fetch("https://gyra-core.gyramais.com.br/v1/registry/validate-document", {
method: "POST",
headers: { Authorization: `Bearer ${token}` },
body: form,
});
const dados = await resposta.json();
import requests
with open("/caminho/contrato-social.pdf", "rb") as arquivo:
resposta = requests.post(
"https://gyra-core.gyramais.com.br/v1/registry/validate-document",
headers={"Authorization": f"Bearer {token}"},
files={"file": arquivo},
data={"expectedDocument": "11444777000161"},
)
dados = resposta.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gyra-core.gyramais.com.br/v1/registry/validate-document",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedDocument\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedName\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"waitSeconds\"\r\n\r\n30\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data; boundary=---011000010111000001101001"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://gyra-core.gyramais.com.br/v1/registry/validate-document"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedDocument\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedName\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"waitSeconds\"\r\n\r\n30\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://gyra-core.gyramais.com.br/v1/registry/validate-document")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedDocument\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedName\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"waitSeconds\"\r\n\r\n30\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://gyra-core.gyramais.com.br/v1/registry/validate-document")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'multipart/form-data; boundary=---011000010111000001101001'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedDocument\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedName\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"waitSeconds\"\r\n\r\n30\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"documentId": "6612a7f30000000000000031",
"registryId": "6612a7f30000000000000001",
"type": "CONTRATO_SOCIAL",
"expectedType": "CONTRATO_SOCIAL",
"expectedTypes": [],
"status": "VALIDATED",
"version": 2,
"isCurrent": true,
"classification": {
"type": "CONTRATO_SOCIAL",
"confidence": 0.94,
"alternatives": [
{
"type": "ALTERACAO_CONTRATUAL",
"confidence": 0.21
}
]
},
"ambiguous": false,
"statusReason": null,
"stages": {
"executed": [
"CLASSIFY",
"EXTRACT",
"VALIDATE"
],
"reused": []
},
"extraction": {
"cnpj": {
"value": "11444777000161",
"confidence": 0.97,
"page": 1
},
"companyName": {
"value": "AURORA COMPONENTES INDUSTRIAIS LTDA",
"confidence": 0.96,
"page": 1
},
"signatureDate": {
"value": "2021-04-30T00:00:00.000Z",
"confidence": 0.93,
"page": 8
},
"capitalAmount": {
"value": 1200000,
"confidence": 0.95,
"page": 3
},
"capitalCurrency": {
"value": "BRL",
"confidence": 0.99,
"page": 3
},
"quotaUnitValue": {
"value": null,
"confidence": 0,
"page": null
},
"partners": [
{
"name": {
"value": "CARLOS EDUARDO SILVA",
"confidence": 0.96,
"page": 1
},
"document": {
"value": "52998224725",
"confidence": 0.95,
"page": 1
},
"documentType": {
"value": "CPF",
"confidence": 0.99,
"page": 1
},
"sharePercent": {
"value": 60,
"confidence": 0.95,
"page": 3
},
"isAdministrator": {
"value": true,
"confidence": 0.92,
"page": 4
}
}
],
"representation": {
"regime": {
"value": "ISOLADA",
"confidence": 0.95,
"page": 4
},
"signersRequired": {
"value": 1,
"confidence": 0.95,
"page": 4
},
"clauseNumber": {
"value": "CLÁUSULA 8ª",
"confidence": 0.94,
"page": 4
},
"clauseExcerpt": {
"value": "A administração da sociedade caberá isoladamente ao sócio CARLOS EDUARDO SILVA...",
"confidence": 0.94,
"page": 4
}
},
"certification": {
"certificationKind": {
"value": "ORGAO_EMISSOR",
"confidence": 0.97,
"page": 1
},
"certificationDetail": {
"value": "Chancela digital da Junta Comercial",
"confidence": 0.96,
"page": 1
},
"verificationCode": {
"value": "A1B2C3D4E5",
"confidence": 0.98,
"page": 1
}
}
},
"fieldConfidences": {
"cnpj": 0.97,
"companyName": 0.96,
"capitalAmount": 0.95
},
"validation": {
"checks": [
{
"code": "EXPECTED_DOCUMENT_MATCH",
"result": "PASS",
"message": "O CNPJ do documento é o mesmo da análise.",
"evidence": {
"page": 1,
"excerpt": "CNPJ 11.444.777/0001-61"
},
"source": "DETERMINISTIC"
},
{
"code": "QSA_SHARE_SUM",
"result": "WARN",
"message": "A soma das participações fecha 98%, fora da tolerância de 0,5 ponto.",
"evidence": {
"page": 3,
"excerpt": "CARLOS EDUARDO SILVA 60% ... MARIA HELENA SOUZA 38%"
},
"source": "DETERMINISTIC"
}
],
"reconciliation": {
"qsaMatched": true
}
},
"assessment": {
"verdict": "VALIDO",
"score": 0.91,
"justification": "Documento íntegro, titularidade confirmada e registro na Junta conferido. A soma das quotas ficou 2 pontos abaixo de 100%, o que é ressalva e não impedimento.",
"evidences": [],
"ruleSetVersion": "org-v7",
"contentHash": "9f2b7c1e4a...",
"feedbackVerdict": null,
"feedbackComment": null,
"feedbackAt": null,
"feedbackUserId": null,
"effectiveVerdict": "VALIDO",
"decidedByOperator": false
},
"processedAt": "2026-09-05T13:07:44.000Z",
"attempt": 1
}{
"documentId": "6612a7f30000000000000031",
"statusUrl": "/registry/documents/6612a7f30000000000000031/status"
}{
"code": 400,
"message": "O arquivo do documento é obrigatório (campo \"file\")."
}{
"code": 401,
"message": "Token de acesso inválido."
}{
"code": 403,
"message": "Você não tem permissão para acessar este recurso."
}{
"code": 404,
"message": "Recurso não encontrado."
}{
"code": 413,
"message": "File too large"
}{
"code": 500,
"message": "Internal server error"
}{
"code": 502,
"message": "Não foi possível iniciar a validação do documento."
}Validar Documento
Você tem um arquivo e quer o parecer agora.
curl --request POST 'https://gyra-core.gyramais.com.br/v1/registry/validate-document' \
--header 'Authorization: Bearer <token>' \
--form 'file=@"/caminho/contrato-social.pdf"' \
--form 'expectedDocument="11444777000161"'import fs from "node:fs";
const form = new FormData();
form.append("file", new Blob([fs.readFileSync("/caminho/contrato-social.pdf")]), "contrato-social.pdf");
form.append("expectedDocument", "11444777000161");
const resposta = await fetch("https://gyra-core.gyramais.com.br/v1/registry/validate-document", {
method: "POST",
headers: { Authorization: `Bearer ${token}` },
body: form,
});
const dados = await resposta.json();
import requests
with open("/caminho/contrato-social.pdf", "rb") as arquivo:
resposta = requests.post(
"https://gyra-core.gyramais.com.br/v1/registry/validate-document",
headers={"Authorization": f"Bearer {token}"},
files={"file": arquivo},
data={"expectedDocument": "11444777000161"},
)
dados = resposta.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gyra-core.gyramais.com.br/v1/registry/validate-document",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedDocument\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedName\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"waitSeconds\"\r\n\r\n30\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data; boundary=---011000010111000001101001"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://gyra-core.gyramais.com.br/v1/registry/validate-document"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedDocument\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedName\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"waitSeconds\"\r\n\r\n30\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://gyra-core.gyramais.com.br/v1/registry/validate-document")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedDocument\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedName\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"waitSeconds\"\r\n\r\n30\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://gyra-core.gyramais.com.br/v1/registry/validate-document")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'multipart/form-data; boundary=---011000010111000001101001'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedDocument\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"expectedName\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"waitSeconds\"\r\n\r\n30\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"documentId": "6612a7f30000000000000031",
"registryId": "6612a7f30000000000000001",
"type": "CONTRATO_SOCIAL",
"expectedType": "CONTRATO_SOCIAL",
"expectedTypes": [],
"status": "VALIDATED",
"version": 2,
"isCurrent": true,
"classification": {
"type": "CONTRATO_SOCIAL",
"confidence": 0.94,
"alternatives": [
{
"type": "ALTERACAO_CONTRATUAL",
"confidence": 0.21
}
]
},
"ambiguous": false,
"statusReason": null,
"stages": {
"executed": [
"CLASSIFY",
"EXTRACT",
"VALIDATE"
],
"reused": []
},
"extraction": {
"cnpj": {
"value": "11444777000161",
"confidence": 0.97,
"page": 1
},
"companyName": {
"value": "AURORA COMPONENTES INDUSTRIAIS LTDA",
"confidence": 0.96,
"page": 1
},
"signatureDate": {
"value": "2021-04-30T00:00:00.000Z",
"confidence": 0.93,
"page": 8
},
"capitalAmount": {
"value": 1200000,
"confidence": 0.95,
"page": 3
},
"capitalCurrency": {
"value": "BRL",
"confidence": 0.99,
"page": 3
},
"quotaUnitValue": {
"value": null,
"confidence": 0,
"page": null
},
"partners": [
{
"name": {
"value": "CARLOS EDUARDO SILVA",
"confidence": 0.96,
"page": 1
},
"document": {
"value": "52998224725",
"confidence": 0.95,
"page": 1
},
"documentType": {
"value": "CPF",
"confidence": 0.99,
"page": 1
},
"sharePercent": {
"value": 60,
"confidence": 0.95,
"page": 3
},
"isAdministrator": {
"value": true,
"confidence": 0.92,
"page": 4
}
}
],
"representation": {
"regime": {
"value": "ISOLADA",
"confidence": 0.95,
"page": 4
},
"signersRequired": {
"value": 1,
"confidence": 0.95,
"page": 4
},
"clauseNumber": {
"value": "CLÁUSULA 8ª",
"confidence": 0.94,
"page": 4
},
"clauseExcerpt": {
"value": "A administração da sociedade caberá isoladamente ao sócio CARLOS EDUARDO SILVA...",
"confidence": 0.94,
"page": 4
}
},
"certification": {
"certificationKind": {
"value": "ORGAO_EMISSOR",
"confidence": 0.97,
"page": 1
},
"certificationDetail": {
"value": "Chancela digital da Junta Comercial",
"confidence": 0.96,
"page": 1
},
"verificationCode": {
"value": "A1B2C3D4E5",
"confidence": 0.98,
"page": 1
}
}
},
"fieldConfidences": {
"cnpj": 0.97,
"companyName": 0.96,
"capitalAmount": 0.95
},
"validation": {
"checks": [
{
"code": "EXPECTED_DOCUMENT_MATCH",
"result": "PASS",
"message": "O CNPJ do documento é o mesmo da análise.",
"evidence": {
"page": 1,
"excerpt": "CNPJ 11.444.777/0001-61"
},
"source": "DETERMINISTIC"
},
{
"code": "QSA_SHARE_SUM",
"result": "WARN",
"message": "A soma das participações fecha 98%, fora da tolerância de 0,5 ponto.",
"evidence": {
"page": 3,
"excerpt": "CARLOS EDUARDO SILVA 60% ... MARIA HELENA SOUZA 38%"
},
"source": "DETERMINISTIC"
}
],
"reconciliation": {
"qsaMatched": true
}
},
"assessment": {
"verdict": "VALIDO",
"score": 0.91,
"justification": "Documento íntegro, titularidade confirmada e registro na Junta conferido. A soma das quotas ficou 2 pontos abaixo de 100%, o que é ressalva e não impedimento.",
"evidences": [],
"ruleSetVersion": "org-v7",
"contentHash": "9f2b7c1e4a...",
"feedbackVerdict": null,
"feedbackComment": null,
"feedbackAt": null,
"feedbackUserId": null,
"effectiveVerdict": "VALIDO",
"decidedByOperator": false
},
"processedAt": "2026-09-05T13:07:44.000Z",
"attempt": 1
}{
"documentId": "6612a7f30000000000000031",
"statusUrl": "/registry/documents/6612a7f30000000000000031/status"
}{
"code": 400,
"message": "O arquivo do documento é obrigatório (campo \"file\")."
}{
"code": 401,
"message": "Token de acesso inválido."
}{
"code": 403,
"message": "Você não tem permissão para acessar este recurso."
}{
"code": 404,
"message": "Recurso não encontrado."
}{
"code": 413,
"message": "File too large"
}{
"code": 500,
"message": "Internal server error"
}{
"code": 502,
"message": "Não foi possível iniciar a validação do documento."
}Quando usar
Você tem um arquivo e quer o parecer agora. Uma chamada, um arquivo, e o resultado volta na resposta.A entrada é única
Você não diz que documento está mandando. A plataforma identifica entre os 25 tipos e o objetoextraction da resposta traz os campos daquele tipo. O mapa completo está em Formatos de retorno.
expectedType não força nada: diz o que você pediu, e a plataforma confronta com o que leu. É o campo que pega o arquivo legítimo enviado no lugar errado. Já typeHint afirma o tipo e pula a classificação.
Trate o 202 como caminho normal
Documento longo ou digitalizado passa dos 55 segundos. Continue por Status do documento, ou assine o webhookregistry.document.assessed.
Leia effectiveVerdict
assessment.verdict é o parecer da IA, que nunca é reescrito. Quando um operador discorda, a decisão dele entra em feedbackVerdict e effectiveVerdict passa a ser ela.
Authorizations
Enter JWT token
Body
O arquivo, em multipart/form-data. PDF, JPG ou PNG, ate 15MB. Acima disso use presign_registry_document + confirm_registry_document.
CNPJ ou CPF da jornada, com ou sem mascara. Obrigatorio: e o dono do cadastro onde o documento sera arquivado.
Razao social ou nome da jornada. Alimenta a verificacao EXPECTED_NAME_MATCH.
Espera maxima pela resposta sincrona, de 5 a 55. Padrao 45.
5 <= x <= 55AFIRMA o tipo do arquivo: o pipeline adota e pula a classificacao. So use quando a origem ja garante o tipo.
CONTRATO_SOCIAL, ALTERACAO_CONTRATUAL, ESTATUTO_SOCIAL, REQUERIMENTO_EMPRESARIO, PROCURACAO_PJ, IRPJ_ECF, DECLARACAO_FATURAMENTO, CERTIDAO_JUNTA, ATA_ASSEMBLEIA, DOC_IDENTIDADE, COMPROVANTE_RESIDENCIA, DIRPF, COMPROVANTE_RENDA, CERTIDAO_PF, PROCURACAO_PF, FORA_DE_ESCOPO, NAO_IDENTIFICADO, CERTIDAO_PGFN_PJ, CERTIDAO_FGTS, CADIN_FEDERAL, CADIN_ESTADUAL, CERTIDAO_QSA, CERTIFICADO_SIMPLES_NACIONAL, ESOCIAL_PJ, COMPROVACAO_ESTADO_CIVIL, DEMONSTRACOES_FINANCEIRAS, EXTRATO_BANCARIO PEDE um tipo: a classificacao roda e o tipo lido e confrontado (verificacao EXPECTED_TYPE_MATCH). E o campo que pega documento trocado.
CONTRATO_SOCIAL, ALTERACAO_CONTRATUAL, ESTATUTO_SOCIAL, REQUERIMENTO_EMPRESARIO, PROCURACAO_PJ, IRPJ_ECF, DECLARACAO_FATURAMENTO, CERTIDAO_JUNTA, ATA_ASSEMBLEIA, DOC_IDENTIDADE, COMPROVANTE_RESIDENCIA, DIRPF, COMPROVANTE_RENDA, CERTIDAO_PF, PROCURACAO_PF, FORA_DE_ESCOPO, NAO_IDENTIFICADO, CERTIDAO_PGFN_PJ, CERTIDAO_FGTS, CADIN_FEDERAL, CADIN_ESTADUAL, CERTIDAO_QSA, CERTIFICADO_SIMPLES_NACIONAL, ESOCIAL_PJ, COMPROVACAO_ESTADO_CIVIL, DEMONSTRACOES_FINANCEIRAS, EXTRATO_BANCARIO Response
Resultado completo (200) com type, extraction, validation.checks[] e assessment; ou { documentId, statusUrl } (202) quando ainda processa.
Resultado completo de um documento, da classificacao ao parecer.
O tipo LIDO pela classificacao.
CONTRATO_SOCIAL, ALTERACAO_CONTRATUAL, ESTATUTO_SOCIAL, REQUERIMENTO_EMPRESARIO, ATA_ASSEMBLEIA, PROCURACAO_PJ, CERTIDAO_JUNTA, CERTIDAO_QSA, IRPJ_ECF, DECLARACAO_FATURAMENTO, CERTIFICADO_SIMPLES_NACIONAL, DEMONSTRACOES_FINANCEIRAS, EXTRATO_BANCARIO, CERTIDAO_PGFN_PJ, CERTIDAO_FGTS, CADIN_FEDERAL, CADIN_ESTADUAL, ESOCIAL_PJ, DOC_IDENTIDADE, COMPROVANTE_RESIDENCIA, DIRPF, COMPROVANTE_RENDA, CERTIDAO_PF, PROCURACAO_PF, COMPROVACAO_ESTADO_CIVIL, FORA_DE_ESCOPO, NAO_IDENTIFICADO O tipo PEDIDO no envio. Sustenta a verificacao EXPECTED_TYPE_MATCH.
CONTRATO_SOCIAL, ALTERACAO_CONTRATUAL, ESTATUTO_SOCIAL, REQUERIMENTO_EMPRESARIO, ATA_ASSEMBLEIA, PROCURACAO_PJ, CERTIDAO_JUNTA, CERTIDAO_QSA, IRPJ_ECF, DECLARACAO_FATURAMENTO, CERTIFICADO_SIMPLES_NACIONAL, DEMONSTRACOES_FINANCEIRAS, EXTRATO_BANCARIO, CERTIDAO_PGFN_PJ, CERTIDAO_FGTS, CADIN_FEDERAL, CADIN_ESTADUAL, ESOCIAL_PJ, DOC_IDENTIDADE, COMPROVANTE_RESIDENCIA, DIRPF, COMPROVANTE_RENDA, CERTIDAO_PF, PROCURACAO_PF, COMPROVACAO_ESTADO_CIVIL, FORA_DE_ESCOPO, NAO_IDENTIFICADO, null O CONJUNTO pedido, quando o item nasceu de um requisito societario.
CONTRATO_SOCIAL, ALTERACAO_CONTRATUAL, ESTATUTO_SOCIAL, REQUERIMENTO_EMPRESARIO, ATA_ASSEMBLEIA, PROCURACAO_PJ, CERTIDAO_JUNTA, CERTIDAO_QSA, IRPJ_ECF, DECLARACAO_FATURAMENTO, CERTIFICADO_SIMPLES_NACIONAL, DEMONSTRACOES_FINANCEIRAS, EXTRATO_BANCARIO, CERTIDAO_PGFN_PJ, CERTIDAO_FGTS, CADIN_FEDERAL, CADIN_ESTADUAL, ESOCIAL_PJ, DOC_IDENTIDADE, COMPROVANTE_RESIDENCIA, DIRPF, COMPROVANTE_RENDA, CERTIDAO_PF, PROCURACAO_PF, COMPROVACAO_ESTADO_CIVIL, FORA_DE_ESCOPO, NAO_IDENTIFICADO RECEIVED, CLASSIFYING, CLASSIFIED, EXTRACTING, EXTRACTED, VALIDATING, VALIDATED, FAILED, MANUAL_REVIEW, OUT_OF_SCOPE, REJECTED_QUALITY O que a classificacao concluiu, com as alternativas consideradas.
Hide child attributes
Hide child attributes
CONTRATO_SOCIAL, ALTERACAO_CONTRATUAL, ESTATUTO_SOCIAL, REQUERIMENTO_EMPRESARIO, ATA_ASSEMBLEIA, PROCURACAO_PJ, CERTIDAO_JUNTA, CERTIDAO_QSA, IRPJ_ECF, DECLARACAO_FATURAMENTO, CERTIFICADO_SIMPLES_NACIONAL, DEMONSTRACOES_FINANCEIRAS, EXTRATO_BANCARIO, CERTIDAO_PGFN_PJ, CERTIDAO_FGTS, CADIN_FEDERAL, CADIN_ESTADUAL, ESOCIAL_PJ, DOC_IDENTIDADE, COMPROVANTE_RESIDENCIA, DIRPF, COMPROVANTE_RENDA, CERTIDAO_PF, PROCURACAO_PF, COMPROVACAO_ESTADO_CIVIL, FORA_DE_ESCOPO, NAO_IDENTIFICADO 0 a 1.
Hide child attributes
Hide child attributes
CONTRATO_SOCIAL, ALTERACAO_CONTRATUAL, ESTATUTO_SOCIAL, REQUERIMENTO_EMPRESARIO, ATA_ASSEMBLEIA, PROCURACAO_PJ, CERTIDAO_JUNTA, CERTIDAO_QSA, IRPJ_ECF, DECLARACAO_FATURAMENTO, CERTIFICADO_SIMPLES_NACIONAL, DEMONSTRACOES_FINANCEIRAS, EXTRATO_BANCARIO, CERTIDAO_PGFN_PJ, CERTIDAO_FGTS, CADIN_FEDERAL, CADIN_ESTADUAL, ESOCIAL_PJ, DOC_IDENTIDADE, COMPROVANTE_RESIDENCIA, DIRPF, COMPROVANTE_RENDA, CERTIDAO_PF, PROCURACAO_PF, COMPROVACAO_ESTADO_CIVIL, FORA_DE_ESCOPO, NAO_IDENTIFICADO true quando outra alternativa passou de 0,35 de confianca.
Por que o documento parou num terminal que nao e falha tecnica.
O que rodou nesta tentativa e o que veio reaproveitado.
Os campos lidos. A FORMA DEPENDE DO TIPO identificado: cada um dos 25 tipos tem o seu conjunto, documentado campo a campo em https://developers.gyramais.com.br/api-reference/kyc/formatos-de-retorno. Todo campo folha vem como { value, confidence, page }; campo ausente vem com value null e confidence 0.
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Codigo da verificacao no catalogo (ex.: EXPECTED_DOCUMENT_MATCH).
WARN e ressalva: aparece no parecer e nao reprova sozinha.
PASS, WARN, FAIL, SKIP Frase em portugues explicando o resultado.
Indicios individuais, quando a verificacao produz varios.
Quem produziu o resultado.
DETERMINISTIC, RECONCILIATION, LLM Conferencia contra a fonte oficial.
Hide child attributes
Hide child attributes
O parecer da IA. NAO e o veredito que vale: use effectiveVerdict.
VALIDO, INVALIDO, INCONCLUSIVO, ANALISE_MANUAL 0 a 1.
Por que, em portugues.
Qual versao da regua julgou este documento.
Selo do parecer, conferivel na rota de integridade.
A decisao que um operador registrou, quando houve.
VALIDO, INVALIDO, INCONCLUSIVO, ANALISE_MANUAL, null O VEREDITO QUE VALE HOJE (feedbackVerdict ?? verdict). Leia este.
VALIDO, INVALIDO, INCONCLUSIVO, ANALISE_MANUAL, null true quando quem decidiu foi uma pessoa, e nao o pipeline.

