API das clínicas

O contrato para integrar a clínica.

Esta página é a documentação. Encaminhe o link ao time técnico da clínica. O OpenAPI importa no Postman e no Insomnia.

https://pronto.altis.online/api/v1

Baixar OpenAPI

Comece aqui

A clínica cadastra os médicos, envia os lotes de planos ou de produtos que ela mesma paga e, quando um médico pede antecipação, confirma a troca do domicílio bancário. A Altis desembolsa só depois dessa confirmação.

Autenticação

A securitizadora autentica com a chave que começa com aps_ (sandbox: aps_test_). Com ela cadastra clínicas. Para médicos, recebíveis e operações, a mesma chave envia o cabeçalho X-Clinica-Id. A chave da clínica, apt_ ou apt_test_, já vale só para aquela clínica. A chave aparece uma vez. Uma chave nova invalida a anterior. Sandbox usa o mesmo contrato, sem e-mail nem SMS.

Authorization: Bearer aps_sua_chave
X-Clinica-Id: id_da_clinica

Fluxo

  1. 01

    Cadastre a clínica

    No backoffice ou POST /api/v1/clinicas. Clínica não entra no XML de recebíveis.

  2. 02

    Cadastre o médico

    No backoffice ou POST /api/v1/medicos com CPF. Médico não entra no XML — o arquivo só referencia o CPF já cadastrado.

  3. 03

    Envie a produção

    JSON: POST /api/v1/recebiveis. XML: POST /api/v1/recebiveis/xml no padrão AltisRecebiveis versao=1. Reenviar o mesmo lote atualiza os valores.

  4. 04

    Leia as operações abertas

    GET /api/v1/cessoes?status=solicitada. O médico pediu antecipação. O e-mail da clínica avisa a mesma operação.

  5. 05

    Confirme ou recuse

    Troque o domicílio para a conta indicada em trava e chame confirmar. Se a troca não puder ser feita, chame recusar.

Convenções

Dinheiro
Reais, com decimais. 8420.5 significa R$ 8.420,50. Não envie centavos.
Datas
ISO-8601. 2026-11-15 também é aceito no vencimento.
CPF
Pode ir com máscara. A resposta devolve 11 dígitos.
Telefone
DDD com ou sem +55. A resposta devolve E.164.
Corpo
JSON com Content-Type: application/json, ou XML em POST /api/v1/recebiveis/xml com application/xml. Campos desconhecidos no JSON são ignorados.
XML de recebíveis
Raiz AltisRecebiveis versao=1. Não envia clínica nem médico: só lotes com Cpf já cadastrado. CNPJ na raiz é opcional para conferência.
Identificadores
Opacos. Guarde o id devolvido e use nos caminhos seguintes.
Paginação
Enquanto pagina.proximo não for null, repita a chamada com cursor. A ordem é do mais recente para o mais antigo.
Sincronização
Guarde o instante da última leitura e passe em atualizadoDesde para receber só o que mudou.
Reenvio
Cadastro de médico e envio de lote são upserts pela chave natural. Repetir a mesma chamada é seguro. Confirmar e recusar uma operação também são idempotentes.
Descoberta
GET /api/v1 lista os endpoints. GET /api/v1/openapi.json devolve o OpenAPI 3.1 e não pede chave.
Erro
Corpo JSON com erro e codigo. Trate pelo codigo: o texto de erro pode mudar. A lista completa está no fim.

Status

Valores possíveis de cada campo de status nas respostas.

Recebível · status

confirmado
Auditado pelo pagador. Elegível para antecipação.
pendente
Ainda em auditoria. Elegível, e o valor pode mudar no reenvio.
antecipado
Entrou numa operação. Definido pela Altis, não pode ser enviado.
pago
Liquidado pelo pagador. Definido pela Altis, não pode ser enviado.

Médico · status

pre_cadastro
Cadastrado pela clínica. Ainda não ativou o acesso por SMS.
ativo
Acesso ativo. Pode pedir antecipação.

Operação · status

solicitada
Médico assinou. Aguarda a clínica confirmar ou recusar.
confirmada
Domicílio travado. Estado de passagem até o desembolso.
desembolsada
Valor líquido pago ao médico. Estado final.
recusada
A clínica recusou. Os lotes voltaram à carteira. Estado final.

Operação · trava.status

pendente
Troca de domicílio ainda não comunicada.
email_enviado
A Altis enviou o pedido de troca por e-mail à clínica.
travado
Troca confirmada. trava.canal diz se veio pela API (webhook) ou pelo backoffice (manual).
recusado
A clínica recusou a operação.

Clínicas

POST /api/v1/clinicas

Cadastra uma clínica da securitizadora.

Exige a chave da securitizadora, não a da clínica. A clínica nasce vinculada a essa securitizadora e no mesmo ambiente: sandbox gera clínica sandbox. A resposta traz chave uma única vez, para a clínica chamar a API sem a securitizadora. Sem taxaMensal, o padrão é 0.0198. Sem taxaOriginacao e tarifa, o padrão é 0.

CampoTipoUso
nome*stringNome da clínica, ao menos 3 caracteres.
cnpj*stringCom ou sem máscara. Precisa ter dígitos verificadores válidos.
email*stringRecebe o pedido de troca de domicílio, fora do sandbox.
taxaMensalnumberFração mensal, por exemplo 0.0198. Maior que 0 e menor que 0.30.
taxaOriginacaonumberFração sobre o valor de face. Entre 0 e 0.30.
tarifanumberTarifa fixa em reais, por operação. Zero ou mais.

* obrigatório

Corpo

{
  "nome": "Clínica Cardio Leste",
  "cnpj": "00000000000191",
  "email": "financeiro@cardio.com.br",
  "taxaMensal": 0.0198,
  "taxaOriginacao": 0.015,
  "tarifa": 25
}

Resposta 201

{
  "id": "cm9clinica",
  "nome": "Clínica Cardio Leste",
  "cnpj": "00000000000191",
  "email": "financeiro@cardio.com.br",
  "sandbox": false,
  "taxaMensal": 0.0198,
  "taxaOriginacao": 0.015,
  "tarifa": 25,
  "criadoEm": "2026-09-30T18:00:00.000Z",
  "atualizadoEm": "2026-09-30T18:00:00.000Z",
  "chave": "apt_sua_chave"
}

Erros

  • 401 nao_autorizado
  • 400 json_invalido
  • 400 nome_invalido
  • 400 cnpj_invalido
  • 400 email_invalido
  • 400 preco_invalido
  • 409 cnpj_duplicado
curl -sS -X POST https://pronto.altis.online/api/v1/clinicas \
  -H "Authorization: Bearer $ALTIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"nome":"Clínica Cardio Leste","cnpj":"00000000000191","email":"financeiro@cardio.com.br","taxaMensal":0.0198,"taxaOriginacao":0.015,"tarifa":25}'

GET /api/v1/clinicas

Lista as clínicas desta securitizadora.

Só devolve clínicas vinculadas à chave. A chave da clínica não aparece de novo.

ParâmetroOndeUso
limitequeryItens por página. Padrão 50, máximo 100.
cursorqueryPasse o pagina.proximo da resposta anterior. Opaco.
atualizadoDesdequeryISO-8601. Devolve só o que mudou a partir deste instante.

Resposta 200

{
  "clinicas": [
    {
      "id": "cm9clinica",
      "nome": "Clínica Cardio Leste",
      "cnpj": "00000000000191",
      "email": "financeiro@cardio.com.br",
      "sandbox": false,
      "taxaMensal": 0.0198,
      "taxaOriginacao": 0.015,
      "tarifa": 25,
      "criadoEm": "2026-09-30T18:00:00.000Z",
      "atualizadoEm": "2026-09-30T18:00:00.000Z"
    }
  ],
  "pagina": {
    "limite": 50,
    "proximo": null
  }
}

Erros

  • 401 nao_autorizado
  • 400 limite_invalido
  • 400 data_invalida
  • 400 cursor_invalido
curl -sS -X GET https://pronto.altis.online/api/v1/clinicas \
  -H "Authorization: Bearer $ALTIS_API_KEY"

GET /api/v1/clinicas/{id}

Detalhe de uma clínica.

Um id de outra securitizadora responde 404.

ParâmetroOndeUso
idpathIdentificador opaco da clínica.

Resposta 200

{
  "id": "cm9clinica",
  "nome": "Clínica Cardio Leste",
  "cnpj": "00000000000191",
  "email": "financeiro@cardio.com.br",
  "sandbox": false,
  "taxaMensal": 0.0198,
  "taxaOriginacao": 0.015,
  "tarifa": 25,
  "criadoEm": "2026-09-30T18:00:00.000Z",
  "atualizadoEm": "2026-09-30T18:00:00.000Z"
}

Erros

  • 401 nao_autorizado
  • 404 nao_encontrado
curl -sS -X GET https://pronto.altis.online/api/v1/clinicas/ID \
  -H "Authorization: Bearer $ALTIS_API_KEY"

PATCH /api/v1/clinicas/{id}

Atualiza nome, e-mail ou preço.

Envie só o que muda. O preço vale para as próximas operações. Operações já abertas mantêm o preço contratado. Não troca o ambiente nem o CNPJ.

ParâmetroOndeUso
idpathIdentificador opaco da clínica.
CampoTipoUso
nomestringNome da clínica, ao menos 3 caracteres.
emailstringE-mail de contato.
taxaMensalnumberFração mensal, por exemplo 0.0198.
taxaOriginacaonumberFração sobre o valor de face.
tarifanumberTarifa fixa em reais.

* obrigatório

Corpo

{
  "taxaMensal": 0.021
}

Resposta 200

{
  "id": "cm9clinica",
  "nome": "Clínica Cardio Leste",
  "cnpj": "00000000000191",
  "email": "financeiro@cardio.com.br",
  "sandbox": false,
  "taxaMensal": 0.021,
  "taxaOriginacao": 0.015,
  "tarifa": 25,
  "criadoEm": "2026-09-30T18:00:00.000Z",
  "atualizadoEm": "2026-09-30T18:10:00.000Z"
}

Erros

  • 401 nao_autorizado
  • 400 json_invalido
  • 400 preco_invalido
  • 404 nao_encontrado
curl -sS -X PATCH https://pronto.altis.online/api/v1/clinicas/ID \
  -H "Authorization: Bearer $ALTIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"taxaMensal":0.021}'

Planos

GET /api/v1/convenios

Catálogo de planos aceitos.

Use o campo codigo em convenio ao enviar um recebível de plano. A clínica não cadastra plano novo por esta API. Produto pago pela própria clínica, como uma consulta, não entra neste catálogo: envie o código no recebível.

Resposta 200

{
  "convenios": [
    {
      "codigo": "unimed",
      "nome": "Unimed",
      "sigla": "UN",
      "prazoMedioPagamentoDias": 45
    },
    {
      "codigo": "amil",
      "nome": "Amil",
      "sigla": "AM",
      "prazoMedioPagamentoDias": 60
    }
  ]
}

Erros

  • 401 nao_autorizado
curl -sS -X GET https://pronto.altis.online/api/v1/convenios \
  -H "Authorization: Bearer $ALTIS_API_KEY"

Médicos

POST /api/v1/medicos

Cadastra ou atualiza um médico.

A chave é o CPF dentro da clínica. O primeiro envio responde 201. O mesmo CPF enviado de novo responde 200 e atualiza nome, telefone e só os campos opcionais presentes no corpo: um campo omitido mantém o valor gravado. Sem chavePix no primeiro envio, a chave Pix passa a ser o CPF. O médico completa o acesso no aplicativo com o código SMS. Enquanto o status for pre_cadastro ele ainda não antecipa.

CampoTipoUso
cpf*stringCom ou sem máscara. Precisa ter dígitos verificadores válidos.
nome*stringNome completo, ao menos 3 caracteres.
telefone*stringCelular com DDD, com ou sem +55. Recebe o SMS de ativação.
emailstringE-mail do médico.
crmstringNúmero e UF, por exemplo 123456-SP. Vai para o contrato de cessão.
especialidadestringTexto livre.
limitenumberLimite total de antecipação em reais. Padrão 0 no cadastro; com 0 o médico não antecipa.
bancostringNome do banco da conta do médico.
codigoBancostringCódigo COMPE, por exemplo 341.
agenciastringAgência, sem dígito.
contastringConta com dígito.
tipoChavePixstringCPF, E-mail, Telefone ou Aleatória. Padrão CPF.
chavePixstringChave que recebe o desembolso. Padrão: o CPF.

* obrigatório

Corpo

{
  "cpf": "529.982.247-25",
  "nome": "Ana Lima",
  "telefone": "11999998888",
  "email": "ana.lima@clinica.com.br",
  "crm": "123456-SP",
  "especialidade": "Cardiologia",
  "limite": 50000,
  "banco": "Itaú",
  "codigoBanco": "341",
  "agencia": "1234",
  "conta": "56789-0",
  "tipoChavePix": "CPF",
  "chavePix": "52998224725"
}

Resposta 201

{
  "id": "cm9medicoana",
  "cpf": "52998224725",
  "nome": "Ana Lima",
  "telefone": "+5511999998888",
  "email": "ana.lima@clinica.com.br",
  "crm": "123456-SP",
  "especialidade": "Cardiologia",
  "status": "pre_cadastro",
  "cadastroCompletoEm": null,
  "limite": 50000,
  "limiteUsado": 0,
  "conta": {
    "banco": "Itaú",
    "codigoBanco": "341",
    "agencia": "1234",
    "conta": "56789-0",
    "tipoChavePix": "CPF",
    "chavePix": "52998224725"
  },
  "criadoEm": "2026-09-22T18:04:00.000Z",
  "atualizadoEm": "2026-09-22T18:04:00.000Z"
}

Erros

  • 401 nao_autorizado
  • 400 json_invalido
  • 400 cpf_invalido
  • 400 telefone_invalido
  • 400 nome_invalido
  • 400 limite_invalido
curl -sS -X POST https://pronto.altis.online/api/v1/medicos \
  -H "Authorization: Bearer $ALTIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cpf":"529.982.247-25","nome":"Ana Lima","telefone":"11999998888","email":"ana.lima@clinica.com.br","crm":"123456-SP","especialidade":"Cardiologia","limite":50000,"banco":"Itaú","codigoBanco":"341","agencia":"1234","conta":"56789-0","tipoChavePix":"CPF","chavePix":"52998224725"}'

GET /api/v1/medicos

Lista os médicos da clínica.

Filtre por CPF para buscar um médico sem guardar o id. limiteUsado soma as operações que não foram recusadas.

ParâmetroOndeUso
limitequeryItens por página. Padrão 50, máximo 100.
cursorqueryPasse o pagina.proximo da resposta anterior. Opaco.
atualizadoDesdequeryISO-8601. Devolve só o que mudou a partir deste instante.
cpfqueryCPF com ou sem máscara.
statusquerypre_cadastro ou ativo.

Resposta 200

{
  "medicos": [
    {
      "id": "cm9medicoana",
      "cpf": "52998224725",
      "nome": "Ana Lima",
      "telefone": "+5511999998888",
      "email": "ana.lima@clinica.com.br",
      "crm": "123456-SP",
      "especialidade": "Cardiologia",
      "status": "pre_cadastro",
      "cadastroCompletoEm": null,
      "limite": 50000,
      "limiteUsado": 0,
      "conta": {
        "banco": "Itaú",
        "codigoBanco": "341",
        "agencia": "1234",
        "conta": "56789-0",
        "tipoChavePix": "CPF",
        "chavePix": "52998224725"
      },
      "criadoEm": "2026-09-22T18:04:00.000Z",
      "atualizadoEm": "2026-09-22T18:04:00.000Z"
    }
  ],
  "pagina": {
    "limite": 50,
    "proximo": null
  }
}

Erros

  • 401 nao_autorizado
  • 400 limite_invalido
  • 400 data_invalida
  • 400 cursor_invalido
  • 400 cpf_invalido
  • 400 status_invalido
curl -sS -X GET https://pronto.altis.online/api/v1/medicos \
  -H "Authorization: Bearer $ALTIS_API_KEY"

GET /api/v1/medicos/{id}

Detalhe de um médico.

O id vem da resposta do cadastro. Um id de outra clínica responde 404.

ParâmetroOndeUso
idpathIdentificador opaco do médico.

Resposta 200

{
  "id": "cm9medicoana",
  "cpf": "52998224725",
  "nome": "Ana Lima",
  "telefone": "+5511999998888",
  "email": "ana.lima@clinica.com.br",
  "crm": "123456-SP",
  "especialidade": "Cardiologia",
  "status": "pre_cadastro",
  "cadastroCompletoEm": null,
  "limite": 50000,
  "limiteUsado": 0,
  "conta": {
    "banco": "Itaú",
    "codigoBanco": "341",
    "agencia": "1234",
    "conta": "56789-0",
    "tipoChavePix": "CPF",
    "chavePix": "52998224725"
  },
  "criadoEm": "2026-09-22T18:04:00.000Z",
  "atualizadoEm": "2026-09-22T18:04:00.000Z"
}

Erros

  • 401 nao_autorizado
  • 404 nao_encontrado
curl -sS -X GET https://pronto.altis.online/api/v1/medicos/ID \
  -H "Authorization: Bearer $ALTIS_API_KEY"

Recebíveis

POST /api/v1/recebiveis

Envia um lote ou uma lista de lotes.

Aceita um objeto ou uma lista de até 500 objetos. A chave do lote é clínica + médico + lote + competência. Reenviar atualiza valores. Se o corpo incluir procedimentos, a lista anterior desse lote é substituída; sem procedimentos, a lista gravada fica como está. O envio é atômico: ou todos os itens entram, ou nenhum. Numa lista, a mensagem de erro começa com Item N para indicar qual item falhou. Responde 201 quando todos os itens são novos e 200 quando ao menos um já existia; cada item traz criado true ou false. Um lote já vinculado a uma operação responde 409. Valores em reais. Status aceitos no envio: confirmado e pendente, ambos elegíveis para antecipação. antecipado e pago são definidos pela Altis. Cada lote tem uma origem. Para um plano, envie convenio com o código do catálogo. Para um produto pago pela clínica, envie produto e, se quiser, produtoNome — por exemplo produto consulta e produtoNome Consulta. origem pode ser plano ou produto; se omitida, a Altis infere pelo campo enviado. Informe um dos dois, não os dois.

CampoTipoUso
cpf*stringCPF de um médico já cadastrado nesta clínica.
origemstringSe omitida, vem de convenio ou produto.plano · produto
conveniostringCódigo do catálogo de planos. Obrigatório quando a origem é plano.
produtostringCódigo do produto: letras, números e hífen. Obrigatório quando a origem é produto.
produtoNomestringNome exibido ao médico. Padrão: derivado do código.
lote*stringCódigo do lote na clínica.
competencia*stringMês de referência no formato AAAA-MM.
vencimento*stringData prevista de pagamento pelo pagador. AAAA-MM-DD ou ISO-8601.
valorBruto*numberValor faturado do lote em reais. Maior que zero. O líquido do lote é igual ao bruto.
statusstringPadrão confirmado.confirmado · pendente
procedimentosarrayComposição do lote. Substitui a lista anterior quando enviada.
procedimentos[].descricaostringPadrão Procedimento.
procedimentos[].codigoTussstringCódigo TUSS.
procedimentos[].datastringData do atendimento. Padrão: o vencimento do lote.
procedimentos[].quantidadeintegerInteiro maior que zero. Padrão 1.
procedimentos[].valorUnitarionumberEm reais. Padrão 0.

* obrigatório

Corpo

{
  "cpf": "52998224725",
  "origem": "plano",
  "convenio": "unimed",
  "lote": "UN-2026-09-014",
  "competencia": "2026-09",
  "vencimento": "2026-11-15",
  "valorBruto": 8420.5,
  "status": "confirmado",
  "procedimentos": [
    {
      "descricao": "Consulta em consultório",
      "codigoTuss": "10101012",
      "data": "2026-09-03",
      "quantidade": 1,
      "valorUnitario": 8420.5
    }
  ]
}

Resposta 201

{
  "recebiveis": [
    {
      "id": "cm9receb014",
      "medicoId": "cm9medicoana",
      "cpf": "52998224725",
      "nome": "Ana Lima",
      "lote": "UN-2026-09-014",
      "competencia": "2026-09",
      "origem": "plano",
      "pagador": "Unimed",
      "convenio": "unimed",
      "convenioNome": "Unimed",
      "produto": null,
      "produtoNome": null,
      "vencimento": "2026-11-15T00:00:00.000Z",
      "valorBruto": 8420.5,
      "valorLiquido": 8420.5,
      "status": "confirmado",
      "elegivel": true,
      "motivoInelegivel": null,
      "cessaoId": null,
      "criadoEm": "2026-09-22T18:10:00.000Z",
      "atualizadoEm": "2026-09-22T18:10:00.000Z",
      "procedimentos": [
        {
          "id": "cm9proc014",
          "descricao": "Consulta em consultório",
          "codigoTuss": "10101012",
          "data": "2026-09-03T00:00:00.000Z",
          "quantidade": 1,
          "valorUnitario": 8420.5
        }
      ],
      "criado": true
    }
  ]
}

Erros

  • 401 nao_autorizado
  • 400 json_invalido
  • 400 vazio
  • 400 muitos_itens
  • 400 cpf_invalido
  • 404 medico_nao_encontrado
  • 400 origem_invalida
  • 400 convenio_invalido
  • 400 produto_invalido
  • 400 lote_invalido
  • 400 valor_invalido
  • 400 procedimento_invalido
  • 400 status_invalido
  • 409 lote_vinculado
curl -sS -X POST https://pronto.altis.online/api/v1/recebiveis \
  -H "Authorization: Bearer $ALTIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cpf":"52998224725","origem":"plano","convenio":"unimed","lote":"UN-2026-09-014","competencia":"2026-09","vencimento":"2026-11-15","valorBruto":8420.5,"status":"confirmado","procedimentos":[{"descricao":"Consulta em consultório","codigoTuss":"10101012","data":"2026-09-03","quantidade":1,"valorUnitario":8420.5}]}'

POST /api/v1/recebiveis/xml

Importa lotes no padrão XML v1.

Use quando a clínica exporta produção em arquivo. Clínica e médicos não vão no XML: cadastre-os antes no backoffice ou pela API. A clínica autenticada pela chave é o destino. Cada Recebivel aponta o médico pelo Cpf já cadastrado. Atributo cnpj na raiz é opcional e, se vier, precisa bater com o CNPJ da clínica. Mesmas regras do envio JSON: chave lote+competência, upsert, até 500 itens, atômico. Content-Type: application/xml ou text/xml. Valores aceitam ponto (8420.50) ou vírgula (8420,50).

CampoTipoUso
AltisRecebiveis@versao*stringSempre "1".
AltisRecebiveis@cnpjstringConferência opcional com a clínica autenticada.
Recebivel.Cpf*stringCPF de médico já cadastrado nesta clínica.
Recebivel.Origemstringplano ou produto. Se omitida, infere por Convenio ou Produto.plano · produto
Recebivel.ConveniostringCódigo do plano. Exclusivo com Produto.
Recebivel.ProdutostringCódigo do produto pago pela clínica. Exclusivo com Convenio.
Recebivel.ProdutoNomestringNome exibido. Padrão derivado do código.
Recebivel.Lote*stringCódigo do lote na clínica.
Recebivel.Competencia*stringAAAA-MM.
Recebivel.Vencimento*stringAAAA-MM-DD ou ISO-8601.
Recebivel.ValorBruto*numberEm reais. Ponto ou vírgula decimal.
Recebivel.StatusstringPadrão confirmado.confirmado · pendente
Procedimento.DescricaostringPadrão Procedimento.
Procedimento.CodigoTussstringCódigo TUSS.
Procedimento.DatastringData do atendimento.
Procedimento.QuantidadeintegerPadrão 1.
Procedimento.ValorUnitarionumberEm reais.

* obrigatório

Corpo

<?xml version="1.0" encoding="UTF-8"?>
<AltisRecebiveis versao="1" cnpj="45567890000156">
  <Recebivel>
    <Cpf>52998224725</Cpf>
    <Origem>plano</Origem>
    <Convenio>unimed</Convenio>
    <Lote>UN-2026-09-014</Lote>
    <Competencia>2026-09</Competencia>
    <Vencimento>2026-11-15</Vencimento>
    <ValorBruto>8420.50</ValorBruto>
    <Status>confirmado</Status>
    <Procedimentos>
      <Procedimento>
        <Descricao>Consulta em consultório</Descricao>
        <CodigoTuss>10101012</CodigoTuss>
        <Data>2026-09-03</Data>
        <Quantidade>1</Quantidade>
        <ValorUnitario>8420.50</ValorUnitario>
      </Procedimento>
    </Procedimentos>
  </Recebivel>
</AltisRecebiveis>

Resposta 201

{
  "recebiveis": [
    {
      "id": "cm9receb014",
      "medicoId": "cm9medicoana",
      "cpf": "52998224725",
      "nome": "Ana Lima",
      "lote": "UN-2026-09-014",
      "competencia": "2026-09",
      "origem": "plano",
      "pagador": "Unimed",
      "convenio": "unimed",
      "convenioNome": "Unimed",
      "produto": null,
      "produtoNome": null,
      "vencimento": "2026-11-15T00:00:00.000Z",
      "valorBruto": 8420.5,
      "valorLiquido": 8420.5,
      "status": "confirmado",
      "elegivel": true,
      "motivoInelegivel": null,
      "cessaoId": null,
      "criadoEm": "2026-09-22T18:10:00.000Z",
      "atualizadoEm": "2026-09-22T18:10:00.000Z",
      "procedimentos": [
        {
          "id": "cm9proc014",
          "descricao": "Consulta em consultório",
          "codigoTuss": "10101012",
          "data": "2026-09-03T00:00:00.000Z",
          "quantidade": 1,
          "valorUnitario": 8420.5
        }
      ],
      "criado": true
    }
  ]
}

Erros

  • 401 nao_autorizado
  • 400 xml_invalido
  • 400 vazio
  • 400 muitos_itens
  • 400 cnpj_invalido
  • 400 cpf_invalido
  • 404 medico_nao_encontrado
  • 400 origem_invalida
  • 400 convenio_invalido
  • 400 produto_invalido
  • 400 lote_invalido
  • 400 valor_invalido
  • 400 procedimento_invalido
  • 400 status_invalido
  • 409 lote_vinculado
curl -sS -X POST https://pronto.altis.online/api/v1/recebiveis/xml \
  -H "Authorization: Bearer $ALTIS_API_KEY" \
  -H "Content-Type: application/xml" \
  --data-binary @recebiveis.xml

GET /api/v1/recebiveis

Lista os lotes já recebidos.

A listagem não traz os procedimentos. Use o detalhe para a composição do lote. cessaoId preenchido significa que o lote já foi antecipado.

ParâmetroOndeUso
limitequeryItens por página. Padrão 50, máximo 100.
cursorqueryPasse o pagina.proximo da resposta anterior. Opaco.
atualizadoDesdequeryISO-8601. Devolve só o que mudou a partir deste instante.
cpfqueryCPF do médico.
statusqueryconfirmado, pendente, antecipado ou pago.
lotequeryCódigo exato do lote.
competenciaqueryCompetência gravada, por exemplo 2026-09.
origemqueryplano ou produto.

Resposta 200

{
  "recebiveis": [
    {
      "id": "cm9receb014",
      "medicoId": "cm9medicoana",
      "cpf": "52998224725",
      "nome": "Ana Lima",
      "lote": "UN-2026-09-014",
      "competencia": "2026-09",
      "origem": "plano",
      "pagador": "Unimed",
      "convenio": "unimed",
      "convenioNome": "Unimed",
      "produto": null,
      "produtoNome": null,
      "vencimento": "2026-11-15T00:00:00.000Z",
      "valorBruto": 8420.5,
      "valorLiquido": 8420.5,
      "status": "confirmado",
      "elegivel": true,
      "motivoInelegivel": null,
      "cessaoId": null,
      "criadoEm": "2026-09-22T18:10:00.000Z",
      "atualizadoEm": "2026-09-22T18:10:00.000Z"
    }
  ],
  "pagina": {
    "limite": 50,
    "proximo": null
  }
}

Erros

  • 401 nao_autorizado
  • 400 limite_invalido
  • 400 data_invalida
  • 400 cursor_invalido
  • 400 cpf_invalido
  • 400 status_invalido
  • 400 origem_invalida
curl -sS -X GET https://pronto.altis.online/api/v1/recebiveis \
  -H "Authorization: Bearer $ALTIS_API_KEY"

GET /api/v1/recebiveis/{id}

Detalhe de um lote, com procedimentos.

Devolve a composição enviada pela clínica.

ParâmetroOndeUso
idpathIdentificador opaco do recebível.

Resposta 200

{
  "id": "cm9receb014",
  "medicoId": "cm9medicoana",
  "cpf": "52998224725",
  "nome": "Ana Lima",
  "lote": "UN-2026-09-014",
  "competencia": "2026-09",
  "origem": "plano",
  "pagador": "Unimed",
  "convenio": "unimed",
  "convenioNome": "Unimed",
  "produto": null,
  "produtoNome": null,
  "vencimento": "2026-11-15T00:00:00.000Z",
  "valorBruto": 8420.5,
  "valorLiquido": 8420.5,
  "status": "confirmado",
  "elegivel": true,
  "motivoInelegivel": null,
  "cessaoId": null,
  "criadoEm": "2026-09-22T18:10:00.000Z",
  "atualizadoEm": "2026-09-22T18:10:00.000Z",
  "procedimentos": [
    {
      "id": "cm9proc014",
      "descricao": "Consulta em consultório",
      "codigoTuss": "10101012",
      "data": "2026-09-03T00:00:00.000Z",
      "quantidade": 1,
      "valorUnitario": 8420.5
    }
  ]
}

Erros

  • 401 nao_autorizado
  • 404 nao_encontrado
curl -sS -X GET https://pronto.altis.online/api/v1/recebiveis/ID \
  -H "Authorization: Bearer $ALTIS_API_KEY"

DELETE /api/v1/recebiveis/{id}

Remove um lote enviado por engano.

Responde 204 sem corpo. Se o lote já entrou numa operação, responde 409 e o registro permanece.

ParâmetroOndeUso
idpathIdentificador opaco do recebível.

Resposta 204, sem corpo.

Erros

  • 401 nao_autorizado
  • 404 nao_encontrado
  • 409 lote_vinculado
curl -sS -X DELETE https://pronto.altis.online/api/v1/recebiveis/ID \
  -H "Authorization: Bearer $ALTIS_API_KEY"

Operações

GET /api/v1/cessoes

Lista as antecipações pedidas pelos médicos.

Consulte status=solicitada para achar o que ainda precisa de troca de domicílio. A Altis também avisa por e-mail. A clínica confirma ou recusa por esta API. status possíveis: solicitada, confirmada, desembolsada, recusada.

ParâmetroOndeUso
limitequeryItens por página. Padrão 50, máximo 100.
cursorqueryPasse o pagina.proximo da resposta anterior. Opaco.
atualizadoDesdequeryISO-8601. Devolve só o que mudou a partir deste instante.
statusquerysolicitada, confirmada, desembolsada ou recusada.
cpfqueryCPF do médico.

Resposta 200

{
  "cessoes": [
    {
      "id": "cm9cessao918",
      "numeroContrato": "ANT 2026.5918",
      "status": "solicitada",
      "medico": {
        "id": "cm9medicoana",
        "cpf": "52998224725",
        "nome": "Ana Lima"
      },
      "valorBruto": 8420.5,
      "desconto": 312.4,
      "tarifa": 148.61,
      "tarifaFixa": 25,
      "taxaOriginacao": 0.015,
      "valorLiquido": 7959.49,
      "taxaMensal": 0.0198,
      "cetAnual": 0.265,
      "prazoMedioDias": 54,
      "chavePix": "52998224725",
      "contrato": "INSTRUMENTO PARTICULAR DE CESSÃO DE CRÉDITOS E OUTRAS AVENÇAS\nInstrumento nº ANT 2026.5918...",
      "criadaEm": "2026-09-22T19:02:00.000Z",
      "confirmadaEm": null,
      "desembolsadaEm": null,
      "lotes": [
        {
          "id": "cm9receb014",
          "lote": "UN-2026-09-014",
          "competencia": "2026-09",
          "origem": "plano",
          "pagador": "Unimed",
          "convenio": "unimed",
          "produto": null,
          "produtoNome": null,
          "valorLiquido": 8420.5
        }
      ],
      "trava": {
        "status": "email_enviado",
        "canal": null,
        "protocolo": null,
        "autorizadoPor": null,
        "crm": null,
        "autorizadoEm": null,
        "bancoDestino": "Banco da Altis",
        "agenciaDestino": "0001",
        "contaDestino": "12345-6",
        "pixDestino": "00.000.000/0001-00"
      },
      "eventos": [
        {
          "status": "solicitada",
          "titulo": "Solicitação recebida",
          "descricao": "Contrato assinado. Aguardando a clínica confirmar a troca de domicílio bancário.",
          "em": "2026-09-22T19:02:00.000Z"
        }
      ]
    }
  ],
  "pagina": {
    "limite": 50,
    "proximo": null
  }
}

Erros

  • 401 nao_autorizado
  • 400 limite_invalido
  • 400 data_invalida
  • 400 cursor_invalido
  • 400 cpf_invalido
  • 400 status_invalido
curl -sS -X GET https://pronto.altis.online/api/v1/cessoes \
  -H "Authorization: Bearer $ALTIS_API_KEY"

GET /api/v1/cessoes/{id}

Detalhe da operação, dos lotes e da trava de domicílio.

trava.bancoDestino, agenciaDestino, contaDestino e pixDestino são a conta para a qual a produção deve passar a ser paga. tarifa é o total da originação nesta operação. tarifaFixa e taxaOriginacao são o preço da clínica no momento da assinatura: a parte fixa em reais e o percentual do valor de face. contrato é o termo assinado.

ParâmetroOndeUso
idpathIdentificador opaco da operação.

Resposta 200

{
  "id": "cm9cessao918",
  "numeroContrato": "ANT 2026.5918",
  "status": "solicitada",
  "medico": {
    "id": "cm9medicoana",
    "cpf": "52998224725",
    "nome": "Ana Lima"
  },
  "valorBruto": 8420.5,
  "desconto": 312.4,
  "tarifa": 148.61,
  "tarifaFixa": 25,
  "taxaOriginacao": 0.015,
  "valorLiquido": 7959.49,
  "taxaMensal": 0.0198,
  "cetAnual": 0.265,
  "prazoMedioDias": 54,
  "chavePix": "52998224725",
  "contrato": "INSTRUMENTO PARTICULAR DE CESSÃO DE CRÉDITOS E OUTRAS AVENÇAS\nInstrumento nº ANT 2026.5918...",
  "criadaEm": "2026-09-22T19:02:00.000Z",
  "confirmadaEm": null,
  "desembolsadaEm": null,
  "lotes": [
    {
      "id": "cm9receb014",
      "lote": "UN-2026-09-014",
      "competencia": "2026-09",
      "origem": "plano",
      "pagador": "Unimed",
      "convenio": "unimed",
      "produto": null,
      "produtoNome": null,
      "valorLiquido": 8420.5
    }
  ],
  "trava": {
    "status": "email_enviado",
    "canal": null,
    "protocolo": null,
    "autorizadoPor": null,
    "crm": null,
    "autorizadoEm": null,
    "bancoDestino": "Banco da Altis",
    "agenciaDestino": "0001",
    "contaDestino": "12345-6",
    "pixDestino": "00.000.000/0001-00"
  },
  "eventos": [
    {
      "status": "solicitada",
      "titulo": "Solicitação recebida",
      "descricao": "Contrato assinado. Aguardando a clínica confirmar a troca de domicílio bancário.",
      "em": "2026-09-22T19:02:00.000Z"
    }
  ]
}

Erros

  • 401 nao_autorizado
  • 404 nao_encontrado
curl -sS -X GET https://pronto.altis.online/api/v1/cessoes/ID \
  -H "Authorization: Bearer $ALTIS_API_KEY"

POST /api/v1/cessoes/{id}/confirmar

Confirma a troca de domicílio e registra o desembolso.

Chame depois de alterar o domicílio bancário da produção para a conta da Altis. Uma segunda chamada da mesma operação já desembolsada devolve o mesmo registro e não paga de novo. Protocolo, nome de quem autorizou e CRM são obrigatórios.

ParâmetroOndeUso
idpathIdentificador opaco da operação.
CampoTipoUso
protocolo*stringProtocolo da troca de domicílio no banco ou no pagador.
autorizadoPor*stringNome de quem autorizou a troca na clínica.
crm*stringCRM de quem autorizou.

* obrigatório

Corpo

{
  "protocolo": "DOM-2026-00421",
  "autorizadoPor": "Carlos Mendes",
  "crm": "654321-SP"
}

Resposta 200

{
  "id": "cm9cessao918",
  "numeroContrato": "ANT 2026.5918",
  "status": "desembolsada",
  "medico": {
    "id": "cm9medicoana",
    "cpf": "52998224725",
    "nome": "Ana Lima"
  },
  "valorBruto": 8420.5,
  "desconto": 312.4,
  "tarifa": 148.61,
  "tarifaFixa": 25,
  "taxaOriginacao": 0.015,
  "valorLiquido": 7959.49,
  "taxaMensal": 0.0198,
  "cetAnual": 0.265,
  "prazoMedioDias": 54,
  "chavePix": "52998224725",
  "contrato": "INSTRUMENTO PARTICULAR DE CESSÃO DE CRÉDITOS E OUTRAS AVENÇAS\nInstrumento nº ANT 2026.5918...",
  "criadaEm": "2026-09-22T19:02:00.000Z",
  "confirmadaEm": "2026-09-22T20:15:00.000Z",
  "desembolsadaEm": "2026-09-22T20:15:00.000Z",
  "lotes": [
    {
      "id": "cm9receb014",
      "lote": "UN-2026-09-014",
      "competencia": "2026-09",
      "origem": "plano",
      "pagador": "Unimed",
      "convenio": "unimed",
      "produto": null,
      "produtoNome": null,
      "valorLiquido": 8420.5
    }
  ],
  "trava": {
    "status": "email_enviado",
    "canal": null,
    "protocolo": null,
    "autorizadoPor": null,
    "crm": null,
    "autorizadoEm": null,
    "bancoDestino": "Banco da Altis",
    "agenciaDestino": "0001",
    "contaDestino": "12345-6",
    "pixDestino": "00.000.000/0001-00"
  },
  "eventos": [
    {
      "status": "solicitada",
      "titulo": "Solicitação recebida",
      "descricao": "Contrato assinado. Aguardando a clínica confirmar a troca de domicílio bancário.",
      "em": "2026-09-22T19:02:00.000Z"
    }
  ]
}

Erros

  • 401 nao_autorizado
  • 400 json_invalido
  • 400 autorizacao_incompleta
  • 404 nao_encontrado
  • 409 status_invalido
curl -sS -X POST https://pronto.altis.online/api/v1/cessoes/ID/confirmar \
  -H "Authorization: Bearer $ALTIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"protocolo":"DOM-2026-00421","autorizadoPor":"Carlos Mendes","crm":"654321-SP"}'

POST /api/v1/cessoes/{id}/recusar

Recusa a operação e devolve os lotes à carteira.

Use quando o médico não autorizar a troca de domicílio. Os lotes voltam a confirmado e elegível. Uma operação já desembolsada não pode ser recusada. Repetir a recusa devolve o mesmo registro.

ParâmetroOndeUso
idpathIdentificador opaco da operação.
CampoTipoUso
motivo*stringAo menos 3 caracteres. Vira o evento da operação.

* obrigatório

Corpo

{
  "motivo": "Médico não autorizou a troca de domicílio."
}

Resposta 200

{
  "id": "cm9cessao918",
  "numeroContrato": "ANT 2026.5918",
  "status": "recusada",
  "medico": {
    "id": "cm9medicoana",
    "cpf": "52998224725",
    "nome": "Ana Lima"
  },
  "valorBruto": 8420.5,
  "desconto": 312.4,
  "tarifa": 148.61,
  "tarifaFixa": 25,
  "taxaOriginacao": 0.015,
  "valorLiquido": 7959.49,
  "taxaMensal": 0.0198,
  "cetAnual": 0.265,
  "prazoMedioDias": 54,
  "chavePix": "52998224725",
  "contrato": "INSTRUMENTO PARTICULAR DE CESSÃO DE CRÉDITOS E OUTRAS AVENÇAS\nInstrumento nº ANT 2026.5918...",
  "criadaEm": "2026-09-22T19:02:00.000Z",
  "confirmadaEm": null,
  "desembolsadaEm": null,
  "lotes": [
    {
      "id": "cm9receb014",
      "lote": "UN-2026-09-014",
      "competencia": "2026-09",
      "origem": "plano",
      "pagador": "Unimed",
      "convenio": "unimed",
      "produto": null,
      "produtoNome": null,
      "valorLiquido": 8420.5
    }
  ],
  "trava": {
    "status": "email_enviado",
    "canal": null,
    "protocolo": null,
    "autorizadoPor": null,
    "crm": null,
    "autorizadoEm": null,
    "bancoDestino": "Banco da Altis",
    "agenciaDestino": "0001",
    "contaDestino": "12345-6",
    "pixDestino": "00.000.000/0001-00"
  },
  "eventos": [
    {
      "status": "solicitada",
      "titulo": "Solicitação recebida",
      "descricao": "Contrato assinado. Aguardando a clínica confirmar a troca de domicílio bancário.",
      "em": "2026-09-22T19:02:00.000Z"
    }
  ]
}

Erros

  • 401 nao_autorizado
  • 400 json_invalido
  • 400 motivo_invalido
  • 404 nao_encontrado
  • 409 status_invalido
curl -sS -X POST https://pronto.altis.online/api/v1/cessoes/ID/recusar \
  -H "Authorization: Bearer $ALTIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"motivo":"Médico não autorizou a troca de domicílio."}'

Erros

Falha de negócio responde com JSON. Não há página HTML no erro.

{
  "erro": "Chave de API inválida.",
  "codigo": "nao_autorizado"
}
StatusCódigoQuando
400cpf_invalidoCPF ausente ou com dígitos verificadores inválidos.
400telefone_invalidoTelefone ausente ou fora do formato brasileiro.
400nome_invalidoNome com menos de 3 caracteres.
400limite_invalidoLimite negativo ou parâmetro limite da listagem inválido.
400convenio_invalidoCódigo de plano fora do catálogo.
400produto_invalidoCódigo de produto ausente ou fora do formato (letras, números e hífen).
400origem_invalidaFaltou a origem, vieram plano e produto juntos, ou origem fora de plano e produto.
400lote_invalidoLote, competência ou vencimento ausente.
400valor_invalidoValor bruto ausente, zero, negativo ou não numérico.
400procedimento_invalidoprocedimentos não é lista, ou um item tem quantidade ou valor unitário inválidos.
400status_invalidoStatus fora da lista aceita naquele recurso. No envio de recebível, só confirmado ou pendente.
400data_invalidaatualizadoDesde não é uma data ISO-8601.
400cursor_invalidoO cursor de paginação não existe.
400json_invalidoCorpo ausente, JSON malformado ou com formato diferente do esperado.
400xml_invalidoCorpo XML ausente, raiz diferente de AltisRecebiveis, ou versão diferente de 1.
400vazioA lista de recebíveis veio vazia.
400muitos_itensMais de 500 recebíveis numa só chamada.
400autorizacao_incompletaConfirmação sem protocolo, autorizador ou CRM.
400motivo_invalidoRecusa sem um motivo.
400cnpj_invalidoCNPJ ausente, inválido ou diferente da clínica autenticada (atributo cnpj no XML).
400email_invalidoE-mail de contato da clínica ausente ou sem @.
400preco_invalidoTaxa mensal, originação ou tarifa fora do intervalo. Taxa mensal em fração, por exemplo 0.0198.
400clinica_obrigatoriaA chave é da securitizadora e faltou o cabeçalho X-Clinica-Id.
401nao_autorizadoChave ausente ou inválida.
404nao_encontradoO id não existe nesta clínica.
404medico_nao_encontradoO CPF ainda não foi cadastrado nesta clínica.
409cnpj_duplicadoJá existe clínica ou securitizadora com este CNPJ neste ambiente.
409lote_vinculadoO lote já entrou numa operação e não pode ser alterado nem apagado.
409status_invalidoA operação já foi desembolsada ou recusada e a ação não cabe mais.
500erro_internoFalha inesperada. O corpo traz codigo erro_interno.
API das clínicas — Altis Pronto