01Visão geral
Na API Mensal o parceiro precisa conhecer duas ações: incluir e inativar uma vida. Não existe período trabalhado: a vida entra, fica coberta todos os dias e é cobrada em cada fechamento mensal até ser inativada.
Ciclo de vida
POST /insureds ──► active ──POST /insureds/{id}/inactivate──► inactivation_scheduled ──(fim do mês)──► inactive
▲ │ │
└───────────── POST /insureds ──────────────────┴────────── POST /insureds ───────────┘
(inactivation_cancelled) (reactivated)
A inclusão é a única porta de entrada. O parceiro não precisa saber em que estado a vida está: manda o CPF e a API decide se cria, se devolve a vida já ativa, se cancela uma inativação agendada ou se reativa. Não existe rota de reativar nem de cancelar inativação.
02Ambientes e URLs base
Todas as rotas da API Mensal ficam sob o prefixo /api/integrations/monthly. A URL base de cada ambiente é o host somado a esse prefixo:
Montando um endpoint completo: /insureds em homologação fica
https://intermittent-web-api.hml.iza.com.vc/api/integrations/monthly/insureds
As credenciais são por ambiente: a credencial de homologação não funciona em produção e vice-versa. Deixe o host e a credencial em variável de ambiente, nunca fixos no código. Assim a virada para produção é só uma troca de configuração.
Todo tráfego é obrigatoriamente HTTPS.
Primeiro teste de conectividade
Confirme que a credencial responde no ambiente certo antes de escrever qualquer código. 200 valida a credencial e a modalidade mensal; 401 indica problema na credencial; 403 indica que a organização não tem contrato mensal.
$ curl -i "https://intermittent-web-api.hml.iza.com.vc/api/integrations/monthly/insureds?page_size=1" \
-u "$USER_API_ID:$SECRET_KEY"
03Autenticação
Todos os endpoints exigem autenticação Basic. A IZA entrega, na contratação, um User API ID e uma Secret Key. O token é o Base64 dos dois separados por dois-pontos.
# credenciais recebidas da IZA
USER_API_ID=df888dae-6a05-400b-94c2-6962c09f7842
SECRET_KEY=la903yX1Hw+r27RZL5DfOCIvFq0qKvhq...
# token = base64("USER_API_ID:SECRET_KEY")
$ printf '%s:%s' "$USER_API_ID" "$SECRET_KEY" | base64
# enviado em toda requisição
Authorization: Basic ZGY4ODhkYWUtNmEwNS00MDBiLTk0YzItNjk2MmMwOWY3ODQyOmxhOTAz...
Content-Type: application/json
A credencial resolve sozinha a organização e o contrato corporativo do parceiro: não existe parâmetro de organização nos payloads, e todas as consultas enxergam apenas as vidas desse contrato. Guarde a Secret Key em cofre de senhas ou storage criptografado.
Duas barreiras
// 403
{ "errors": { "detail": "credential modality not allowed: this API is only available for monthly contracts" } }
04Endpoints
Caminhos relativos à URL base do ambiente. Todos exigem o header Authorization. O {id} das rotas de vida é sempre o contract.id devolvido na inclusão, não o person_id.
05Regras do contrato mensal
Por que a saída é no fim do mês
O contrato mensal não é cobrado de forma proporcional. Tirar a vida no meio do mês não reduz a cobrança daquele mês e deixaria a pessoa descoberta pelos dias já pagos. Por isso a inativação é sempre agendada para o fechamento.
Renovação anual
Enquanto a vida estiver ativa, o parceiro não precisa fazer nada: no vencimento, a IZA encerra o contrato da vida e cria um novo, com novo contract.id. A partir daí o mesmo CPF aparece duas vezes na listagem, uma por contrato. A renovação é recusada quando:
- o contrato corporativo do parceiro não está ativo;
- a pessoa é reprovada na validação, por exemplo idade acima de 80 anos;
- a vida está inativa há 90 dias ou mais.
Vida inativa há menos de 90 dias renova, mas o contrato novo já nasce com a vida inativa. Para voltar, basta incluí-la de novo.
Regras que valem para todos
- Uma vida por CPF: incluir de novo um CPF ativo devolve o mesmo contrato com
already_active. - Telefone nunca é sobrescrito: nome e e-mail são atualizados a cada inclusão; o telefone só é gravado na primeira vez.
- Fusos:
scheduling_date_deactiveeeffective_onestão no horário de Brasília;inactivated_one as datas do histórico estão em UTC.2026-10-31T23:59:59em Brasília e2026-11-01T02:59:59em UTC são o mesmo instante. - Síncrona ou assíncrona: use a síncrona para inclusões pontuais, quando você precisa do
contract.idna resposta. Use a assíncrona para carga em volume ou integração em lote.
Guarde por no mínimo 30 dias os logs de toda requisição que resultar em erro inesperado, com URL, payload enviado e corpo da resposta. Sem esses três campos, divergências apontadas na conciliação não têm como ser investigadas.
06Homologação
As fases são sequenciais e a homologação é concluída na conciliação. É a partir dela que a credencial de produção é liberada.
Credencial e conectividade
A IZA envia o User API ID e a Secret Key de homologação, já vinculados a um contrato corporativo mensal.
GET /insureds?page_size=1em homologação retorna 200, e não 401 ou 403.- Host e credencial estão em variável de ambiente, não no código.
Implementação da integração
Desenvolvimento no ambiente de homologação, cobrindo o ciclo completo da vida. A lista abaixo é o que a conciliação vai olhar depois.
- Inclusão de vida tratando os quatro
resultcomo sucesso. contract.idpersistido junto ao colaborador no seu sistema.- Erros 400 e 422 exibidos ou registrados por campo, a partir de
errors. - Desligamento do colaborador disparando
POST /insureds/{id}/inactivate, com a data deeffective_onregistrada. - Readmissão ou desistência tratada com nova inclusão, sem chamar rota de reativação.
- Se usar a inclusão assíncrona:
x-idempotency-keyenviado e consulta da requisição atésucceededoufailed. - Renovação anual absorvida: o
contract.iddo colaborador é atualizado quando a listagem trouxer um contrato mais recente para o mesmo CPF. - Retentativa com backoff para 5xx e timeouts.
- Log de erros com URL, payload e resposta, retido por 30 dias.
Guarde o contract.id como chave de negócio no seu lado: é ele que permite consultar, inativar e explicar qualquer divergência depois.
Carga da base e movimentações
Com a integração pronta, carregue em homologação uma amostra representativa da sua base e execute as movimentações do dia a dia: admissões, desligamentos, readmissões e desistências de desligamento.
- Carga inicial com volume representativo, não apenas alguns casos felizes.
- Ao menos um caso de cada
resultda inclusão:created,already_active,inactivation_cancelledereactivated. - Ao menos uma inativação agendada e uma repetida (
already_scheduled). - Início e fim da carga anotados e informados à IZA, com o fuso.
- Seus próprios contadores ligados: inclusões por
result, inativações agendadas e erros.
Conciliação de vidas
Encerrada a carga, comparamos os números: você extrai os totais do seu sistema e a IZA levanta os mesmos totais pela credencial usada no teste.
Você pode adiantar a conferência sem esperar a IZA, lendo o total_entries de cada situação:
GET /insureds?life_status=active&page_size=1
GET /insureds?life_status=inactivation_scheduled&page_size=1
GET /insureds?life_status=inactive&page_size=1
Para conferir CPF a CPF, pagine a listagem completa com page_size=100 e compare com a sua base.
Se os números não fecharem, não é reprovação: com os logs dos erros em mãos identificamos a causa juntos, você faz o ajuste e repete a carga.
Fechada a conciliação, a IZA emite a credencial de produção.
07Entrada em produção
Aprovada a conciliação, a IZA emite a credencial de produção.
- Novo User API ID e Secret Key de produção recebidos e guardados em cofre.
- URL base trocada para o host de produção, conforme Ambientes.
GET /insureds?page_size=1em produção retorna 200.- Carga inicial da base de produção feita, de preferência pela inclusão assíncrona.
- Primeira vida real conferida via
GET /insureds/{id}. - Monitoramento e alerta de erro ligados sobre as chamadas à IZA.
- Retenção de logs de 30 dias ativa em produção.
Nos dois primeiros fechamentos mensais, compare o total de vidas ativas da listagem com a sua base de colaboradores ativos antes do último dia do mês. É o indicador que denuncia mais cedo uma inclusão ou um desligamento que não chegou à IZA.