Skip to main content
O upload direto manda o PDF do seu sistema para o armazenamento da GYRA+ sem passar pela API. Pela API trafega só JSON pequeno: um pedido de URL antes e uma confirmação depois.
Exige a permissão can-generate-report. O resultado é o mesmo de Enviar Balanço e DRE: mesmas seções, mesmo e-mail, mesma forma de acompanhar.

Quando usar

Use o upload direto para arquivos grandes, como balancetes assinados perto do limite de 50 MB: o arquivo vai do seu sistema direto ao armazenamento, sem passar pela API. Para arquivos pequenos, o envio em uma chamada só, em POST /report/{id}/financial-tab, continua valendo.

Limites

1

Peça as URLs de upload

Informe nome e tamanho de cada arquivo. Você recebe uma URL de upload e uma key por arquivo.
2

Envie cada PDF com PUT

Um PUT por arquivo, na uploadUrl recebida, com os headers exatos descritos abaixo.
3

Confirme o lote

Envie as key do lote. A GYRA+ valida cada arquivo e dispara a extração.

Passo 1: pedir as URLs

POST /report/{id}/financial-tab/presign
A resposta vem na mesma ordem de files. Guarde cada key: é ela, e nunca a URL, que vai na confirmação.

Passo 2: enviar o arquivo

Faça um PUT com o conteúdo do PDF na uploadUrl, sem o header Authorization. A assinatura da URL amarra dois headers, e o armazenamento recusa o envio se eles não baterem:
O curl --upload-file envia o Content-Length com o tamanho real do arquivo. Se você declarou outro valor em size, ou mandou outro Content-Type, o armazenamento responde com erro e o arquivo não é gravado: peça uma URL nova no passo 1. Uma URL vencida (mais de 15 minutos) também exige pedir outra.

Passo 3: confirmar o lote

POST /report/{id}/financial-tab/complete A confirmação confere cada arquivo no armazenamento: se existe, se tem até 50 MB e se começa com %PDF-. Só depois que todas passam a extração é disparada, com os arquivos do lote consolidados na mesma análise.
O lote é tudo ou nada. Se uma key falha, as que já tinham sido confirmadas nesta chamada são desfeitas e nada é processado. Um arquivo reprovado na validação é apagado do armazenamento: refaça os passos 1 e 2 para ele antes de confirmar de novo.
A resposta é o relatório, igual à do envio multipart. A chamada é assíncrona: o 200 quer dizer “arquivos aceitos e enfileirados”. Para saber quando os dados ficam prontos e onde lê-los, veja O que acontece depois e Como saber que terminou.

Exemplo ponta a ponta

Erros

Todas as respostas de erro da API seguem o formato { "code": 400, "message": "..." }. Nos dois passos da API Passo 1 (presign) Passo 3 (complete)