Como funciona
Após o upload, o arquivo passa por três etapas:
- Leitura do conteúdo do documento
- Classificação do tipo (balanço, DRE, nota fiscal, etc.)
- Extração dos dados em formato JSON
Consultar status
Resposta
{
"object": "file_upload",
"id": "fu_abc123",
"status": "uploaded",
"parsing": {
"status": "completed",
"template": "balance_sheet",
"confidence": 0.95,
"started_time": "2024-12-07T11:01:00.000Z",
"completed_time": "2024-12-07T11:02:30.000Z"
},
"parsed_data": {}
}
Campos retornados
| Campo | Tipo | Descrição |
|---|
parsing.status | string | Status atual do processamento |
parsing.template | string | Template identificado (ex: balance_sheet) |
parsing.confidence | number | Confiança da Classificação (0 a 1) |
parsing.started_time | string | Início do processamento |
parsing.completed_time | string | Fim do processamento |
parsing.error | string | Mensagem de erro, se houver |
Templates disponíveis
| Template | Tipo de documento | Disponibilidade |
|---|
balance_sheet | Balanço patrimonial | Disponível |
income_statement | DRE | Em breve |
invoice | Notas fiscais | Em breve |
no_template | Outros documentos | Disponível |
Aguardar processamento
O tempo varia de 30 segundos a 15 minutos, dependendo do tamanho do
documento.
Exemplo de polling até a conclusão:
async function waitForProcessing(fileId, token, maxAttempts = 30) {
for (let i = 0; i < maxAttempts; i++) {
const response = await fetch(
`https://api.base39.com.br/v2/file_uploads/${fileId}`,
{
headers: { Authorization: `Bearer ${token}` },
}
);
const data = await response.json();
if (data.parsing.status === "completed") {
return data;
}
if (data.parsing.status === "failed") {
throw new Error(data.parsing.error);
}
await new Promise((r) => setTimeout(r, 2000));
}
throw new Error("Timeout");
}
Após o processamento, o JSON estruturado pode ser baixado:
const fileUpload = await waitForProcessing(fileId, token);
if (fileUpload.parsed_data) {
const response = await fetch(fileUpload.parsed_data);
const data = await response.json();
// Acessar primeira empresa e período
const company = data.companies[0];
const period = company.periods[0];
console.log("Empresa:", company.company_name);
console.log("Ativo total:", period.assets.value);
console.log("Passivo total:", period.liabilities.value);
console.log("Patrimônio Líquido:", period.equity.value);
}