LogoConverte Extrato

Jobs

Um Job é um envio de um ou mais arquivos. A API extrai cada arquivo em segundo plano.

MétodoEndpointDescriçãoPermissão
POST/v1/jobsCria um Jobjobs:write
GET/v1/jobs/{id}Obtém um Job com seus resultadosjobs:read
GET/v1/jobs/{id}/statement-files/{fileId}Obtém um arquivo de extrato com seus resultadosjobs:read
GET/v1/jobsLista os Jobsjobs:read
DELETE/v1/jobs/{id}Exclui um Job e seus dadosjobs:write

O objeto Job

CampoTipoDescrição
idstringId do Job.
statusstringpending, processing, processed ou failed.
createdAtstringData e hora em ISO 8601.
filesarrayUma entrada por arquivo enviado.

Cada arquivo:

CampoTipoDescrição
idstringId do arquivo.
namestringNome do arquivo enviado.
statusstringpending, processing, extracted ou failed.
pageCountnumberPáginas descontadas do plano.
modestringsmart ou simple.
errorstring ou nullMotivo da falha na extração, quando status é failed.
statementobjectCabeçalho do extrato. Só quando status é extracted.
transactionsarraySó no modo smart, quando status é extracted.
rowsarraySó no modo simple, quando status é extracted.

Statement

Todo campo é null quando o extrato não o mostra.

CampoTipoDescrição
bankNamestringNome do banco.
bankBranchstringAgência, parcialmente mascarada.
accountNumberstringNúmero da conta, parcialmente mascarado.
accountTypestringPor exemplo Checking.
customerNamestringTitular da conta, parcialmente mascarado.
customerDocumentstringCPF ou CNPJ do titular, parcialmente mascarado.
customerTypestringperson ou company.
startDatestringPrimeiro dia do período, em ISO 8601.
endDatestringÚltimo dia do período, em ISO 8601.
invoiceDatestringData do extrato, em ISO 8601.
openingBalancenumberSaldo no início do período.
closingBalancenumberSaldo no fim do período.
currencystringCódigo ISO 4217, por exemplo BRL.

Transaction (modo smart)

Todo campo é null quando o extrato não o mostra.

CampoTipoDescrição
datestringData em ISO 8601.
descriptionstringDescrição como impressa.
amountnumberNegativo para débitos, positivo para créditos.
balancenumberSaldo após a transação.
typestringPor exemplo Deposit ou Withdrawal.
categorystringCategoria inferida, por exemplo Salary.
referencestringNúmero do documento ou de referência.

Rows (modo simple)

rows é a tabela do extrato como impressa: um array de linhas, cada uma um array de células em texto. O modo simple não interpreta valores nem datas.

Criar um Job

http
POST /v1/jobs

Envia arquivos e inicia a extração. O corpo é multipart/form-data.

CampoObrigatórioDescrição
filesSimUm ou mais arquivos. Repita o campo para cada arquivo. PDF, JPEG, PNG ou WebP, até 10 MB cada.
modeNãosmart (padrão) retorna transações tipadas. simple retorna as linhas da tabela como impressas.

Mantenha a requisição inteira abaixo de 20 MB. A plataforma rejeita requisições maiores antes de chegarem à API, então a resposta não tem corpo de erro em JSON.

bash
curl https://energized-butterfly-12.convex.site/v1/jobs \
  -H "Authorization: Bearer $CONVERT_API_KEY" \
  -F "files=@janeiro.pdf" \
  -F "files=@fevereiro.pdf" \
  -F "mode=smart"
js
const body = new FormData();
body.append(
  "files",
  new Blob([pdfBytes], { type: "application/pdf" }),
  "janeiro.pdf",
);
body.append("mode", "smart");

const res = await fetch("https://energized-butterfly-12.convex.site/v1/jobs", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.CONVERT_API_KEY}` },
  body,
});
const job = await res.json();

Retorna 202 Accepted com o Job no status pending.

A API verifica todos os arquivos antes de aceitar o Job. Se algum arquivo falhar em uma verificação, nada é armazenado e nenhuma página é gasta:

  • 400 para tipo, tamanho ou número de páginas inválido.
  • 409 DUPLICATE_FILE quando um arquivo já foi convertido nesta conta. Liste os Jobs para encontrá-lo em vez de enviar de novo.
  • 402 QUOTA_EXCEEDED quando as páginas do Job passam das páginas restantes no mês.

Obter um Job

http
GET /v1/jobs/{id}

Retorna o Job com seus resultados. Consulte este endpoint a cada 5 segundos até status ser processed ou failed.

bash
curl https://energized-butterfly-12.convex.site/v1/jobs/jn7craq7xc3qjq1knfzy5612f98gqnmh \
  -H "Authorization: Bearer $CONVERT_API_KEY"
js
async function waitForJob(id) {
  for (;;) {
    const res = await fetch(`https://energized-butterfly-12.convex.site/v1/jobs/${id}`, {
      headers: { Authorization: `Bearer ${process.env.CONVERT_API_KEY}` },
    });
    const job = await res.json();
    if (job.status === "processed" || job.status === "failed") return job;
    await new Promise((r) => setTimeout(r, 5000));
  }
}

Um Job processed ainda pode conter arquivos failed. Verifique o status de cada arquivo.

Retorna 404 JOB_NOT_FOUND para um id desconhecido ou um Job de outra conta.

Obter um arquivo de extrato

http
GET /v1/jobs/{id}/statement-files/{fileId}

Retorna uma entrada de files do Job, no mesmo formato. Use quando você guarda os ids dos arquivos ou para consultar um arquivo de um Job grande. Um arquivo ainda não extracted não tem statement, transactions nem rows.

bash
curl https://energized-butterfly-12.convex.site/v1/jobs/jn7craq7xc3qjq1knfzy5612f98gqnmh/statement-files/jd718c20qj99x07hqmb6q48kn98gqamb \
  -H "Authorization: Bearer $CONVERT_API_KEY"

Retorna 404 JOB_NOT_FOUND quando o Job não existe na sua conta, e 404 STATEMENT_FILE_NOT_FOUND quando o arquivo não está nesse Job.

Listar Jobs

http
GET /v1/jobs

Lista seus Jobs, do mais recente ao mais antigo, sem os resultados.

Parâmetro de consultaPadrãoDescrição
limit20Jobs por página, de 1 a 100.
cursornextCursor da página anterior.
bash
curl "https://energized-butterfly-12.convex.site/v1/jobs?limit=10" \
  -H "Authorization: Bearer $CONVERT_API_KEY"
json
{
  "jobs": [
    {
      "id": "jn7craq7xc3qjq1knfzy5612f98gqnmh",
      "status": "processed",
      "createdAt": "2026-10-21T12:51:02.816Z",
      "fileCount": 1
    }
  ],
  "nextCursor": "eyJ..."
}

nextCursor é null na última página.

Excluir um Job

http
DELETE /v1/jobs/{id}

Exclui os arquivos enviados e os dados extraídos. Não dá para desfazer. As páginas do Job continuam contando no plano deste mês.

bash
curl -X DELETE https://energized-butterfly-12.convex.site/v1/jobs/jn7craq7xc3qjq1knfzy5612f98gqnmh \
  -H "Authorization: Bearer $CONVERT_API_KEY"

Retorna 204 No Content. Um Job ainda pending ou processing retorna 409 JOB_IN_PROGRESS; espere ele terminar antes.