VerbaClara
API REST v1

Documentação para integrar sem adivinhação

Autenticação, exemplos reais de entrada e resultado, custos, erros e um testador conectado aos quatro endpoints.

Início rápido

Faça a primeira chamada

1. Autentique

Crie uma chave na sua conta e envie o valor completo no cabeçalho. A chave aparece somente uma vez.

Authorization: Bearer SUA_CHAVE

2. Envie JSON

Use Content-Type: application/json. Valores monetários aceitam número decimal ou texto no formato brasileiro.

Content-Type: application/json
Idempotency-Key: operacao-unica-001
Formatos e precisão: datas usam AAAA-MM-DD, competências usam AAAA-MM, campos integer não aceitam casas decimais e valores monetários são normalizados e arredondados em centavos. A resposta informa créditos consumidos e saldo restante.
Chamada real

Testar com sua chave

A chave fica somente neste campo e não é salva no navegador nem enviada para outro serviço. Uma resposta HTTP 200 consome o custo indicado no botão.

Referência

Parâmetros, regras, entrada e resposta

Valores monetários aceitam número JSON, como 3500.25, ou texto brasileiro, como "3.500,25". O motor normaliza e arredonda em centavos. Somente os campos listados abaixo são processados.

Rescisão CLT

POST /api/v1/rescisao-clt
1 crédito(s)

Parâmetros aceitos

CampoTipoObrigatórioValores e regras
tipo_rescisaostringSimsem_justa_causa, justa_causa, pedido_demissao ou acordo_mutuo.
data_admissaostring/dataSimFormato AAAA-MM-DD; deve ser uma data real.
data_desligamentostring/dataSimFormato AAAA-MM-DD; não pode ser anterior à admissão.
salario_mensalnumber|stringSimMaior que 0 e até 10.000.000; valor em reais.
media_variaveisnumber|stringNãoDe 0 a 10.000.000. Padrão: 0.
dias_saldo_salariointegerSimInteiro de 0 a 30.
aviso_previostringSimDepende de tipo_rescisao; veja as combinações logo abaixo.
ferias_pendentes_simplesintegerNãoPeríodos completos de 0 a 10. Padrão: 0.
ferias_pendentes_dobrointegerNãoPeríodos fora do prazo concessivo de 0 a 10. Padrão: 0.
saldo_fgts_rescisorionumber|stringNãoBase do FGTS de 0 a 100.000.000. Padrão: 0.
adiantamento_decimo_terceironumber|stringNãoDe 0 a 10.000.000. Padrão: 0.
outros_descontosnumber|stringNãoDe 0 a 10.000.000. Padrão: 0.
quantidade_dependentesintegerNãoInteiro de 0 a 99 para o IRRF. Padrão: 0.
pensao_alimenticianumber|stringNãoDedução legal de 0 a 10.000.000. Padrão: 0.
outras_deducoes_legaisnumber|stringNãoDeduções legais de 0 a 10.000.000. Padrão: 0.
Regras condicionais:
  • sem_justa_causa: aviso indenizado ou trabalhado.
  • justa_causa: aviso obrigatoriamente nao_se_aplica.
  • pedido_demissao: aviso trabalhado, nao_cumprido ou dispensado.
  • acordo_mutuo: aviso indenizado ou trabalhado.

Entrada JSON

{
    "tipo_rescisao": "sem_justa_causa",
    "data_admissao": "2020-01-01",
    "data_desligamento": "2026-08-01",
    "salario_mensal": 3000,
    "media_variaveis": 0,
    "dias_saldo_salario": 1,
    "aviso_previo": "indenizado",
    "ferias_pendentes_simples": 0,
    "ferias_pendentes_dobro": 0,
    "saldo_fgts_rescisorio": 20000,
    "adiantamento_decimo_terceiro": 0,
    "outros_descontos": 0
}

Resposta resumida HTTP 200

{
    "sucesso": true,
    "resultado": {
        "totais": {
            "proventos_brutos": 10150,
            "descontos_informados": 0,
            "liquido_antes_inss_irrf": 10150,
            "multa_fgts": 8000,
            "percentual_multa_fgts": 40,
            "inss": 140.68000000000000682121026329696178436279296875,
            "irrf": 0,
            "liquido_apos_inss_irrf": 10009.3199999999997089616954326629638671875
        }
    },
    "meta": {
        "creditos_consumidos": 1,
        "idempotente": false
    }
}

Férias

POST /api/v1/calculo-ferias
1 crédito(s)

Parâmetros aceitos

CampoTipoObrigatórioValores e regras
situacao_feriasstringSimintegrais, proporcionais ou fora_prazo.
salario_mensalnumber|stringSimMaior que 0 e até 10.000.000; valor em reais.
media_variaveisnumber|stringNãoDe 0 a 10.000.000. Padrão: 0.
faltas_injustificadasintegerSimInteiro de 0 a 365 no período aquisitivo.
avos_proporcionaisintegerCondicionalObrigatório de 1 a 11 quando situacao_ferias=proporcionais.
vender_abonobooleanNãotrue ou false; true somente em férias integrais.
adiantar_decimo_terceirobooleanNãotrue ou false; não se aplica a proporcionais.
data_inicio_feriasstring/dataNãoAAAA-MM-DD; não enviar em férias proporcionais.
quantidade_dependentesintegerNãoInteiro de 0 a 99 para o IRRF. Padrão: 0.
pensao_alimenticianumber|stringNãoDedução legal de 0 a 10.000.000. Padrão: 0.
outras_deducoes_legaisnumber|stringNãoDeduções legais de 0 a 10.000.000. Padrão: 0.
Regras condicionais:
  • Férias fora_prazo aplicam a dobra pela concessão após o período concessivo.
  • Faltas injustificadas reduzem os dias de direito conforme as faixas legais usadas pelo motor.

Entrada JSON

{
    "situacao_ferias": "integrais",
    "salario_mensal": 3000,
    "media_variaveis": 0,
    "faltas_injustificadas": 0,
    "vender_abono": false,
    "adiantar_decimo_terceiro": false,
    "data_inicio_ferias": "2026-08-10"
}

Resposta resumida HTTP 200

{
    "sucesso": true,
    "resultado": {
        "totais": {
            "ferias_brutas_antes_tributos": 4000,
            "adiantamento_decimo_terceiro": 0,
            "total_receber_antes_tributos": 4000,
            "inss": 368.57999999999998408384271897375583648681640625,
            "irrf": 0,
            "total_receber_apos_inss_irrf": 3631.420000000000072759576141834259033203125
        }
    },
    "meta": {
        "creditos_consumidos": 1,
        "idempotente": false
    }
}

13º salário

POST /api/v1/decimo-terceiro
1 crédito(s)

Parâmetros aceitos

CampoTipoObrigatórioValores e regras
tipo_calculostringSimintegral ou proporcional.
salario_mensalnumber|stringSimMaior que 0 e até 10.000.000; valor em reais.
media_horas_extrasnumber|stringNãoDe 0 a 10.000.000. Padrão: 0.
media_adicionaisnumber|stringNãoDe 0 a 10.000.000. Padrão: 0.
avosintegerCondicionalObrigatório de 1 a 11 quando tipo_calculo=proporcional; integral usa 12.
primeira_parcela_paganumber|stringNãoDe 0 a 10.000.000. Se omitido, o motor estima metade do bruto.
competenciastringNãoFormato AAAA-MM; se omitida, usa a competência UTC atual.
quantidade_dependentesintegerNãoInteiro de 0 a 99 para o IRRF. Padrão: 0.
pensao_alimenticianumber|stringNãoDedução legal de 0 a 10.000.000. Padrão: 0.
outras_deducoes_legaisnumber|stringNãoDeduções legais de 0 a 10.000.000. Padrão: 0.
inss_informadonumber|stringNãoSubstitui o INSS calculado na base do IRRF; de 0 a 10.000.000.
Regras condicionais:
  • A competência precisa possuir tabelas INSS/IRRF publicadas no sistema.
  • INSS e IRRF são descontados da segunda parcela estimada.

Entrada JSON

{
    "tipo_calculo": "integral",
    "salario_mensal": 3000,
    "media_horas_extras": 0,
    "media_adicionais": 0,
    "competencia": "2026-08"
}

Resposta resumida HTTP 200

{
    "sucesso": true,
    "resultado": {
        "totais": {
            "decimo_terceiro_bruto": 3000,
            "primeira_parcela_estimada": 1500,
            "adiantamento_usado_no_saldo": 1500,
            "segunda_parcela_antes_inss_irrf": 1500,
            "inss": 248.580000000000012505552149377763271331787109375,
            "irrf": 0,
            "segunda_parcela_liquida_estimada": 1251.420000000000072759576141834259033203125
        }
    },
    "meta": {
        "creditos_consumidos": 1,
        "idempotente": false
    }
}

INSS e IRRF

POST /api/v1/inss-irrf
1 crédito(s)

Parâmetros aceitos

CampoTipoObrigatórioValores e regras
competenciastringSimFormato AAAA-MM e com tabelas publicadas para a vigência.
tipo_rendimentostringNãomensal ou decimo_terceiro. Padrão: mensal.
rendimento_brutonumber|stringSimMaior que 0 e até 10.000.000; valor em reais.
quantidade_dependentesintegerNãoInteiro de 0 a 99. Padrão: 0.
pensao_alimenticianumber|stringNãoDedução legal de 0 a 10.000.000. Padrão: 0.
outras_deducoes_legaisnumber|stringNãoDeduções legais de 0 a 10.000.000. Padrão: 0.
inss_informadonumber|stringNãoSe enviado, substitui o INSS calculado na base do IRRF; de 0 a 10.000.000.
Regras condicionais:
  • O motor compara deduções legais e desconto simplificado e aplica a alternativa mais favorável.
  • decimo_terceiro usa tributação exclusiva, separada do rendimento mensal.

Entrada JSON

{
    "competencia": "2026-08",
    "tipo_rendimento": "mensal",
    "rendimento_bruto": 5000,
    "quantidade_dependentes": 1,
    "pensao_alimenticia": 0,
    "outras_deducoes_legais": 0
}

Resposta resumida HTTP 200

{
    "sucesso": true,
    "resultado": {
        "totais": {
            "inss": 501.5,
            "irrf": 0,
            "descontos_tributarios": 501.5,
            "liquido_apos_inss_irrf": 4498.5
        }
    },
    "meta": {
        "creditos_consumidos": 1,
        "idempotente": false
    }
}

Idempotência e cobrança segura

Use uma Idempotency-Key exclusiva para cada operação. Se a conexão cair, repita a mesma chave e o mesmo JSON. Dentro de 24 horas, a API responde com Idempotency-Replayed: true e zero novo crédito. A mesma chave com conteúdo diferente retorna HTTP 409.

Códigos de resposta

HTTPCódigoO que fazer
400/415json_invalidoCorrija o JSON, Content-Type ou Idempotency-Key.
401/403chave_invalidaConfira a chave e o estado da conta.
402saldo_insuficienteAdquira créditos e repita a operação.
409idempotencia_conflitanteUse uma nova chave para uma nova entrada.
422validacaoRevise os campos indicados em detalhes.campos.
429limite_excedidoAguarde o tempo de Retry-After.
500erro_internoRepita com idempotência; não há débito no erro.
FAQ da API

Perguntas frequentes

Quando um crédito é descontado?

Somente quando um endpoint de cálculo termina com HTTP 200. Erros de autenticação, JSON, validação, saldo, limite ou servidor não consomem créditos.

Posso repetir uma chamada sem pagar duas vezes?

Sim. Envie uma Idempotency-Key única. Durante a validade configurada, a repetição com a mesma entrada retorna o cálculo sem novo débito.

A VerbaClara armazena salários e datas contratuais?

Não. O JSON do cálculo não é persistido. O histórico guarda somente metadados técnicos e um hash da entrada para diagnóstico.

Como acompanho saldo e consumo?

Use GET /api/v1/saldo sem custo e consulte o histórico de chamadas e movimentos de créditos na área da conta.

Posso criar mais de uma chave?

Sim. Crie uma chave para cada integração, desative ou exclua individualmente e evite compartilhar a mesma credencial entre sistemas.

O testador desta página consome créditos?

Sim, quando o cálculo retorna HTTP 200. Ele chama a API real com a chave colada pelo usuário e mostra o custo antes da execução.